2016-08-03 6 views
3

廃止されたAndroidセンサーSensor.TYPE_ORIENTATIONを置き換えるソリューションを探しています。廃止予定のSensor.TYPE_ORIENTATIONの同等の置き換え

ほとんど報告された溶液は、SensorManager#getRotationMatrixを用いて回転行列を計算し、SensorManager#getOrientationを用いてオイラー角を得、次いで、Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELDを組み合わせることです。 別報告溶液は、回転行列で終わるSensor.TYPE_ROTATION_VECTORを使用することであり、オイラーは、モバイルデバイスを回転させたときSensorManager#getOrientation

残念ながらそれらはTYPE_ORIENTATIONに全く異なる振る舞いを使用して角度。お使いの携帯電話が机の上に横たわっている間に両方のタイプを試してから、90°回転させてください(スクリーンがあなたに直面しています)。 TYPE_ORIENTATIONで取得された次数値はかなり安定しています(正確ではありませんが、まったく問題ありません)が、方位角とロール角の計算されたオイラー角は実際には野生です(Gimbal lockという問題の原因)。 TYPE_ORIENTATIONのすべての値(ヨー、ピッチ、ロール)は、ジンバルロックの問題がなくても、ある種の「投影された」程度のようです。

償却されたTYPE_ORIENTATIONセンサー(多分回転行列から)を使用せずに同様の度合い(ヨー、ロール、ピッチ)を得る方法はありますか? TYPE_ORIENTATIONアルゴリズムは内部でどのように処理しますか?

答えて

1

azimuthgetOrientationは磁北とデバイスのy軸のワールドxy平面への投影との間の角度です。装置が90°までのとき、投影はゼロベクトルであるので、方位角はこの場合意味をなさず、任意の値とすることができる。物理的には、磁北とスカイを指すベクトルとの間の角度を求めることは理にかなっていません。 私のプロジェクトを見てくださいhttps://github.com/hoananguyen/dsensor/blob/master/dsensor/src/main/java/com/hoan/dsensor_master/DProcessedSensor.java

+0

どのように正しい向きと回転の風景/肖像画が検出されますか? –

関連する問題