我正在使用Android重力和磁场传感器通过SensorManager.getRotationMatrix和SensorManager.getOrientation来计算方向。这给了我方位、俯仰和定向数字。当设备平放在桌子上时,结果看起来合理。
然而,在清单文件中,我已经禁用了竖屏和横屏之间的切换,这样getWindowManager().getDefaultDisplay().getRotation()始终为零。当我将设备旋转90度以使其垂直时,我遇到了麻烦。有时数字似乎相当错误,我意识到这与陀螺锁定有关。然而,其他应用程序似乎没有这个问题。例如,我将我的应用程序与两个免费的传感器测试应用程序(Sensor Tester (Dicotomica) 和 Sensor Monitoring (R's Software))进行了比较。当设备平放时,我的应用程序与这些应用程序一致,但是当我将设备旋转到垂直位置时,可能会出现显着差异。这两个应用程序似乎彼此一致,那么它们是如何解决这个问题的?