我正在尝试使用加速度计和磁场传感器对 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 的文档说,orientation[0] 应该是围绕 z 轴的旋转。TYPE_ORIENTATION 的文档指出“方位角,磁北方向和 y 轴之间的角度,围绕 z 轴(0 到 359)。0=北,90=东,180=南,270=西”。
然而,我的方位角不在 0 到 359 之间,而是在 -2 到 2 之间。getOrientation 的方位角到底是什么?如何将其转换为角度?