SensorManager:一个SensorEventListener VS多个侦听器

时间:2014-04-02 15:24:20

标签: android-sensors

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

E.g。

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注册了听众,最有效(耗电量少)的方式是什么?为每个传感器设置一个监听器或者有一个监听器并用开关分离传感器?

非常感谢您提前

米诺斯

1 个答案:

答案 0 :(得分:4)

Android应用程序应该为每个Sensor使用一个 SensorEventListener ,因为每个SensorEventListener都会创建自己的FIFO缓冲区来处理 SensorEvent 。 通过芯片的电流消耗水平与提供给传感器的延迟有关,而与其附带的SensorEventListener 无关。

如果在 SENSOR_DELAY_FASTEST 处使用传感器时,由于缓冲区溢出,多个传感器与一个SensorEventListener一起使用,而某些事件可能会丢失,

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

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

    提高效率:

  • 暂停应用程序时,取消注册所有已注册的传感器(如果不需要),这样即使应用程序关闭,它们也不会从芯片中获取事件。
相关问题