3 回答
TA贡献1809条经验 获得超8个赞
好吧,以为我解决了。
我没有使用Sensor.TYPE_ACCELEROMETER(或TYPE_GRAVITY)和Sensor.TYPE_MAGNETIC_FIELD,而是将Sensor.TYPE_ROTATION_VECTOR用于:
float[] roationV = new float[16];
SensorManager.getRotationMatrixFromVector(roationV, rotationVector);
float[] orientationValuesV = new float[3];
SensorManager.getOrientation(roationV, orientationValuesV);
无论手机的倾角或倾角如何,这都会返回稳定的方位角。
如果您在此处查看表1下方的Android运动传感器,它表示ROTATION传感器非常适合指南针,增强现实等。
当您知道如何时,就这么简单。...但是,我还需要对它进行一段时间的测试,以了解是否引入了错误。
TA贡献1777条经验 获得超10个赞
这是获得磁航向而不受俯仰或侧倾影响的另一种方法。
private final static double PI = Math.PI;
private final static double TWO_PI = PI*2;
case Sensor.TYPE_ROTATION_VECTOR:
float[] orientation = new float[3];
float[] rotationMatrix = new float[9];
SensorManager.getRotationMatrixFromVector(rotationMatrix, rawValues);
SensorManager.getOrientation(rotationMatrix, orientation);
float heading = mod(orientation[0] + TWO_PI,TWO_PI);//important
//do something with the heading
break;
private double mod(double a, double b){
return a % b;
}
- 3 回答
- 0 关注
- 631 浏览
添加回答
举报