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

Android不同的传感器延迟不同的时间和相同的速率设置,android,delay,Android,Delay,我为不同的传感器设置了相同的采样率延迟,如: Sensor GSensor = sensorManager .getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); sensorManager.registerListener(sensorEventListener, GSensor, SensorManager.SENSOR_DELAY_NORMAL); Sensor FSe

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

    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);
但从磁传感器接收信息的速率比其他两个传感器高得多

为什么会这样,我可以减慢磁传感器的速度吗

这是测试日志,其中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

根据Android文档,延迟只是对系统的一个提示。接收事件的速度可能快于或慢于指定的速率

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

传感器延迟正常 传感器\延迟\用户界面 传感器\延迟\游戏 传感器延迟最快。
如果什么都不起作用,您可以在传感器侦听器中编写自己的过滤器,通过比较时间戳来丢弃比您希望的更快的值

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