我一直在嘗試CMDeviceMotion,尤其是使用startDeviceMotionUpdatesUsingReferenceFrame。這在我看來不正確的磁場值。CMDeviceMotion的MagneticField屬性不正確?
例如,如果我做的:
CMDeviceMotion *manager = [[CMDeviceMotion alloc] init];
manager.deviceMotionUpdateInterval = 0.1;
[manager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryCorrectedZVertical toQueue:queue withHandler:^(CMDeviceMotion *motion, NSError *error) {
CMMagneticField fld = motion.magneticField.field;
NSLog(@"%5.1f %5.1f %5.1f", fld.x, fld.y, fld.z);
[self handleDeviceMotion:manager.deviceMotion];
}];
它示出了具有大小約50磁感應強度矢量,但幾乎與重力對齊。也就是說,當設備平躺在桌子上時,x和y接近零,z接近-50,與我如何旋轉設備無關。
這50個地球磁場的大小是正確的(根據Wikipedia應該在25到65微特斯拉之間),但是矢量的方向似乎都是錯誤的。我想知道是否:
- 這是什麼奇怪我的位置只(斯德哥爾摩,瑞典),或
- 的磁感應強度屬性顯示剩餘磁場沒有地球磁場,或
- 這是錯誤
您是否有與磁場屬性相似的經歷?
至少部分您的問題,[文檔](http://developer.apple.com/library/ios/DOCUMENTATION/CoreMotion/Reference/CMDeviceMotion_Class/Reference/Reference.html#//apple_ref/occ/ instp/CMDeviceMotion/magneticField)是你的朋友:「...給你設備附近的總磁場,沒有設備偏差......這些值反映了地球的磁場加周圍場,減去設備偏差。」 – rickster 2012-03-26 16:31:22
是的,但真實的行爲似乎不是根據文檔... – fishinear 2012-03-26 16:36:07
你的問題啓發我玩磁力計一些我自己...我試過這個代碼(不使用你的答案參考框架,因爲我對設備相關的領域方向感興趣),但我看到的只有<0,0,0>。我錯過了那些不在你節選內容的東西嗎? – rickster 2012-03-30 21:00:05