我已使用以下代码从心率传感器和心率质量传感器成功获取数据:-
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 秒;64
理查德;收购;上午 8 点 48 分 19 秒;64
理查德;收购;上午 8 点 48 分 35 秒;64
理查德;收购;上午 8 点 48 分 50 秒;64
理查德;收购;8:49:05 AM;64
等 - 记录所有显示采集 - 心率的 70 变化是在设备采集心率时出现的,而不是来自读数。
理查德;正在收购;上午 8 点 52 分 08 秒;70
记录格式是我的名字、传感器质量、时间和心率。“;” 在平面文件中用作字段分隔符
然后我重复了测试,但这次在“跑步”锻炼模式下使用乐队,数据结果如下:
理查德;锁定;上午 9 点 15 分 32 秒;57
理查德;收购;上午 9 点 15 分 47 秒;67
理查德;锁定;上午 9 点 16 分 03 秒;64
理查德;收购;上午 9 点 16 分 18 秒;62
理查德;锁定;上午 9 点 16 分 33 秒;72
等等同样的故事
理查德;锁定;上午 9 点 24 分 40 秒;73
理查德;锁定;上午 9 点 24 分 55 秒;72
帮助!!这里有几个问题:
- 了解由不同模式管理的“电池寿命”问题 - 在理想世界中我想做的是设置我自己的采样率,该采样率唤醒并锁定传感器以进行读取,然后让它返回再次休眠以节省电池电量。我猜这是不可能的,因为这是一个固件问题。我对么?如果不是,我该怎么做?
- 如果我不能有理想 - 我想做的是能够从程序中切换采样模式,而不是通过按下 Band 上的按钮。因此,我可以像在锻炼活动中那样定时进行“突发样本”,并在剩余时间进行背景检查以节省电池。我可以这样做吗?如果可以,该怎么做?
- 设置波段报告间隔的相关性是什么 - 我应该在此处更改任何有助于控制传感器何时打开和锁定(运动模式与关闭和获取(正常模式)的时间。如果是这样我应该怎么做编码这个?从我自己的测试来看,传感器的模式似乎与报告间隔无关——但我错了吗?
- 如果没有任何文档可以最详细地解释此采样是如何工作的?我花了相当多的时间在网上搜索并发现以下内容:
- 正常模式似乎每小时采样 3 或 4 次
- 如果乐队检测到明显运动,正常模式会唤醒进入活动模式 - 例如,我今天早上带着乐队在正常模式下跑步,一旦它工作了我正在做的事情,它就会自行进入锻炼模式 - 聪明,我越想想有用。
- 即使是运动模式也有一些“获取”事件——但这些似乎和过去的值一样具有预测性——如果我不能在密集的基础上进行测量——我想知道心脏预测中发生了什么,这样我就可以弄清楚是否有意义与否
SDK 文档没有给出这个级别的详细信息,我真的找不到另一种方法来找出......所以帮助!
我希望这篇文章中的代码和数据格式是可读的,因为这是我第一次在这个论坛上发帖——所以如果我在包含文本时“按下了错误的按钮”,请原谅我!
感谢您给我的任何帮助或见解。