我将手机放在木地板的同一个地方。但每次拨打以下代码段时,价值都会不断变化
if let accelerometerData = motionManager.accelerometerData {
let z:String="x:"+String(accelerometerData.acceleration.x)+" y:"+String(accelerometerData.acceleration.y)+"z"+String(accelerometerData.acceleration.z)
print("\(z)")
}
以下是我用来初始化和启动加速度计的代码
//Accelerometer
motionManager = CMMotionManager()
motionManager.startAccelerometerUpdates()
答案 0 :(得分:4)
基本上,当你只使用加速度计时,会有地球引力影响加速度计的z值。但是DeviceMotion试图通过对从传感器接收的原始数据执行某种算法来补偿重力的这种影响(即,以提供更准确的acceleration.z值)。
但是这个算法不是100%准确,这就是为什么即使你把你的设备放在像桌子一样的平面上,你也会获得一些非零值。这种不准确性的百分比非常低,但你仍然会得到不容忽视的结果。
您可能希望执行足够的试验并获得它们的平均值以补偿它。同样,这个平均值不能完全解决问题。例如,当设备移动时(并且在桌面上时不稳定),您可能会获得更多不准确的值。