2

如何检测 iPhone 掉在地上使用UIAccelerometer?我正在使用以下委托来计算跌落检测,但它无法正常工作。

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

计算: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
        }

}
4

1 回答 1

0

我想,变量 x 到 z 以 m/s² 存储加速度

因此,设备的总加速度(以 m/s² 为单位)为sqrt (x*x + y*y + z*z)

然而,设备掉到地上的结论是错误的。任何加速度都可以达到该值。

我有两个想法如何解决这个特定问题

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

2)自由落体后,加速度会疯狂上升,具体取决于设备着陆的表面。也许你能抓住它。:)

于 2013-10-10T10:16:41.670 回答