我已使用以下代码成功从心率传感器和心率质量传感器获取数据: -
IEnumerable<TimeSpan> supportedHeartBeatReportingIntervals = bandClient.SensorManager.HeartRate.SupportedReportingIntervals;
bandClient.SensorManager.HeartRate.ReportingInterval = supportedHeartBeatReportingIntervals.First<TimeSpan>();
..... [other not relevant code excluded]
bandClient.SensorManager.HeartRate.ReadingChanged += (s, args) => { hrdt = args.SensorReading.HeartRate; };
{
await bandClient.SensorManager.HeartRate.StartReadingsAsync();
await Task.Delay(TimeSpan.FromSeconds(5));
await bandClient.SensorManager.HeartRate.StopReadingsAsync();
dsphr = hrdt.ToString();
}
bandClient.SensorManager.HeartRate.ReadingChanged += (s, args) => qltyhr = string.Format("{0}",args.SensorReading.Quality);
此代码运行良好,这是我正在编写的输出文件中的一些示例
理查德;; 8:48:04 AM; 64
理查德;获取; 8:48:19 AM; 64
理查德;获取; 8:48:35 AM; 64
理查德;获取; 8:48:50 AM; 64
理查德;获取; 8:49:05 AM; 64
等 - 记录所有显示获得的信息 - 当设备获得心率而不是读数时,心率变化为70.
理查德;获取; 8:52:08 AM; 70
记录格式是我的名字,传感器质量,时间和心率。 “;”用作平面文件中的字段分隔符
然后我重复测试,但这次使用“跑步”锻炼模式的乐队,数据结果如下:
理查德;锁定; 9:15:32 AM; 57
理查德;获取; 9:15:47 AM; 67
理查德;已经锁定; 9:16:03 AM; 64
理查德;获取; 9:16:18 AM; 62
理查德;锁定; 9:16:33 AM; 72
等同类故事
理查德;锁定; 9:24:40 AM; 73
理查德;锁定; 9:24:55 AM; 72
帮助!!以下是几个问题:
SDK文档没有提供这种详细程度,我真的找不到另一种查找方式......所以帮助!
我希望这篇文章中的代码和数据格式是可读的,因为这是我第一次在这个论坛上发布 - 所以请原谅我,如果我在包含文本时“按错了按钮”!
感谢您提供给我的任何帮助或见解。
答案 0 :(得分:0)
确定。以下是心率订阅在所有版本的Microsoft Band SDK中的工作原理。
1)当您订阅时,您将开启心率收集,除非由于活动或Band固件的被动心率监测而已经开启。
2)当你取消订阅时,你会关闭心率,除非固件也收集了与上述相同的心率数据。
3)心率订阅率为1 hz且无法更改。
4)此订阅返回的数据是Band计算的心率,而不是直接读数。因此,Aquiring vs Locked表示乐队认为其阅读的精确程度,并且将更多地受到用户佩戴乐队的影响(更严格的是更好),而不是用户对乐队所做的活动
因此,为了节省电池寿命并以突发方式获取数据,您只需订阅,获取所需数量的事件,然后取消订阅。
您从文档中获得的其他数据是指如何在内部使用心率,而不是SDK如何公开心率。