我正在嘗試使用accelorometer和磁場傳感器爲Android編程指南針,現在我想知道如何爲我的指南針獲得正確的角度。指南針在Android中
我讀的加速度計和磁場傳感器的值分別爲「加速」和「磁化」。要獲取的角度,我執行以下操作:
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, accele, magne);
if(success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimuth = orientation[0]; // contains azimuth, pitch, roll
....
後來,我用一個旋轉矩陣把我的針:
rotation.setRotate(azimuth, compass.getWidth()/2, compass.getHeight()/2);
canvas.drawBitmap(needle, rotation, null);
現在,getOrientation的文件說,該方向[0]應該是圍繞z軸的旋轉。 TYPE_ORIENTATION的文件指出 「方位角,磁北方向與y軸之間的角度,圍繞z軸(0至359),0 =北,90 =東,180 =南,270 =西」。
但是我的方位角不在0到359之間,而是在-2到2之間。getOrientation的方位角是什麼,我怎樣才能將它轉換成角度?
謝謝:)最後一條if語句到底是什麼? – user1809923
Math.toDegrees()將從-PI和+ PI弧度角給出-180到180之間的角度。這只是把一切放在積極的方向上。 – rgrocha
這是正確的答案。 –