我为不同的传感器设置了相同的采样率(延迟),例如:
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
答案 0 :(得分:0)
根据Android Docs - 延迟只是对系统的暗示。可以比指定的速率更快或更慢地接收事件。
我建议您尝试各种可用选项,并选择最符合您要求的选项。
如果没有任何作用,您可以在传感器侦听器中编写自己的过滤器,通过比较时间戳来丢弃比您想要的更快的值。
答案 1 :(得分:0)
由于物理原因,不同的传感器以不同的速率采样。我不确定你是否真的想放慢速度,这取决于你想要的准确程度。但是,是的,您使用了SENSOR_DELAY_NORMAL,因此您可以随时选择更慢的东西。同样,从API 9开始,如果需要,可以使用毫秒值作为速率。