我想知道如何使用 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/