我正在編寫一個擴展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