2015-09-06 46 views
1

我試圖在50ms週期內收集加速度計值,並在每1分鐘收集一次值。所以我用1分鐘的待機意圖與RTC_WAKEUP標誌並設置傳感器事件爲50ms的警報管理器。首先看起來傳感器事件在確切的時間週期內被調用,並且即使當我的設備屏幕關閉時也在每隔一分鐘收集到1150〜1210個加速度計值,但是當我從電腦拔下設備並關閉屏幕電源時,它開始變得更慢,最終每隔1分鐘只收集60〜100個樣本。 因此,我目前獲得Wakelock整個時間,並用計時器取代鬧鐘管理器,以每1分鐘做一次計時器任務。但我擔心我的電池耗盡。當設備屏幕關閉一段時間後,android傳感器事件變慢

所以我想問問你是下面的」

1)是設備甦醒時,設備被插入到計算機或充電器?

2)用什麼方法將電池壽命比較好?通過報警maganer到每2秒獲取一次wakelock以保持設備清醒並在達到1分鐘時做某些事情或者使用當前獲取Wakelock的方法使設備活着並使用計時器每1分鐘做一次事情

回答

0

我發現手機只有當它連接到計算機時纔有效。從計算機上拔下電話後,手機放慢了速度幾分鐘後傳感器值。所以我改變了我的AlarmManager火警意圖每2秒做定時任務和保持設備清醒。但是,手機有時並沒有在每個2秒的準確時間觸發鬧鐘意圖,這對我的應用程序的目的至關重要。所以我改變方法,以保持手機活着使用AlarmManager牽住激活鎖定整個時間和使用定時器TimerTask的做定時任務。在計時器完成所有計時任務後,它釋放喚醒鎖。傳感器事件內部的代碼只收集樣本,每隔2秒將樣本放入隊列和定時器任務中,使用fft將收集的樣本轉換到頻域,這需要大量的計算。

我讀過很多關於電池壽命的文章,認爲wakelock的效率真的很低。但是當我持有喚醒鎖時,我在每個計時器任務和傳感器事件正在處理期間檢查CPU使用情況,每2秒和50毫秒週期。它只使用每秒總CPU使用量的0.71〜1.75%!我認爲這對電池壽命沒有壞處。所以然後我再次通過持續7小時的持續時間來測試計時器任務和傳感器事件。其結果是它使用的電池電量少於10%,並且每隔50ms收集一次傳感器值樣本,並且每2秒準確定時任務!

由於每個計時器任務和傳感器事件中的代碼的重量,因此我更換了電池使用量。我很高興知道,如果我精心設計時序任務代碼,即使持有喚醒鎖並保持電話的cpu活着,對電池壽命來說也不是那麼糟糕!

相關問題