如何在Swift中获取iPhone的当前音高,偏航和摇摆?

时间:2017-12-12 10:42:34

标签: ios swift gyroscope core-motion

我希望获得相对于基本位置的iPhone设备的当前音高,偏航和滚动。很像Compass应用程序中的内容。我在网上找到的大部分内容都是关于在结果中检测更改,而我正在寻找相对于基本位置的绝对位置,基本位置(pitch: 0, roll: 0, yaw: 0)是这个位置:

任何人都可以建议我应该怎样做才能得到这个?我需要这一次性,基本上是函数调用的结果。

1 个答案:

答案 0 :(得分:2)

设备不会持续跟踪方向。您的应用需要表明它需要此数据(通过Info.plist文件)并开始监控,然后才能访问它。

可以通过CMMotionManager类的deviceMotion属性访问该信息。它是可选的,表示如果设备不支持此功能,或者您没有事先开始监控数据,则为零。

您需要为startDeviceMotionUpdates(using:)指定一个可用于此目的的参考框架,以便获得正确的值。你想要的可能是.xTrueNorthZVertical。请注意,此文档说明:

  

请注意,使用此参考框架可能需要设备移动来校准磁力计。它还需要该位置才能计算出磁性和真北之间的差异。

这可能意味着您无法自发地阅读它。您可能需要在应用程序启动时或用户进入您需要的视图时开始监控,并在校准完成后检查该值,并且用户需要执行某些操作。