首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android加速度计传感器监听频率意外变化

Android加速度计传感器监听频率意外变化
EN

Stack Overflow用户
提问于 2015-08-17 19:23:36
回答 1查看 2.5K关注 0票数 3

我有一个为加速度计、陀螺仪和磁强计调用sensorManager.registerListener()的应用程序,它为处理程序注册所有传感器,每个传感器都设置为SENSOR_DELAY_NORMAL。在大多数情况下,这是很好的,没有任何问题。

然而,当我看一些日志时,我注意到加速度计似乎会随机改变频率,从大约179毫秒(这似乎是我手机上的平均SENSOR_DELAY_NORMAL )到大约20毫秒。

经过大量的挖掘和测试,我发现原因是手机被迅速摇晃时。当这种情况发生时,所有其他传感器都将保持其~179 to的速率,但只有加速度计才会将其速率提高到~20 to。经过一段时间后,该速率最终将从~20 of降至~179 of的设定速率。

我不知道恢复到179 at的速率需要多长时间,我尝试过卸载和重新安装应用程序,如果还没有足够的时间,加速度计仍将在20 at左右触发事件。

我想看看我是否能解决这个问题,但当这种情况发生时,我会以正确的速度重新注册和重新注册听者,但是不管我把它重置到什么位置,加速度计都会以20毫秒的速度继续运行。我确实发现,虽然我可以取消加速度计侦听器,这似乎是可行的,但它并没有解决我的问题。

有谁知道为什么加速度计的听者会改变它的发射速度,以及我如何能够解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 07:35:44

您请求Android的延迟只是建议的延迟。Android系统和其他应用程序可以改变这一点。来源

这种情况发生的原因很简单-

  • 该装置上只有有限数量的物理传感器、一个加速度计、一个磁强计、一个陀螺仪。
  • 假设您的应用程序,每100 Say注册一次加速度计中的所有事件。
  • 另一个应用程序,每10 all从加速度计请求所有事件。
  • 现在,由于只有一个传感器和两个不同的需求,Android使加速度计能够在所有应用程序提出的所有延迟请求中以最低的速度提供数据,然后Android只在这个延迟频率上报告所有事件。
  • 在这种情况下,当事件超出所需时,应由应用程序开发人员来忽略它们。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32058135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档