2017-08-05 5 views
0

現在コンパニオンアプリを開発中です。これまでのところとても良い、私はコンパスが働いている。私は、TYPE_MAGNETIC_FIELDと組み合わせたTYPE_ACCELEROMETERを使用するよりはるかに安定しているので、TYPE_ROTATION_VECTORを使用しています。これは私の方位角を計算するコードです:Androidセンサー:Compass

SensorManager.getRotationMatrixFromVector(rotationMatrix, sensorEvent.values); 
// original values are within [-180,180] 
azimuth = (float) (Math.toDegrees(SensorManager.getOrientation(rotationMatrix, orientation)[0]) + 360) % 360; 

デバイスがテーブルに平らに置かれている場合、結果は正しいです。私の携帯電話を持ち上げて、立っている(画面が今私に面している)場合、私は間違った結果を得る。私の軸は変わったからだと思います。これを正しく検出して処理するにはどうすればよいですか?ここ

答えて

0

ように多くのコードスニペットとスレッドは、我々が軸のいくつかの再マッピングを必要とする、示唆...

SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z, remapped); 

私はこれを行う場合は、チルトはもう方位に影響を与えません。しかし、ピッチ(携帯電話の左側または右側を持ち上げる)は方位角を変え、なぜ私は本当に理由を理解できません。

関連する問題