我为不同的传感器设置了相同的采样率(延迟),例如:
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
发布于 2014-07-30 11:31:59
根据Android文档-延迟只是对系统的一个提示。接收事件的速度可能比指定的速率快或慢。
我建议您尝试各种可用的选项,并选择最适合您的需求的选项。
如果什么都不起作用,您可以在传感器侦听器中编写自己的过滤器,通过比较时间戳来丢弃比您希望的更快的值。
发布于 2014-07-30 11:33:30
由于物理原因,不同的传感器以不同的速率采样。我不确定你是否真的想放慢速度,这取决于你想要的精确度。但是,是的,你使用了SENSOR_DELAY_NORMAL,所以你总是可以选择更慢的东西。此外,从API9开始,如果需要,您可以使用毫秒值作为rate。
https://stackoverflow.com/questions/25028291
复制相似问题