Android不同的传感器延迟不同的时间与相同的速率设置

时间:2014-07-30 03:26:25

标签: android delay

我为不同的传感器设置了相同的采样率(延迟),例如:

    Sensor GSensor = sensorManager
            .getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
    sensorManager.registerListener(sensorEventListener, GSensor,
            SensorManager.SENSOR_DELAY_NORMAL);

    Sensor FSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
    sensorManager.registerListener(sensorEventListener, FSensor,
            SensorManager.SENSOR_DELAY_NORMAL);

    Sensor MAGNETICSensor = sensorManager
            .getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    sensorManager.registerListener(sensorEventListener, MAGNETICSensor,
            SensorManager.SENSOR_DELAY_NORMAL);

但是从MAGNETIC Sensor接收消息的速度远远高于其他两个传感器。

为什么会这样,我可以降低MAGNETIC传感器的速度吗?

这是测试日志,其中A,M,G分别代表加速度,磁力和重力传感器:

07-30 10:37:03.314: D/mtest(32598): G
07-30 10:37:03.314: D/mtest(32598): A
07-30 10:37:03.314: D/mtest(32598): M
07-30 10:37:03.334: D/mtest(32598): M
07-30 10:37:03.354: D/mtest(32598): M
07-30 10:37:03.374: D/mtest(32598): M
07-30 10:37:03.394: D/mtest(32598): M
07-30 10:37:03.414: D/mtest(32598): M
07-30 10:37:03.434: D/mtest(32598): M
07-30 10:37:03.454: D/mtest(32598): M
07-30 10:37:03.474: D/mtest(32598): M
07-30 10:37:03.494: D/mtest(32598): G
07-30 10:37:03.494: D/mtest(32598): A
07-30 10:37:03.494: D/mtest(32598): M

2 个答案:

答案 0 :(得分:0)

根据Android Docs - 延迟只是对系统的暗示。可以比指定的速率更快或更慢地接收事件。

我建议您尝试各种可用选项,并选择最符合您要求的选项。

  1. SENSOR_DELAY_NORMAL
  2. SENSOR_DELAY_UI
  3. SENSOR_DELAY_GAME
  4. SENSOR_DELAY_FASTEST。
  5. 如果没有任何作用,您可以在传感器侦听器中编写自己的过滤器,通过比较时间戳来丢弃比您想要的更快的值。

答案 1 :(得分:0)

由于物理原因,不同的传感器以不同的速率采样。我不确定你是否真的想放慢速度,这取决于你想要的准确程度。但是,是的,您使用了SENSOR_DELAY_NORMAL,因此您可以随时选择更慢的东西。同样,从API 9开始,如果需要,可以使用毫秒值作为速率。