iOS如何通过CMMotionManager获取实际加速度

How to get the actual acceleration via CMMotionManager in iOS

我正在使用 startDeviceMotionUpdates() 获得 x、y 和 z 设备加速,并使用定时器读取 userAcceleration 数据结构。 Apple 文档说明

The total acceleration of the device is equal to gravity plus the acceleration the user imparts to the device.

例如,即使我猛拉 phone,我得到的值在 X 轴上最多为 5.7nnnn。现在,如果重力加速度是 9.81m/sec 的平方,5.7nnnn 的值在 m/sec 的平方中代表什么?也就是说,如何从 userAcceleration 给出的原始轴值中获取实际的 m/sec 平方值?如何理解加速和减速的区别?

CoreMotion (CM) 以 g 为单位输出加速度。因此,您需要将这些值乘以 ~9.81 m/s^2.

此外,与更传统的加速度计相比,CM 加速度读数是相反的;即,当设备静止在 table 上时,CM 在 z 轴上的测量值约为 -1.0,而传统加速度计的测量值约为 9.81 m/s^2(请注意,前一个值为负,而后者是积极的)。因此,如果将 CM 读数乘以 -9.81,您会得到直观的结果:沿轴的正值表示加速度,负值表示减速度。