4

我正在开发一个同时使用 iPhone 的磁力计和加速度计的应用程序。我注意到的问题是,当设备向后倾斜时,它会达到一个临界点,在该点处方向值反转(iOS 似乎认为设备已经旋转)。起初,我认为检查设备的方向何时更改[UIDevice currentDevice].orientation

如果此描述令人困惑,我深表歉意,但您可以通过以下实验轻松看到我的问题:

在 iPhone 上打开指南针应用并校准指南针。校准后,在纵向模式下将 iPhone 竖直向上和向下握住,屏幕下方的主屏幕下方。现在慢慢向后倾斜手机(这样相机就更直接地朝上)。您将到达指南针突然反转方向的点。不幸的是,这一点与操作系统识别设备方向变化的点无关。

我的问题是我需要继续在原始方向上注册航向,因为我实际上并没有转动设备并且它显然仍然指向前方(在原始方向上)。我已经在这个临界点测试了设备的角度,并通过这种方式成功地对其进行了校正,但是由于加速度计的噪声,我在临界角附近得到了非常不稳定的结果。我还尝试了位置经理的headingOrientation财产,但没有成功。如果有人找到解决这种情况的方法,将不胜感激!

干杯。

4

1 回答 1

0

关于您为什么需要它的更多背景知识将有助于提供更好的答案。在进行您描述的移动时,设备的顶部实际上指向相反的方向。
为了弥补这一点,您需要添加一个过滤器并根据设备角度和航向的先前状态确定设备角度和航向的新状态。知道设备角度接近临界相位并且知道航向突然反转 180° 应该可以让您区分这种情况。您可以将陀螺仪信息添加到过滤器以使用设备旋转速率并确定设备正在超过临界角。

于 2014-02-25T15:58:40.907 回答