以编程方式检测iPhone是否落地

时间:2013-10-10 09:38:44

标签: iphone ios uiaccelerometer

如何使用UIAccelerometer检测iPhone落在地上?我正在使用以下代理来计算下降检测但它无法正常工作。

这个计算是否正确?
请建议任何其他类型的检测。

计算:currentDeviceAcceleration = sqrt(9.81 * x * x + 9.81 * y * y + 9.81 * z * z)

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{

    float x = acceleration.x;
    float y = acceleration.y;
    float z = acceleration.z;

    float currentDeviceAcceleration = sqrt(9.81*x*x + 9.81*y*y + 9.81*z*z);
        if (currentDeviceAcceleration > 8.5) {
             //Device felt on ground
        }

}

1 个答案:

答案 0 :(得分:0)

我想,变量x到z存储加速度,单位为m /s²。

因此,器件的总加速度(m /s²)为 sqrt(x * x + y * y + z * z)

然而,结论是该设备倒地是假的。任何加速度都可以达到该值。

我有2个想法如何解决这个特殊问题

1)加速度必须在给定时间内保持不变(在一定范围内)(例如从手到地面的下降时间约为0.35秒。)

2)自由落体后,加速度会急剧上升,具体取决于设备落地的表面。也许你可以抓住它。 :)