回転ベクタとオリエンテーションベクタの両方に対してリスナを実装しましたが、減価償却されているので両方をテストしたいと思います。TYPE_ROTATION_VECTOR、TYPE_ORIENTATION偏差のある異なる結果を返す
Iは、回転ベクトルが推奨融合センサ&であるが、それに応じてNORTH(値[0] getOrientation(rotationMatrix、値によって返された)0軸受geaving)が姿勢センサから北に一致しない知っています。 私はまた、プレイストアのさまざまなアプリから集計しました。向きセンサー値は、もっと近くにあるようです。
また何回私の方位値[0] Rotation_Vectorから次いでgetOrientationだけ【アップ撮影と-180
180 PS「getRotationMatrix(フロート[] R、フロート[] I、フロートの間の振動を保ちます] gravity、float [] geomagnetic)」は回転ベクトルと同じ結果を返します。
public final void onSensorChanged(SensorEvent event)
{
float rotationMatrix[];
switch(event.sensor.getType())
{
.
.
.
case Sensor.TYPE_ROTATION_VECTOR:
rotationMatrix=new float[16];
mSensorManager.getRotationMatrixFromVector(rotationMatrix,event.values);
determineOrientation(rotationMatrix);
break;
case Sensor.TYPE_ORIENTATION:
sensorZValue.setText(""+event.values[0]); //rotation about geographical z axis
sensorXValue.setText(""+event.values[1]); //rotation about geographical x axis
sensorYValue.setText(""+event.values[2]); //rotation about geographical y axis
}//switch case ends
}
private void determineOrientation(float[] rotationMatrix)
{
float[] orientationValues = new float[3];
SensorManager.getOrientation(rotationMatrix, orientationValues);
double azimuth = Math.toDegrees(orientationValues[0]);
double pitch = Math.toDegrees(orientationValues[1]);
double roll = Math.toDegrees(orientationValues[2]);
sensorZValue.setText(String.valueOf(azimuth)); //rotation about geographical z axis
sensorXValue.setText(String.valueOf(pitch)); //rotation about geographical x axis
sensorYValue.setText(String.valueOf(roll)); //rotation about geographical y axis
}
私はにしたいのでそれは私の最初の実装だった北を指している携帯電話のY軸とベクトルの間の角度を決定します。 お勧めします。
アンドロイドのドキュメントの値[1]によると、北を指しています。だからピッチはノースリームで、アジマスではない:-) –