2

我正在按照指南所说的那样做,一切都很好。我可以从 GATT 服务器中发现心率服务,然后从心率特征样本中获取所有更新。

但是,是否有一个特征可以获取与每个心率样本相关的时间戳?每当我获得样本时获取 System.currentMillis() 对我来说似乎太不准确了。我想要这样的东西

 if (UUID_HEART_RATE_TIMESTAMP.equals(characteristic.getUuid()))

编辑:我指的是该行的示例

if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {

应用程序可以解析心率传感器接收到的数据。有没有办法将时间戳值与心率一起解析?我需要的结果是几个值,而不是单个听力速率。

(时间戳,心率)

4

1 回答 1

0

接收与 BLE 心率测量相关的确切时间戳是不可能的,因为这不是BLE 心率服务 GATT 规范的一部分:

3.4 对时间敏感数据的要求

心率测量特性包含时间敏感数据并被视为时间敏感特性,因此适用以下要求:

由于此服务不提供时间戳来标识数据的测量时间(和年龄),因此如果连接未建立或通知未成功发送,则应丢弃心率测量特征的值到客户端(例如,链路丢失)。

如文档所示,您可以假设传输的测量值是“新鲜的”,因此使用接收设备到达时的时间戳是一个很好的近似值。

不幸的是,RR 间隔可能需要更高的精度,并且包含在相同的非时间戳测量中。评估单个 RR 间隔的时间戳可能需要更多技巧,因为每次测量都会将多个间隔捆绑在一起。

如果自上次通知以来测量的 RR-Interval 值多于适合一个心率测量特性,则剩余的 RR-Interval 值应包含在下一个可用的心率测量特性中。

如果心率传感器的内部缓冲区中没有可用空间,它可能会丢弃最旧的 RR-Interval 值。

因此,您可能必须使用传输间隔来评估测量是否已被丢弃,这会影响您为 RR 间隔添加时间戳的能力。

在典型应用中,心率测量特性大约每秒通知 1 次,包括心率测量值字段,如果支持,还包括 RR 间隔字段。

于 2020-10-30T10:19:58.993 回答