1. 程式人生 > >關於Android方向感測器的終極解釋

關於Android方向感測器的終極解釋

關於getOrientation() 返回的三個座標的角度問題,網友用實測的方式給出了以下答案

  1. 方向感測器返回的都是角度值,以度數為單位。

  2. 第一個角度:Azimuth (degrees of rotation around the z axis).範圍 0-360度
    手機水平放置,手機頂部指向正北時該角度為0,指向正東時為90度,指向正南時為180度,指向正西時為270度

  3. 第二個角度:Pitch (degrees of rotation around the x axis).範圍 (負180——正180度)
    手機水平放置,螢幕向上,手機頂部擡起繞X軸旋轉,直到螢幕向下,角度從零變到-180。如果是手機底部擡起繞X軸旋轉,直到螢幕向下,角度從0變到180度

  4. 第三個角度:Roll (degrees of rotation around the y axis)。範圍 (負90——正90度)
    手機水平放置,螢幕向上,手機左側擡起繞Y軸旋轉,直到與水平面垂直,角度從零變到-90。如果是手機手機右側擡起繞Y軸旋轉,直到與水平面垂直,角度從零變到+90。

網友對ROLL角最不理解,也沒有一個統一簡單地理解方法,其實以上三個角統一成一句話就是:**順時間角度為正,逆時針為負。**要理解這句話,就是明白以下三點

  1. 理解手機座標系,網友有兩種座標,其中第二種是錯的,實際Android螢幕座標是統一的,即X軸指向正東,見下圖
  2. 角度時針方向的視角是旋轉軸的逆方向,即Azimuth角是Z軸的正向向原點方向看,Pitch角是X軸的正向向原點方向看,Roll角是Y軸的正向向原點方向看,理解了這一點,你就理解上面我說的順時間角度為正,逆時針為負。
  3. 這裡的角度應該是相對於世界座標的,這一點如果有誤,歡迎大家指正

正確的Android螢幕座標

錯誤的Android螢幕座標