-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHeartRateFragment.cs
59 lines (45 loc) · 1.64 KB
/
HeartRateFragment.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
namespace bandview
{
using Android.Widget;
using Android.Graphics;
using Com.Lilarcor.Cheeseknife;
using Microsoft.Band.Sensors;
using Android.Views.Animations;
public class HeartRateFragment : SensingFragmentBase<IBandHeartRateReading>
{
[InjectView(Resource.Id.command)]
TextView _command;
[InjectView(Resource.Id.heart)]
TextView _heartSym;
[InjectView(Resource.Id.beats)]
TextView _beats;
private const int DEFAULT_DURATION = 800;
private const int BASELINE_BEAT = 60;
private readonly Color LOCKED_COLOR = Color.Red;
private readonly Color UNLOCKED_COLOR = Color.SlateGray;
private Animation _animation;
private double _durationScaler = 1.0f;
protected override int LayoutId { get; } = Resource.Layout.HeartRate;
public override void OnResume()
{
base.OnResume();
_heartSym.Text = "♥";
_heartSym.SetTextColor(UNLOCKED_COLOR);
_animation = AnimationUtils.LoadAnimation(Activity, Resource.Animation.heartbeat_anim);
_animation.Duration = DEFAULT_DURATION;
_heartSym.StartAnimation(_animation);
_animation.AnimationEnd += (sender, e) =>
{
_animation.Duration = (long) (_durationScaler * DEFAULT_DURATION);
_heartSym.StartAnimation(_animation);
};
}
protected override void OnSensorData(IBandHeartRateReading data)
{
_beats.Text = data.HeartRate.ToString();
_heartSym.SetTextColor(data.Quality == HeartRateQuality.Locked ? LOCKED_COLOR : UNLOCKED_COLOR);
_command.SetText(data.Quality == HeartRateQuality.Locked ? Resource.String.command_heartrate_locked : Resource.String.command_heartrate_acquiring);
_durationScaler = (double) BASELINE_BEAT / data.HeartRate;
}
}
}