android-sensors - 传感器管理器 : One SensorEventListener VS Multiple Listeners

标签 android-sensors

我正在尝试将传感器测量值记录到设备内存中。为此,我为许多传感器注册了相同的 SensorEventListener,然后根据类型使用开关将它们分开。

例如。

int type = sensor.getType();

switch (type) {
    case Sensor.TYPE_ACCELEROMETER:
    // log accelerometer data
    break;

case Sensor.TYPE_GYROSCOPE:
    // Log gyroscope data
    break;

...

我的问题是,考虑到我使用 SENSOR_DELAY_FASTEST 注册了监听器,最有效(消耗电池电量更少)的方法是什么?为每个传感器设置一个监听器,还是设置一个监听器并用开关将传感器分开?

非常感谢您提前

米诺斯

最佳答案

一个安卓应用程序应该使用一个 SensorEventListener 每个传感器,因为每个 SensorEventListener 创建它的 自己的 FIFO 缓冲区 处理 SensorEvent .
通过芯片的电流消耗水平与提供给传感器的延迟有关不考虑 SensorEventListener 它附有。

如果多个传感器与一个 SensorEventListener 一起使用,则某些事件可能会丢失,原因是 缓冲区溢出 , 当传感器用于 SENSOR_DELAY_FASTEST .

因此,为了获得最佳结果并确保不会丢失任何事件:

  • 对一个传感器使用一个 SensorEventListener。

    提高效率:
  • 暂停应用程序时,取消注册所有已注册的传感器(如果不需要),这样即使在应用程序关闭后它们也不会从芯片获取事件。
  • 关于android-sensors - 传感器管理器 : One SensorEventListener VS Multiple Listeners,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816089/

    相关文章:

    java - android OnSensorChanged() 响应慢

    android - HardwarePropertiesManager 不工作

    android - Google Fit API 和 ActivityRecognitionAPI 之间的区别

    android - 如何/我应该实现卡尔曼滤波器以获得准确的加速度计数据?

    android - 我可以在后台使用 Android Wear 分析传感器数据吗?

    android - 如何使用 SensorManager.getOrientation() 计算 "Pitch"和 "Roll"

    android - Android 手机中的加速度计和陀螺仪及其功耗

    algorithm - 使用 GPS/Compass/Accelerometer - 算法到达航路点?

    android - 在android中查找设备的相对方向