フロントカメラと min3d ライブラリを使用して拡張現実アプリケーションを開発しました。このアプリケーションは、Android 4.0.4 を実行している Samsung Galaxy Tab 10,1 (第 1 世代) で正常に動作します。
しかし、Android 4.1.1 を搭載した ASUS Transformer TF700T でこの同じアプリケーション (ランドスケープ モードのみ) をテストすると、間違った向きが返され、拡張された世界がカメラ ビューと一致しなくなります。
次のコードは、min3D に必要な方向ベクトル target_axis と up_axis を取得するために使用されます。
SensorManager.getRotationMatrix(mR, null, mLastAccelerometer, mLastMagnetometer);
SensorManager.getOrientation(mR, mOrientation);
Number3d target_axis = new Number3d( -mR[2], -mR[5], -mR[8] );
Number3d up_axis = new Number3d( mR[1], mR[4], mR[7] );
mLastAccelerometer と mLastMagnetometer は、onSensorChanged(SensorEvent イベント)から受信されます。
上記のコードがまだデバイスに依存しすぎているかどうか、誰か教えてもらえますか? SensorManager の gerOrientation 呼び出しを使用すると、このソリューションはさまざまなデバイスで機能すると思いますか?