我正在开发一个同时使用 iPhone 的磁力计和加速度计的应用程序。我注意到的问题是,当设备向后倾斜时,它会达到一个临界点,在该点处方向值反转(iOS 似乎认为设备已经旋转)。起初,我认为检查设备的方向何时更改[UIDevice currentDevice].orientation
(
如果此描述令人困惑,我深表歉意,但您可以通过以下实验轻松看到我的问题:
在 iPhone 上打开指南针应用并校准指南针。校准后,在纵向模式下将 iPhone 竖直向上和向下握住,屏幕下方的主屏幕下方。现在慢慢向后倾斜手机(这样相机就更直接地朝上)。您将到达指南针突然反转方向的点。不幸的是,这一点与操作系统识别设备方向变化的点无关。
我的问题是我需要继续在原始方向上注册航向,因为我实际上并没有转动设备并且它显然仍然指向前方(在原始方向上)。我已经在这个临界点测试了设备的角度,并通过这种方式成功地对其进行了校正,但是由于加速度计的噪声,我在临界角附近得到了非常不稳定的结果。我还尝试了位置经理的headingOrientation
财产,但没有成功。如果有人找到解决这种情况的方法,将不胜感激!
干杯。