我有一个应用程序,调用sensorManager.registerListener()注册加速度计、陀螺仪和磁力计,将所有传感器都设置为SENSOR_DELAY_NORMAL。大多数情况下没有问题。
然而,在查看一些日志时,我注意到加速度计似乎会随机地从大约179毫秒(这似乎是我的手机上平均的SENSOR_DELAY_NORMAL)变为约20毫秒。
经过一番挖掘和测试,我发现原因是当手机快速晃动时。当这种情况发生时,所有其他传感器都将保持其~179ms的速率,但只有加速度计会将其速率增加到~20ms。经过一段时间后,速率最终会从~20ms降至设置速率的~179ms。
我不确定它需要多长时间才能恢复到~179ms的速率,我尝试卸载和重新安装应用程序,如果还没有足够的时间,加速度计仍将以~20ms的速率触发事件。
我想看看是否可以通过在发生此情况时按正确的速率取消注册和重新注册侦听器来解决问题,但是无论我将其重置为什么速率,加速度计都将以~20ms的速率运行。但是我发现,我可以注销加速度计侦听器,这似乎有效,但这并不能解决我的问题。
有人知道为什么加速度计侦听器会更改其触发速率,以及我如何解决这个问题吗?
然而,在查看一些日志时,我注意到加速度计似乎会随机地从大约179毫秒(这似乎是我的手机上平均的SENSOR_DELAY_NORMAL)变为约20毫秒。
经过一番挖掘和测试,我发现原因是当手机快速晃动时。当这种情况发生时,所有其他传感器都将保持其~179ms的速率,但只有加速度计会将其速率增加到~20ms。经过一段时间后,速率最终会从~20ms降至设置速率的~179ms。
我不确定它需要多长时间才能恢复到~179ms的速率,我尝试卸载和重新安装应用程序,如果还没有足够的时间,加速度计仍将以~20ms的速率触发事件。
我想看看是否可以通过在发生此情况时按正确的速率取消注册和重新注册侦听器来解决问题,但是无论我将其重置为什么速率,加速度计都将以~20ms的速率运行。但是我发现,我可以注销加速度计侦听器,这似乎有效,但这并不能解决我的问题。
有人知道为什么加速度计侦听器会更改其触发速率,以及我如何解决这个问题吗?