2013-04-30 10 views
5

Czy istnieje sposób, w jaki mogę uzyskać odczyt czujnika na sekundę? jaka jest stawka SENSOR_DELAY_NORMAL w kilka sekund?Uzyskiwanie wartości czujnika na sekundę

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 20 ms, lecz im nie pewnie, czy mogę zmienić wartość. –

Odpowiedz

5

Opóźnienie określone przez SENSOR_DELAY_ * jest tylko zaproponował opóźnienie, rzeczywiste wyniki mogą się szybciej lub wolniej. Jeśli potrzebujesz tylko jednego odczytu na sekundę, możesz użyć najniższej stawki (SENSOR_DELAY_NORMAL), powinna ona zostać zaktualizowana około 5 razy na sekundę. Będziesz potrzebował własnego czasu, jeśli chcesz zrobić coś dokładnie raz na sekundę.

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

+1

sm.registerListener (ten, przyspieszeniomierz, 1000) zwróci wartości przyspieszenia na sekundę? –

+4

Wygląda na to, że możesz ustawić wartości bezwzględne od API 11. Tak, więc powinno to wystrzelić mniej więcej raz na sekundę. Ale w każdym razie, nie oczekuj, że będzie to bardzo precyzyjne. –

6

dziękuję, że odpowiedział na moje pytanie, też używałem 1000, wydaje się, że wartości są w mikro sekund.

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

więc przez jedną sekundę powinienem używać stałego 1,000,000 mikro sekund.

+0

@Soner Gönül Czy ustawienie na 1000000 naprawdę działa? Dla mnie nadal daje to> 20 rekordów na sekundę, nawet przy 1 000 000 jako wartość częstotliwości opóźnienia. Musiałem w końcu zrobić to wprowadzając logikę, agregując wszystkie rekordy czujników dla drugiego i uśredniając je następnie do dalszego wykorzystania. –

+0

Dokumentacja mówi: Wymagane opóźnienie między dwoma kolejnymi zdarzeniami w mikrosekundach. To tylko wskazówka dla systemu. Zdarzenia mogą być odbierane szybciej lub wolniej niż określona stawka. Zwykle zdarzenia są odbierane szybciej. Może być jednym z SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME, SENSOR_DELAY_FASTEST lub opóźnieniem w mikrosekundach. –

0

SENSOR_DELAY_UI (opóźnienie 60000 mikrosekund) SENSOR_DELAY_FASTEST (opóźnienie 0 mikrosekund) SENSOR_DELAY_NORMAL) (200,000 mikrosekund opóźnienia)