我看到我可以从设备中检索CMAttitude,从中我可以读取我需要的3个值(俯仰,滚动和偏航)。 据我了解,这个CMAttitude对象由CoreMotion管理,CoreMotion是一个传感器融合管理器,用于计算罗盘,陀螺仪和加速度计的正确结果(在Android上它是SensorManager类)。
所以我的问题是:
这些值(俯仰,滚转和偏航)是否相对于磁北和重力?
如果以上是正确的,我该如何修改它以便给我相对于地理北方的结果?
如果设备(如iPhone 3GS)没有陀螺仪,我是否必须告诉管理员,或者我可以告诉它根据设备的传感器给我设备的态度(< em> acc + gyro + compas OR acc + compas )
答案 0 :(得分:6)
iOS 5.0简化了此任务。 CMMotion经理有新方法:
- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame
作为参考框架,您可以使用以下值:
如果您想使用较旧的iOS,请务必使用当前用户位置自行校准。
尝试结帐此资源:
3。 如果设备没有陀螺仪,CMMotionManger的deviceMotionAvailable属性将为“NO”(它相当于gyroAvailable属性),并且您无法使用设备运动获得态度。您唯一能做的就是直接读取加速度计和磁力计数据。