2012-05-04 20 views
22

Jaka jest różnica między czujnikami grawitacji i przyspieszenia w systemie Android? Z mojego punktu widzenia wartość fizyczna jest taka sama w obu przypadkach.Jaka jest różnica między czujnikami "gravity" i "acceleration" w systemie Android?

Który z nich mierzy siłę działającą na jednostkę masy wewnątrz urządzenia?

ADDITION

Pytanie brzmi: co wielkością fizyczną jest mierzona przez te czujniki? Według equivalence principle przyspieszenie i grawitacja są nie do odróżnienia, a jedynym sposobem pomiaru obu jest zwykła (ale 3d) równowaga wiosenna.

Odpowiedz

11

Czujnik przyspieszenia podaje sumę wszystkich sił przyłożonych do urządzenia, podczas gdy czujnik grawitacji zwraca tylko wpływ siły grawitacji. Jeśli chcesz wyłączyć grawitację z przyspieszenia, możesz użyć filtra górnoprzepustowego lub po prostu odjąć wartości czujnika grawitacji od wartości czujnika przyspieszenia - nie wiesz, która metoda zapewnia lepszą precyzję.

Inną metodą może być użycie Sensor.TYPE_LINEAR_ACCELERATION, która daje dokładnie (przyspieszenie - grawitacja), jednak należy sprawdzić, czy jest dostępna na urządzeniu. Znalazłem kilka urządzeń, które mają działający czujnik ACCELERATION, ale brak reakcji czujników GRAVITY lub LINEAR_ACCELERATION.

+0

Więc to znaczy, że czujnik grawitacyjny jest tylko czujnik przyspieszenia przeszły przez filtr dolnoprzepustowy? –

+2

najprawdopodobniej od GRAVITY stały się dostępne od API w wersji 9, a nie sądzę, mój telefon dostał żadnej zmiany sprzętowe, kiedy mam to zmodernizowane =) – lenik

+0

dobrze, mam tylko sprawdzone, mój stary telefon nie zwraca żadnych nowości grawitacji, choć uruchamia kod bez narzeka. może grawitacja jest oddzielny czujnik, ale jeśli planujemy wspierać Android 2.1, prawdopodobnie filtr górnoprzepustowy na czujnik przyspieszenia jest najlepszym . – lenik

3

Ten link może być pomocne: http://www.sensorplatforms.com/which-sensors-in-android-gets-direct-input-what-are-virtual-sensors

Poniższy fragment podsumowania odpowiedź na swoje pytanie:

„Lista ... obejmuje zarówno czujniki fizyczne i rodzaje czujników z wartościami pochodzącymi z czujników fizycznych, czasami są to tak zwane wirtualne czujniki ... Typy wirtualnych czujników (grawitacja, przyspieszenie liniowe i wektor obrotu) dostarczają wartości uzyskane w wyniku inteligentnego łączenia wyników z czujników fizycznych ... Wektor obrotu jest kombinacją akcelerometru, magnetometru i czasem żyroskop do określenia trójwymiarowego kąta, pod którym leży urządzenie z systemem Android współrzędne ramy Ziemi. Znając wektor obrotu urządzenia, dane akcelerometr można rozdzielić na grawitacji i przyspieszenia liniowego.”

Ten link https://stackoverflow.com/a/8238389/604964 mówi także, że wartości grawitacyjne są obliczane przy użyciu filtru Butterworth.