我有一个应用程序,它为加速度计,陀螺仪和磁力计调用sensorManager.registerListener(),它为寄存器注册所有传感器,它们每个都设置为SENSOR_DELAY_NORMAL。这种方法很好,绝大部分时间都没有问题。
然而,在查看一些日志时,我注意到加速度计似乎随机变化的频率从大约179毫秒(这似乎是我手机上的平均SENSOR_DELAY_NORMAL)到大约20毫秒。
在进行了大量的挖掘和测试之后,我发现原因是手机快速摇动。当发生这种情况时,所有其他传感器将保持其~177ms的速率,但只有加速度计将其速率增加到~20ms。经过一段时间后,速率最终会从~20ms减少到~179ms的设定速率。
我不确定它恢复到~179ms的速度需要多长时间,我已尝试卸载并重新安装应用程序,如果还没有足够的时间,加速度计仍会在~20ms时触发事件。
我想知道是否可以解决问题,但是当发生这种情况时,以正确的速率取消注册和重新注册监听器,但是无论我将其重置为什么,加速计都将保持在~20ms。我确实发现虽然我可以取消注册加速度计监听器,但这似乎有效,但它并没有解决我的问题。
任何人都知道为什么加速计听众会改变它的射击速度,以及我如何能够解决这个问题?
答案 0 :(得分:1)
您请求Android的延迟只是建议的延迟。 Android系统和其他应用程序可以改变这一点。 Source
之所以会发生这种情况非常简单 -