Ios6 如何初始化CMCalibratedMagneticField属性,使其不返回零?
这个问题以前有人问过 但它并没有得到真正的回答。我对这件事很迷茫 我用的是一个简单的公式,但field.field.x,y,z总是零Ios6 如何初始化CMCalibratedMagneticField属性,使其不返回零?,ios6,calibration,magnetometer,Ios6,Calibration,Magnetometer,这个问题以前有人问过 但它并没有得到真正的回答。我对这件事很迷茫 我用的是一个简单的公式,但field.field.x,y,z总是零 if (motionManager.deviceMotionAvailable) { [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:
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>
#导入
但这是其他的东西
任何帮助都将不胜感激
蒂姆·雷德菲尔德试试这个:
- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame
toQueue:(NSOperationQueue *)queue
withHandler:(CMDeviceMotionHandler)handler
与以下任何一项有关:
CMAttitudeReferenceFrameXArbitraryCorrectedZVertical
CMAttitudeReferenceFrameXMagneticNorthZVertical
CMAttitudeReferenceFrameXTrueNorthZVertical
但不是:
CMAttitudeReferenceFrameXArbitraryZVertical
(你错过的另一个问题是:)
如果您想了解太多有关磁强计数据的信息,请参阅我对这个问题的回答:oops--这是非常重要的,谢谢!这很有效。我看过你的另一篇帖子(内容非常广泛,信息非常丰富!),但无法提取这种语法。