我想知道如何使用Core Motion获得相对于基本方向的iphone方向。我认为最好的方法是使用设备的姿态来测量磁力计给出的磁场。从应用文档中,它将态度描述为:
CMAttitude对象表示态度的度量 - 即身体相对于给定参照系的方向。
我想知道如何将这个“给定的参考框架”作为主要方向。也许通过使用CMCalibratedMagneticField?
任何人都可以告诉我该怎么做或者更方便的替代路线。
答案 0 :(得分:2)
我不是100%确定这是否是您正在寻找的,但您可以使用CMAttitudeReferenceFrameXMagneticNorthZVertical
参考框架从运动管理器获取设备姿态值,如下所示。此代码将转储设备的态度,每秒记录30次。如果在我看来,偏航值朝向东方约为0,并且向两个方向延伸180度,正值为逆时针,负值为顺时针。
- (void)startMonitoring
{
if (!self.motionManager) {
self.motionManager = [CMMotionManager new];
[self.motionManager setDeviceMotionUpdateInterval:1.0 / 30.0];
}
NSOperationQueue *currentQueue = [NSOperationQueue currentQueue];
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXMagneticNorthZVertical
toQueue:currentQueue
withHandler:^(CMDeviceMotion *motion, NSError *error) {
NSLog(@"%@",motion.attitude);
}];
}