私は、加速度計と磁場センサーを使用してAndroid搭載のコンパスをプログラミングしようとしていますが、コンパスの正しい角度を取得する方法は不思議です。Androidのコンパス
私は加速度センサーと磁界センサーの値をそれぞれ "accele"と "magne"で読みました。角度を取得するには、私は次の手順を実行します。
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, accele, magne);
if(success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimuth = orientation[0]; // contains azimuth, pitch, roll
....
その後、私は私の針を入れて回転行列を使用します。
今rotation.setRotate(azimuth, compass.getWidth()/2, compass.getHeight()/2);
canvas.drawBitmap(needle, rotation, null);
、getOrientationのドキュメントは、その方向性を述べている[0] z軸回りの回転でなければなりません。 TYPE_ORIENTATIONのドキュメントには、 「方位、磁北方向とy軸の間の角度、z軸(0〜359)、0 =北、90 =東、180 =南、270 =西」と記載されています。
私の方位角は0と359の間ではなく、むしろ-2から2の間です。getOrientationの方位角はどういうもので、どのように角度に変換できますか?
ありがとう:)最後のif文は正確に何ですか? – user1809923
Math.toDegrees()は、-PIと+ PIラジアンの角度から-180と180の間の角度を与えます。これはすべてを正の方向に向けるだけです。 – rgrocha
これは正しい答えです。 –