2017-04-17 120 views
0

對於Android應用程序,它將在圖中顯示內部傳感器的值(例如加速度),我需要找到一種方法來定期訪問此信號。 目前我正在使用SensorEventListener,但不幸的是,這隻能讓我有可能隨時更改值。 因爲我想根據時間顯示圖形(點對點),這意味着它會直接從舊值繪製一條線到新值(如果舊值已經很長時間,它看起來像一個線性變化的值)。 所以我的問題:我如何能夠定期訪問傳感器的數據?Android定期傳感器數據

回答

0

documentation for SensorManager的說,registerListener(android.hardware.SensorEventListener, android.hardware.Sensor int)

「註冊一個SensorEventListener在給定的取樣頻率的定傳感器」。

但是,要獲取這些事件,您的應用程序需要處於活動狀態(保持部分喚醒鎖定)。在後臺服務中執行此操作會更好,因此應用程序無需保持活動狀態。看例如,SensorEventListener in a service

+0

問題在於,時間只是對系統的建議。事件可能比指定速率更快或更慢。 這意味着, 'registerListener(android.hardware.SensorEventListener,android.hardware.Sensor int,1000000)' (100萬μs= 1s)每秒不會生成一個值,但還有很多更多。 那麼我能做些什麼 - 例如 - 每秒接收一個傳感器信號? – Scian

+0

記住你最後一次閱讀的時間,並且不要在1秒鐘內完成讀數 – GreyBeardedGeek

0

所以最後我用了一個計時器,它檢查我的傳感器的值,我週期性地把它放入一個數組中。 不幸的是registerListener沒有工作,因爲該值只是系統的建議。 感謝您的幫助。