屏幕关闭时非工作传感器的Android解决方案

屏幕关闭时非工作传感器的Android解决方案,android,accelerometer,sensors,Android,Accelerometer,Sensors,[编辑:删除所有提及Android版本的内容-该问题出现在所有Android版本上] 背景:当屏幕关闭时,许多Android手机不会通过在屏幕关闭时调用onSensorChanged()来更新加速度计读数的应用程序。该行为在S.O.上讨论,并在此处进一步记录 在某些手机(Nexus S、Droid X2等)上,只有当值发生重大变化时,才会提供加速计值。例如,坐在桌子上一动不动,每分钟可能有一次或零次更新 为了生成跨手机型号的健壮代码,我如何区分每次屏幕关闭时缺少更新事件与每次非移动时缺少更新?

[编辑:删除所有提及Android版本的内容-该问题出现在所有Android版本上]

背景:当屏幕关闭时,许多Android手机不会通过在屏幕关闭时调用onSensorChanged()来更新加速度计读数的应用程序。该行为在S.O.上讨论,并在此处进一步记录

在某些手机(Nexus S、Droid X2等)上,只有当值发生重大变化时,才会提供加速计值。例如,坐在桌子上一动不动,每分钟可能有一次或零次更新


为了生成跨手机型号的健壮代码,我如何区分每次屏幕关闭时缺少更新事件与每次非移动时缺少更新?我应该维护手机型号数据库吗?

这将很难检测到。Android的API提供了一种控制唤醒锁的方法。但制造商在将其应用到操作系统方面做得很糟糕。太可怕了。当屏幕关闭时,您需要获取部分唤醒锁以保持手机CPU运行

然而,并不是所有的设备都会使用这个功能,并且不会做出响应——有些半响应,有些响应非常好

在阅读了上面的评论之后,我可以告诉你我使用过的大多数2.3+设备仍然没有实现部分唤醒锁定

我个人不会依赖制造商控制的东西,因为市场是如此分散。我会尝试找到一种方法,用不同的解决方案获得我想要的功能


希望这能有所帮助。

我两天来一直在寻找解决这个问题的方法。但还是没有发现任何有用的东西

在这篇文章中,布鲁诺·阿尔伯克基(Bruno Albuquerque)提出了一些可以帮助摩托罗拉手机的东西,但它不是通用的

我相信@jjNford关于制造商的说法是正确的。如果你对此有所了解,你能发布一些相关信息吗


是2009年发布的错误报告

当活动进入后台时,一个好的应用程序实际上会注销加速计。谢谢你的评论。对于这个问题的答案,一个合理需求的例子可能是在服务中注册侦听器的计步器应用程序。我的经验是,即使在屏幕关闭时,部分唤醒锁也会使cpu保持活动状态。如果加速计读数没有显著变化,您为什么会关心更新?不过我对此表示怀疑,大多数传感器包发出的噪音太大,以至于它们从来没有读过零。谢谢您的关注!在2.3+上,事实上没有传感器更新似乎意味着没有变化-我不需要这些更新。然而,在较旧的手机/版本上,没有这样的含义。因此,区分“无移动”和“无信息”所需的逻辑要求我打开手机类型/android版本。我对此感到非常不舒服,特别是考虑到传感器的行为似乎是经验上已知的,并且没有在任何官方文件中说明。@ldistic另外,我也分享了您使用部分唤醒锁的经验,并且在安卓2.3+版本的S.O.中普遍出现了这种情况。然而,在2.3版本之前,这种行为只出现在一些手机上。我可以自信地依靠部分尾流锁定解决方案在2.3+之后始终工作的方法本身将非常有用!到目前为止,我只找到了非常经验性的信息来源。