CMMotionManager - 专门使用CMMotionManager进行标题

时间:2013-04-04 18:06:46

标签: iphone ios ipad cmmotionmanager

我已经设法使用CLLocationManager获取罗盘标题,但因为我的应用已经使用CMMotionManager,我想使用专门的CMMotionManager测量标题。

与所有Apple模糊文档一样,您必须猜测如何使用他们的API。

我试图用它来衡量标题

[self.motionManager setMagnetometerUpdateInterval:1.0/30.0]; //30 Hz

[self.motionManager startMagnetometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
    CMMagneticField compass = magnetometerData.magneticField;
    NSLog(@"x: %f  y:%f  z:%f", compass.x, compass.y, compass.z);
}];

问题是这个块只运行几秒钟然后停止运行。

是否有任何关于如何使用CMMotionManager专门测量航向的示例?

感谢。

3 个答案:

答案 0 :(得分:1)

显然,最好的方法是使用CoreLocation,直到Apple创建合适的文档。

答案 1 :(得分:0)

如果没有实际尝试此操作,我建议使用[NSOperationQueue mainQueue]而不是currentQueue。通常,您只从操作中调用currentQueue以获取对启动它的队列的引用。

答案 2 :(得分:0)

我建议您致电start...UpdatesToQueue:withHandler:。这需要使用后台线程,并且管理起来非常棘手。你可能只是在主线程上解决所有问题。这是一项先进的技术,你不需要它。

相反,只需start,然后使用NSTimer或类似方法重复轮询CMMotionManager。