我正在實現一個簡單的Android應用程序,在該應用程序中我需要識別北部。在Android應用程序中重新映射座標系
所以我實現SensorEventListener
我以前是這樣的:
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR)
{
SensorManager.getRotationMatrixFromVector(mRotationMatrix, event.values);
SensorManager.remapCoordinateSystem(mRotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, orientationVals);
SensorManager.getOrientation(mRotationMatrix, orientationVals);
orientationVals[0] = (float) Math.toDegrees(orientationVals[0]);
orientationVals[1] = (float) Math.toDegrees(orientationVals[1]);
orientationVals[2] = (float) Math.toDegrees(orientationVals[2]);
tv.setText(" Yaw: "+ orientationVals[0] +"\n Pitch: "+ orientationVals[1]+"\n Roll: "+ orientationVals[2]);
}
}
的問題是代碼行
SensorManager.remapCoordinateSystem(mRotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, orientationVals);
好像不行,因爲在這兩種情況下(有或沒有此代碼行)偏航的值(方位角)取決於手機頭部的方向(讓它躺在背面)
我所期望的,你唱我的重映射,是基於手機背面(後置攝像頭)的方向改變了Yaw。
爲什麼我的重新映射不起作用?