3

我看到我可以从设备中检索CMAttitude,并从中读取我需要的 3 个值(俯仰、滚动和偏航)。据我了解,这个 CMAttitude 对象由 CoreMotion 管理,CoreMotion 是一个传感器融合管理器,用于计算来自指南针、陀螺仪和加速度计的正确结果(在 Android 上是 SensorManager 类)。

所以我的问题是:

  1. 这些值(俯仰、滚动和偏航)是否与磁北和重力相关?

  2. 如果以上是正确的,我该如何修改它以给出相对于地理北方的结果?

  3. 如果设备(例如 iPhone 3GS)没有陀螺仪,我是否必须告诉经理或者我可以告诉它根据它拥有的传感器给我设备的姿态(acc + gyro + compas acc + 指南针

4

1 回答 1

6
  1. 和 2:

iOS 5.0 简化了这项任务。CMMotion 管理器有新方法:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

作为参考框架,您可以使用以下值:

  • CMAttitudeReferenceFrameXMagneticNorthZVertical 表示磁北,
  • CMAttitudeReferenceFrameXTrueNorthZVertical 表示真北。

如果您想使用较旧的 iOS 执行此操作,恐怕您必须使用当前用户位置自行校准。

尝试结帐此资源:

3. 如果设备没有陀螺仪,CMMotionManger 的 deviceMotionAvailable 属性将为“NO”(相当于 gyroAvailable 属性),无法通过设备运动获取姿态。您唯一能做的就是直接读取加速度计和磁力计数据。

于 2012-02-16T16:17:29.783 回答