私がしたいのは、電話が「自然な」向きから離れたときに、座標系を再マッピングすることです。そのため、携帯電話を横向きで使用している場合、縦向きに保持されている場合と同じ値を読み取る必要があります。
回転が に等しいかどうかを確認していますSurface.ROTATION_90
。そうであれば、座標系を再マッピングします。
私はそれを適切に行う方法をよく理解していないことを認め、少しのガイダンスを使用できます.
したがって、次の 2 つのメソッドを実行する必要があります。
SensorManager.getRotationMatrix(inR, I, grav, mag);
SensorManager.remapCoordinateSystem(inR, SensorManager.AXIS_Y,SensorManager.AXIS_MINUS_X, outR);
これらのメソッドに渡すには何が必要ですか? 新しい float 配列を作成し、orientationsensor データだけを mag フィールドに渡しましたが、機能しませんでした。そこで、加速度センサーと磁場センサーの両方を登録しました。それらの両方からgetRotatioMatrix
メソッドにデータをフィードすると、常に取得されますNullPointerException
(JavaDocには、一部の引数がnullになる可能性があると記載されていますが)。各引数にデータを渡そうとしても、NullPointerException
.
私の質問は、getRotationMatrix メソッドに渡す必要がある適切なデータは何ですか?