2012-09-23 70 views
0
private static int SENSOR_DELAY_SLOW = 5000000; 

sensMngr = (SensorManager) getSystemService(SENSOR_SERVICE); 

sensMngr.registerListener(this, sensMngr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SENSOR_DELAY_SLOW); 

我想每5秒捕獲一次傳感器的數據,但它忽略了我所需的速率。聽衆甚至可以每秒捕捉超過400次的值。使用自定義速率註冊加速計監聽器

當然,我可以在onSensorChanged(SensorEvent事件)方法中手動過濾傳入數據,但我的主要目的是減少電池消耗。

Documentation

我在做什麼錯?

謝謝。

+0

我也注意到了這一點(與三星Galaxy Tab 2)。我似乎使用SENSOR_DELAY_UI獲得最慢的更新速率。 – tristan2468

回答

1

您需要SensorManager.SENSOR_DELAY_UI,您將不得不從那裏過濾掉。只有4種可選擇的速度,你不能自己定義。 SENSOR_DELAY_UI傾向於每秒最多接近3個採樣點,並且由於當傳感器值發生變化時您會得到結果,因此樣本之間可能會持續幾秒鐘。這將因設備而異。

無法爲Android中的傳感器值傳遞定義固定費率。