【Java UI】HarmonyOS中心率传感器采样时间间隔设置Interval不生效

时间:2023-02-13 09:57:02

【问题描述】

HarmonyOS JavaUI开发中需要定时获取传感器数据,但是传感器的采样时间间隔即采样率并不明确。


【问题分析】

1、JavaUI API文档中有两个API可以获取传感器采样的时间间隔,通过时间间隔可以得到传感器数据的频率。

最小时间间隔:SensorBase.getMinInterval()

最大时间间隔:SensorBase.getMaxInterval()

文档地址:https://developer.harmonyos.com/cn/docs/documentation/doc-references/sensorbase-0000001054238981#ZH-CN_TOPIC_0000001054238981__getMinInterval--

2、通过设置回调可以获取传感器返回的数据:

setSensorDataCallback(ICategoryOrientationDataCallback callback, CategoryOrientation orientation, long interval)

其中interval必须再最小时间间隔和最大时间间隔的范围内。如果小于最小时间间隔,接口会按最小时间返回;如果超过最大时间间隔,接口就会按最大时间间隔返回。

【衍生问题】

上述问题在订阅心率传感器时,INTERVAL设置并不生效,如:

long HEALTH_INTEVAL = 60 * 1000 * 1000;

categoryBodyAgent.setSensorDataCallback(myHealthCallback, bodySensor, HEALTH_INTEVAL);

public void onSensorDataModified(CategoryBodyData categoryBodyData)

采样频率设置为60秒,但onSensorDataModified 小于2秒内触发一次

【问题原因】

心率传感器是onchange类型的,一旦数据有变化就会上报传感器数据,设置interval 是对持续上报的sensor, 像这种更改时就上报的sensor,一般无效


欲了解更多更全技术文章,欢迎访问​https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh​