私はAndroidの重力センサーと磁場センサーを使用して、SensorManager.getRotationMatrixとSensorManager.getOrientationを介して向きを計算しています。これにより、方位角、ピッチ、および方向の数値がわかります。デバイスがテーブルの上に平らに置かれているとき、結果は賢明に見えます。
ただし、マニフェストで縦向きと横向きの切り替えを無効にしているため、getWindowManager()。getDefaultDisplay()。getRotation()は常にゼロです。デバイスを90度回転させて垂直に立てると、問題が発生します。数字がかなり間違っているように見えることもありますが、これはジンバルロックに関連していることに気づきました。ただし、他のアプリにはこの問題はないようです。たとえば、自分のアプリを2つの無料のセンサーテストアプリ(Sensor Tester(Dicotomica)とSensor Monitoring(Rのソフトウェア))と比較しました。デバイスが平らな場合、私のアプリはこれらのアプリに同意しますが、デバイスを垂直位置に回転させると、大きな違いが生じる可能性があります。2つのアプリは互いに一致しているようですが、