我已经设法使用CLLocationManager获得罗盘标题,但因为我的应用程序已经使用了CMMotionManager,我想仅使用CMMotionManager测量标题。
像所有苹果模糊的文档一样,你必须猜测如何使用他们的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独占?
谢谢。
显然最好的方法是使用CoreLocation,直到苹果公司创建合适的文档。
在没有实际尝试的情况下,我建议使用[NSOperationQueue mainQueue]
代替currentQueue。通常,您只能在操作中调用currentQueue来获取对启动它的队列的引用。
我建议您不要呼叫start...UpdatesToQueue:withHandler:
。这需要使用后台线程,并且管理起来非常棘手。你可能只是把所有东西都放在主线程上。这是一种先进的技术,你不需要它。
相反,只是start
,然后使用NSTimer或类似的轮询CMMotionManager反复