在CMCalibratedMagneticField 没有更新之前已经提出了这个问题, 但没有得到真正的回答。我对这个很迷茫。
我使用了一个简单的公式,但 field.field.x、y、z 始终为零。
if (motionManager.deviceMotionAvailable)
{
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:
^(CMDeviceMotion *motionData, NSError *error) {
CMCalibratedMagneticField field = motionData.magneticField;
NSLog(@"x: %f y:%f z:%f", field.field.x
, field.field.y
, field.field.z);
}];
}
样本输出为
2013-07-14 22:18:27.865 TestApp[6678:907] x: 0.000000 y:0.000000 z:0.000000
2013-07-14 22:18:27.869 TestApp[6678:907] x: 0.000000 y:0.000000 z:0.000000
2013-07-14 22:18:27.879 TestApp[6678:907] x: 0.000000 y:0.000000 z:0.000000
我很确定问题不在于前面的答案所建议的电话:我正在为相当现代的 4S 编码。我有 CoreMotion、CoreLocation 和 CoreData 框架——也许有一个我不知道我需要在实现中导入的头文件?目前我似乎只需要
#import <tgmath.h>
但那是其他东西。
任何帮助,将不胜感激!
蒂姆·雷德菲尔德