2

我想知道如何使用 Core Motion 获得相对于基本方向的 iphone 方向。我认为最好的方法是使用设备相对于磁力计给出的磁场的姿态。从苹果文档中,它将态度描述为:

CMAttitude 对象表示对姿态的测量,即身体相对于给定参考系的方向。

我想知道如何使这个“给定的参考框架”成为主要方向。也许通过使用CMCalibratedMagneticField?

谁能告诉我如何做到这一点或走一条更简单的替代路线。

4

1 回答 1

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);
    }];
}
于 2013-11-13T21:29:52.517 回答