我正在编写一个扩展SensorEventListener接口的应用程序,以监听对日志文件中的晴雨表所做的更改。在开始记录之前,我预先设置一个以毫秒为单位的系统时间(让我们称之为毫秒时间戳1或MT1),并且在记录完成后,我以毫秒为单位附加另一个系统时间戳(我们称之为毫秒时间戳2或MT2)。传感器功率/通知率问题
的SensorEvent有它自己的时间戳(我会打电话给纳秒时间戳或NT),这也是我登录,MT1和MT2之间。
问题是:如果手机在日志记录过程中进入睡眠状态,SensorEvent速率似乎不再以我设置的速率发生(例如,SENSOR_DELAY_FASTEST)。此外,即使SensorEvent时间戳应该表示自电话重新启动以来的正常运行时间为纳秒,但仍有“缺失”纳秒 - MT2和MT1之间的时间间隔通常是NTN之间的时间间隔的两倍或更多(其中N是样本数量)和NT1。
我已经能够通过使用PowerManager.Wakelock()之类的解决这个问题,但导致我的应用程序是一个巨大的动力生猪,似乎像一个真正的黑客笨拙。有没有其他方法可以解决这个问题?
嗯,“定为是‘一个巨大的动力猪’或重新设计你的应用程序不需要除了当屏幕上的传感器读数”二分法并不完全正确 - 有计步器应用程式在那里,不知何故设法避免成为巨大的电源并且在手机处于睡眠状态/屏幕关闭时工作。我只是不确定他们是如何做到的。 – Catherine 2012-07-26 22:33:51
@凯瑟琳:我所能做的就是在这个问题上指出你对这个话题的讨论颇多:http://code.google.com/p/android/issues/detail?id=3708 – CommonsWare 2012-07-26 22:36:54
非常感谢,我正在阅读它。 – Catherine 2012-07-26 22:52:14