我看到我可以检索 cmattitude 从一个设备中,我可以读取所需的3个值(俯仰,滚动和偏航)。据我了解,这种cmattitude对象是由Coremotion管理的,Coremotion是一个传感器融合管理器,用于将Compass,Gyro和加速度计的正确结果一起计算(在Android上,它是Sensormanager类)。

所以我的问题是:

  1. 这些值(螺距,滚动和偏航)相对于磁性北部和重力吗?

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

  3. 如果设备(例如iPhone 3GS)没有陀螺仪,我是否必须告诉管理器,还是可以告诉它,请根据其具有的传感器来给我设备的态度(ACC + Gyro + Compas 或者 ACC + Compas)

有帮助吗?

解决方案

  1. 和2:

iOS 5.0简化了此任务。 CMMOTION Manager有新方法:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

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

  • cmattitudeReferenceFramexmagneticNorthzvertical for Magnether North,
  • cmattituderferneframeframextruenorthzvertical for true North。

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

尝试结帐此资源:

3.如果设备没有陀螺仪,则cmmotionmanger的DeviceMotionabable属性将“否”(等效于Gyroavailable属性),并且您无法使用设备运动获得态度。您唯一可以做的就是直接读取加速度计和磁力计数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top