2013-04-30 145 views
5

有沒有什麼辦法可以讓我讀取傳感器的讀數? 以秒爲單位的SENSOR_DELAY_NORMAL費率是多少?每秒獲取傳感器值每秒

sm=(SensorManager)getSystemService(SENSOR_SERVICE); 
accelerometer=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
+0

Sensor.TYPE_ACCELEROMETER SENSOR_DELAY_NORMAL \t 161ms SENSOR_DELAY_UI \t 20ms的 SENSOR_DELAY_GAME \t 20ms的 SENSOR_DELAY_FASTEST \t 20ms的但林不當然,如果我可以改變價值。 – 2013-04-30 13:02:29

回答

5

通過SENSOR_DELAY_ *指定的延遲僅僅是一個建議延遲,實際結果可能會來的更快或更慢。如果您每秒只需要一次讀數,則可以使用最慢速率(SENSOR_DELAY_NORMAL),它應該每秒更新約5次。不過,如果你想每秒鐘只做一次,你需要自己的時間。

http://developer.android.com/guide/topics/sensors/sensors_overview.html

+1

sm.registerListener(this,accelerometer,1000)會每秒返回加速度值嗎? – 2013-04-30 13:14:04

+4

看起來你可以設置自API 11以來的絕對值。所以是的,這應該大約每秒觸發一次。但無論如何,不​​要指望這是非常準確的。 – 2013-04-30 13:28:15

6

謝謝,回答我的問題,我也用1000,好像值在微秒。

SENSOR_DELAY_UI  (60,000 microsecond delay) 
SENSOR_DELAY_FASTEST (0 microsecond delay) 
SENSOR_DELAY_NORMAL) (200,000 microseconds delay) 

所以一秒鐘我應該使用恆定的1,000,000微秒。

+0

@SonerGönül設置爲1000000是否真的有效?對我來說,即使有1,000,000個延遲頻率值,它仍然每秒鐘超過20條記錄。我不得不通過彙總第二個傳感器記錄並平均它們然後進一步使用來引入邏輯。 – 2015-06-18 16:12:02

+0

該文檔說: 兩個連續事件之間的期望延遲(以微秒爲單位)。這只是對系統的暗示。事件可能比指定速率更快或更慢。通常事件收到更快。可以是SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI,SENSOR_DELAY_GAME,SENSOR_DELAY_FASTEST之一或延遲(以微秒爲單位)。 – 2016-04-12 13:36:36

0

SENSOR_DELAY_UI(60,000微秒的延遲) SENSOR_DELAY_FASTEST(0微秒的延遲) SENSOR_DELAY_NORMAL)(200000微秒延遲)