我正在尝试使用安卓手机的加速度计和磁场传感器编写一个指南针程序,现在我想知道如何获得正确的角度。
我读取"accele"和"magne"中加速度计和磁场传感器的值。为了获取角度,我执行以下操作:
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返回的方位角到底是什么,我如何将其转换为角度?