2011-05-15 87 views
0

我正在處理一個應用程序,我需要定期獲取傳感器值。爲此,我在設定的時間間隔內使用AlarmManager和Receiver。 Android的傳感器實現似乎集中在連續讀取數據,並且似乎無法輪詢單個當前讀數。輪詢傳感器值時的最佳做法是什麼?

我的問題是「模擬」輪詢機制的最佳做法是什麼?有沒有我沒有遇到過的例子?一種方法是調用registerListener(),獲取當前的讀數,然後調用stopListener()。但是,這看起來並不奏效,因爲閱讀不是即時可用的。

回答

0

您可以使用我用in this project用於輪詢位置的相同方法。使用WakeLock使設備保持喚醒狀態,並讓服務在onStartCommand()中註冊傳感器監聽器。當傳感器事件到達時,釋放WakeLock並致電stopSelf()關閉該服務。

+0

我覺得Github的例子對於這項任務有點矯枉過正。我想我只需要知道如何監控活動何時到達。順便說一下:它是一個需要這些定期更新的部件,我試圖使用SensorEventListener讀取設備中的壓力/氣壓計值,這與LocationManager非常不同。 – hanspeide 2011-05-16 15:23:55

+0

此外,它只需要在Honeycomb中工作。可以使用BroadcastReceiver.PendingResult嗎? – hanspeide 2011-05-16 15:36:15

+0

@hpe:「我覺得Github的例子對於這項任務有點矯枉過正。」 - 歡迎您提出意見。 「可以使用BroadcastReceiver.PendingResult?」 - 不可靠,因爲您可能無法獲得足夠快的傳感器事件。請閱讀'goAsync()'的文檔:http://goo.gl/rLxj4 – CommonsWare 2011-05-16 15:53:09

相關問題