2012-07-26 61 views
1

我正在編寫一個擴展SensorEventListener接口的應用程序,以監聽對日誌文件中的晴雨表所做的更改。在開始記錄之前,我預先設置一個以毫秒爲單位的系統時間(讓我們稱之爲毫秒時間戳1或MT1),並且在記錄完成後,我以毫秒爲單位附加另一個系統時間戳(我們稱之爲毫秒時間戳2或MT2)。傳感器功率/通知率問題

的SensorEvent有它自己的時間戳(我會打電話給納秒時間戳或NT),這也是我登錄,MT1和MT2之間。

問題是:如果手機在日誌記錄過程中進入睡眠狀態,SensorEvent速率似乎不再以我設置的速率發生(例如,SENSOR_DELAY_FASTEST)。此外,即使SensorEvent時間戳應該表示自電話重新啓動以來的正常運行時間爲納秒,但仍有「缺失」納秒 - MT2和MT1之間的時間間隔通常是NTN之間的時間間隔的兩倍或更多(其中N是樣本數量)和NT1。

我已經能夠通過使用PowerManager.Wakelock()之類的解決這個問題,但導致我的應用程序是一個巨大的動力生豬,似乎像一個真正的黑客笨拙。有沒有其他方法可以解決這個問題?

回答

0

傳感器都不能保證,如果設備進入睡眠狀態,或者即使屏幕關閉(但CPU未必尚未斷電)工作。行爲是無證的,而且看起來似乎因設備而異。

無論是定居爲是「一個巨大的動力豬」或重新設計你的應用程序不需要除了當屏幕上的傳感器讀數。在Android的

傳感器肯定是設計成由前臺應用程序激活使用,而不是長期的記錄和監控目的。

+0

嗯,「定爲是‘一個巨大的動力豬’或重新設計你的應用程序不需要除了當屏幕上的傳感器讀數」二分法並不完全正確 - 有計步器應用程式在那裏,不知何故設法避免成爲巨大的電源並且在手機處於睡眠狀態/屏幕關閉時工作。我只是不確定他們是如何做到的。 – Catherine 2012-07-26 22:33:51

+0

@凱瑟琳:我所能做的就是在這個問題上指出你對這個話題的討論頗多:http://code.google.com/p/android/issues/detail?id=3708 – CommonsWare 2012-07-26 22:36:54

+0

非常感謝,我正在閱讀它。 – Catherine 2012-07-26 22:52:14