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 關注
- 683 瀏覽
添加回答
舉報