我正在编写一个从磁力计读取数据的iOS应用程序。当我在两个iPhone上运行应用程序时,他们正在创建奇怪的数据。
(所有数据均采用[x,y,z]表示法)iPhone 5S创建约[100,10,-100],另一部iPhone 6S创建约[150,225,-700]。当多次读取并保持手机静止时,这些值会移动大约10%,当我转动它们时,它们的变化很小。
然而,真实磁场应该是[0,-30,-30](由app测量)
为什么我会收到这些奇怪的数据? (我还测量了加速度计的数据,数据是正确的)
这是我项目的源代码:https://github.com/lxylxy123456/FGFS-Controller/
我所做的基本上就是这样
let motionManager = CMMotionManager()
motionManager.startMagnetometerUpdates()
if let magnetometerData = motionManager.magnetometerData {
mx = magnetometerData.magneticField.x
my = magnetometerData.magneticField.y
mz = magnetometerData.magneticField.z
}
Mx.text = Float(mx).description
My.text = Float(my).description
Mz.text = Float(mz).description
答案 0 :(得分:2)
magnetometerData
是原始数据,未校准内部偏差以及外部性(又称金属),并且基本上没有意义。使用原始数据没有任何价值。基本上从不使用这些值的原因。
至少使用CMDeviceMotion的magneticField
。更好的是,要求提供与您的实际需求密切相关的信息。如果您想知道设备的标题,请提出要求。如果你想知道设备的方向参考磁北,请问。