【问题描述】
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