我正在开发一个使用iPhone磁力计和加速度计的应用程序。我的问题我已经注意到,当设备向后倾斜时,它会遇到标题值反转的临界点(iOS似乎认为设备已经旋转)。起初我认为检查设备的方向何时发生变化([UIDevice currentDevice].orientation
)会很简单,但*标题值在发送设备方向更改通知之前(至少倾斜15度)显着反转。
如果此描述令人困惑,我道歉,但您可以通过以下实验轻松查看我的问题:
在iPhone上打开指南针应用程序并校准指南针。校准完毕后,以纵向模式将iPhone垂直向上和向下,屏幕下方的主页底部。现在慢慢向后倾斜手机(因此相机更直接朝上)。你会发现指南针突然转向它的方向。不幸的是,这一点与操作系统识别设备方向变化的点无关。
我的问题是我需要继续在原始方向上注册标题,因为我实际上没有转动设备,它显然仍指向前方(在原始方向上)。我已经在这个临界点测试了设备的角度,并且通过这种方式取得了一些成功的修正,但由于加速度计产生的噪音,我在临界角附近得到了非常抖动的结果。我还尝试了位置管理器的headingOrientation
属性但没有成功。如果有人找到了这种情况的解决方案,我将不胜感激!
干杯。
答案 0 :(得分:0)
有关您为什么需要这一点的更多背景信息将有助于提供更好的答案。 在进行您描述的移动时,设备的顶部实际上指向相反的方向 为了弥补这一点,您需要添加一个过滤器,并根据设备角度和航向的先前状态确定设备角度和航向的新状态。知道设备角度接近临界阶段并且知道航向突然反转180°应该能够区分这种情况。您可以将陀螺仪信息添加到滤波器以使用设备旋转速率并确定设备正在临界角移动。