我发现我可以从设备中检索CMAttitude,并从中读取我需要的3个值(俯仰、滚转和偏航)。据我所知,这个CMAttitude对象由CoreMotion管理,它是一个传感器融合管理器,用于计算指南针、陀螺仪和加速度计的正确结果(在Android上,它是SensorManager类)。
所以我的问题是:
-
这些值(俯仰、滚转和偏航)是相对于磁北和重力的吗?
-
如果上面是正确的,我如何修改它以给出相对于地理北方的结果?
-
如果一台设备(如iPhone 3GS)没有陀螺仪,我是否必须告诉它给经理,或者我是否可以告诉它根据它拥有的传感器(acc+gyro+compas或acc+compas)
- 和2:
iOS 5.0简化了此任务。CMMotion管理器有了新方法:
- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame
作为参考框架,您可以使用以下值:
- CM态度参考框架X磁北Z磁北垂直
- CM态度参考框架XTrueNorthZ正北垂直
如果你想在旧版iOS上做到这一点,恐怕你必须使用当前用户位置自行校准。
尝试签出此资源:
- "核心运动的新功能"WWDC 2011视频
- "iOS 4中的传感设备运动"WWDC 2010视频
3。如果设备没有陀螺仪,则CMMotionManger的deviceMotionAvailable属性将为"no"(相当于gyroAvailable属性),并且无法使用设备运动获取姿态。你唯一能做的就是直接读取加速度计和磁力计的数据。