2011-01-14 6 views

Odpowiedz

9

Nie ma ogólnie "dokładnych wartości" - zależy to od urządzenia. Klasa Sensor ma getMaximumRange(). Ponieważ przyspieszenie może być dodatnie lub ujemne, zakładam, że możesz bezpiecznie pomnożyć tę wartość przez -1, aby uzyskać minimalną wartość.

+0

Zgadzam się, że wartość minimalna jest ujemna od wartości zwróconej przez getMaximumRange(). Chociaż jest zbyt mały, aby zrobić różnicę w większości aplikacji, podejrzewam (z powodu uzupełnienia dwójkowego reprezentacji odczytu czujnika), że rzeczywista dodatnia wartość maksymalna to jedna wartość rozdzielczości mniejsza niż getMaximumRange(). – gregS

+0

Tak naprawdę, mam na biurku telefon z akcelerometrem 'Bosch Sensortec GmbH', który zwraca' 156,88' dla 'getMaximumRange()' ale haniebnie nie dostarcza, mając całkowity maksymalny zakres dokładnie '39.225403' na każdej osi (Wstrząsnąłem i rozbiłem mocne urządzenie tak mocno, jak tylko mogłem, żeby to przetestować). Więc to, co ta metoda zwraca, jest niewiarygodne, zdarzenie, jeśli czujniki zgłaszają wysoką dokładność (tak mówią cały czas na tym urządzeniu). Z drugiej strony mój Nexus 6P mógł raportować wartości zasięgu powyżej 150 ms^2 na oś, przy maksymalnym całkowitym przyspieszeniu wynoszącym "135.92858447775066ms^2". –

1

Mierzy wielkość fizyczną! Naprawdę nie wiem, czy jest jakiś praktyczny limit wprowadzony przez urządzenie sprzętowe, ale nie sądzę, że będziesz tak szybki ... Od jego wektora wielkości, znak oznacza sens twojego ruchu .

PD: Zakładam, że masz na myśli Sensor.TYPE_ACCELEROMETER wartości zdarzeń.

+1

Każdy czujnik sprzętowy ma ograniczenia. Twórcy sterowników powinni określić te ograniczenia. Jeśli zostanie osiągnięta wartość przekraczająca ten limit, zgłoszona wartość zostanie obcięta. – NickSoft