我正在编写一个从磁力计读取数据的 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
最佳答案
magnetometerData
是原始数据,未针对内部偏差和外部性(又名金属)进行校准,并且基本上没有意义。使用原始数据没有任何好处。基本上从来没有使用这些值的理由。
至少使用 CMDeviceMotion 的 magneticField
。更好的是,询问与您的实际需求密切相关的信息。如果您想知道设备的航向,请询问。如果您想知道设备相对于磁北的方向,请提出要求。
关于ios - 使用 Swift 编写 iOS 应用程序时在 iPhone 中获取奇怪的磁力计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383128/