ios - 将 CMAttitude 与 CMCalibrateMagneticField 结合使用

标签 ios iphone gyroscope core-motion

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

CMAttitude 对象表示态度的测量,即 body 相对于给定引用系的方向。

我想知道如何才能使这个“给定的引用框架”成为基本方向。也许通过使用 CMCalibrateMagneticField?

任何人都可以告诉我如何做到这一点或采取更简单的替代路线。

最佳答案

我不能 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);
    }];
}

关于ios - 将 CMAttitude 与 CMCalibrateMagneticField 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964428/

相关文章:

objective-c - 我需要使用 NSTimer 从陀螺仪 iOS 获取数据吗?

android - Cordova/Phonegap 获取设备的电话号码 (Android & iOS)

iphone - 如何确定 UINavigationController 中工具栏的高度?

ios - 静默推送通知不起作用

iphone - 什么是 FaceBook 的 URL Scheme(适用于 ios 6)

iphone - iOS UIImageView 没有动画

ios - 尝试使用实体关系对象的属性作为核心数据中的搜索条件来检索实体

应用暂停时的 iOS 通知

ios - 在 iOS 中以度数或弧度在 Y 轴上旋转