Android 中的GameRotationVector的行为与文档 (1) 中的预期不同。Android 文档说GameRotationVector应该给出与RotationVector传感器相同的值,不同之处在于它不考虑真正的方位角(磁北)。在这种情况下,我谈论的是通过以下代码获得的方位角。
public void onSensorChanged(SensorEvent event) {
SensorManager.getRotationMatrixFromVector(rotMatrix,event.values);
SensorManager.remapCoordinateSystem(rotMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, rotMatrixRemapped);
SensorManager.getOrientation(rotMatrixRemapped, vals);
myAzimuthInRadiant = vals[0];
}
当我将设备旋转 360° 时, RotationVector传感器会给出从-pi 到 pi的值 - 一切都很好,但请看第二张图片。
在第二张图片中,您可以看到GameRotationVector给出的值从pi/2 到 pi,反之亦然。也就是说,求和 = pi是 RotationVector 范围的一半。
那么这里有什么问题呢?
(1) http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_GAME_ROTATION_VECTOR