To co was interesuje nie ma za dużo wspólnego z akcelerometrem. Akcelerometr podaje przyspieszenie w stosunku do danej osi w m/s^2.
Wy mówicie o pochodnej akcelerometru oraz magnetometru (czujnik pola magnetycznego) jaką jest sensor TYPE_ORIENTATION -- podaje on wychylenie od danej osi x,y,z w stopniach.
osie względem telefonu to:
oś x: wzdłuż krótszego boku telefonu zwrot w prawo (przy trzymaniu telefonu w sposób naturalny (wertical) oś biegnie z lewa na prawo przecinając płaszczyznę telefonu),
oś y: wzdłuż dłuższego boku telefonu zwrot do przodu (przy trzymaniu telefonu w sposób naturalny (wertical) oś biegnie z dołu telefonu (okolice mikrofonu) w górę telefonu (okolice głośnika) przecinając płaszczyznę telefonu),
oś z: oś ortogonalna do dwóch poprzednich, jeżeli telefon położymy płasko na stole ekranem do góry to oś biegnie z pod stołu przecinając płaszczyznę telefonu w górę,
Zwraca on dane w postaci tablicy 6 elementowej indeksowanej od 0-5 gdzie:
element 0 = azymut -- (zakres 0 do 360 stopni) gdzie zero to północ magnetyczna, a liczony jest zgodnie z ruchem wskazówek zegara (kont między północą magnetyczną a osią y telefonu, liczoną wokół osi z),
element 1 = pitch, wychylenie wokół osi x telefonu (zakres -180 do 180 stopni), gdzie wartości dodatnie przyjmowane są gdy oś z telefonu porusza się w kierunku osi y (czyli płasko ekranem do góry (wychylenie góra-dół),
element 2 = roll wychylenie wokół osi y telefonu (zakres -90 do 90 stopni), gdzie wartości dodatnie przyjmowane są gdy oś x telefonu porusza się w kierunku osi z (czyli płasko ekranem do góry wychylenie prawo-lewo),
Wartości elementów 0, 1 oraz 2 są wartościami względnymi zależnymi od orientacji telefonu. Kiedy telefon zmieni swoją orientację z pionowej na poziomą na odpowiednie składowe nakładane są poprawki uwzględniające ową zmianę orientacji telefonu.
Kolejne elementy czyli 3, 4, oraz 5 są odpowiednikami elementów 0,1 oraz 2 z tym że nie uwzględniającymi zmiany orientacji ekranu przez telefon.
Mam nadzieję że pomoże wam to zrozumieć jak faktycznie to działa w waszych telefonach, zamiast gdybać.
Źródło: SensorEvent | Android Developers