Flutter使用Polar包获取Polar H10心率数据时如何获取时间戳?
问题描述
我正在使用polar包开发Flutter应用,用于记录Polar H10设备的数据。以下是我获取心率数据的代码:
if (availabletypes.contains(PolarDataType.hr)) { polar.startHrStreaming(identifier).listen((data) { int hr = data.samples.first.hr; } }
在ECG和ACC数据中,我可以通过data.samples.first.timeStamp获取时间戳,但心率(HR)数据对应的PolarHRSample类构造函数中没有该属性,请问如何获取Polar设备发送的心率数据对应的时间戳?
解决方案
1. 读取PolarHrData顶层的时间戳
心率数据流返回的PolarHrData对象本身带有timeStamp字段,这个就是设备发送这批心率数据的原始时间戳,直接读取即可:
if (availabletypes.contains(PolarDataType.hr)) { polar.startHrStreaming(identifier).listen((data) { int hr = data.samples.first.hr; int deviceTimestamp = data.timeStamp; // 获取设备端时间戳 } }
该时间戳的精度与ECG/ACC数据的时间戳一致,均为设备端原生时间。
2. 更新至最新版本的polar包
若你使用的是旧版本包,可能存在PolarHrData未暴露时间戳的情况,尝试更新到最新稳定版,这类字段缺失问题通常会在新版本中修复。
3. 本地时间戳作为临时备选
如果上述方法不可行,可以在收到数据的瞬间记录本地时间作为近似值:
if (availabletypes.contains(PolarDataType.hr)) { polar.startHrStreaming(identifier).listen((data) { int hr = data.samples.first.hr; int localTimestamp = DateTime.now().millisecondsSinceEpoch; // 本地时间戳 } }
注意:该时间戳是本地设备时间,与Polar H10设备时间可能存在微小偏差,仅适合无严格时间同步要求的场景。
4. 查阅官方仓库的Issue
若问题仍未解决,可前往polar包的官方代码仓库查看是否有其他用户遇到同类问题,或提交新Issue询问维护者,确认是否为设计遗漏或需要特定配置才能获取心率时间戳。
内容的提问来源于stack exchange,提问作者Pranav Bhutada
相关产品推荐
相关产品推荐

