使用Swift编程iOS应用程序时,在iPhone中获取奇怪的magnetometerData

时间:2017-11-19 23:25:30

标签: ios iphone swift magnetometer

我正在编写一个从磁力计读取数据的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

1 个答案:

答案 0 :(得分:2)

magnetometerData是原始数据,未校准内部偏差以及外部性(又称金属),并且基本上没有意义。使用原始数据没有任何价值。基本上从不使用这些值的原因。

至少使用CMDeviceMotion的magneticField。更好的是,要求提供与您的实际需求密切相关的信息。如果您想知道设备的标题,请提出要求。如果你想知道设备的方向参考磁北,请问。