HarmonyOS 传感器回调时间间隔问题

使用传感器 API 获取气压时,传入的回调间隔是 1s(1000 * 1000 * 1000),但实际回调间隔远小于 1s,大概是 0.1s

完整代码如下:

import { sensor } from '@kit.SensorServiceKit';
import Logger, { TAG_OT } from '../../manager/Logger';
import { SECOND_IN_NANOS, SECOND_IN_MILLIS } from '../../utils/DateUtils';

/**
 * 通过传感器获取气压
 */
class PressureSensorManager {

  lastPressure = 0
  lastPressureTimestamp = 0

  /**
   * 开启气压监听
   */
  startSensor(): Promise<void> {
    Logger.i(TAG_OT, `PressureManager: start sensor`)
    return new Promise((resolve, reject) => {
      try {
        sensor.on(
          sensor.SensorId.BAROMETER,
          (response: sensor.BarometerResponse) => {
            this.onPressorChange(response)
          },
          { interval: TIME_INTERVAL }
        )
        resolve()
      } catch (error) {
        reject()
        Logger.e(TAG_OT, `start pressure sensor error: ${JSON.stringify(error)}`)
      }
    })
  }

  /**
   * 关闭气压监听
   */
  stopSensor() {
    sensor.off(sensor.SensorId.BAROMETER)
    Logger.i(TAG_OT, `stop pressure sensor`)
  }

  private onPressorChange(response: sensor.BarometerResponse) {
    this.lastPressure = response.pressure
    this.lastPressureTimestamp = Date.now()

    Logger.d(TAG_OT, `on pressure change. pressure: ${response.pressure}`)
  }
}

// 传感器回调间隔,纳秒
const TIME_INTERVAL = 1000 * 1000 * 1000

export default new PressureSensorManager()
HarmonyOS
2024-12-27 17:02:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

每个传感器的回调间隔是有范围的,首先用某个传感器要用hidumper -s 3601 -a -l命令查询一下对应传感器的回调间隔范围,如果小于最小值,会默认给个最小值;如果大于最大值,会默认给个最大值

分享
微博
QQ
微信
回复
2024-12-27 19:50:44
相关问题
重力传感器相关问题咨询
754浏览 • 1回复 待解决
HarmonyOS 传感器判断屏幕方向
376浏览 • 1回复 待解决
HarmonyOS 计步传感器相关问题咨询?
470浏览 • 1回复 待解决
Sensor 步数传感器后台情况
954浏览 • 1回复 待解决
HarmonyOS 计步器传感器后台不工作
375浏览 • 1回复 待解决
如何保证振弦传感器的测量精度?
3712浏览 • 0回复 待解决
获取加速度传感器的方法
786浏览 • 1回复 待解决
什么是智能振弦传感器的电子标签?
3605浏览 • 0回复 待解决
订阅接近光传感器只出一次数据
2133浏览 • 1回复 待解决