2013-10-10 50 views
2

如何检测iPhone跌落在地上使用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 
     } 

} 

回答

0

我想,变量x到z商店加速度以m /s²为单位。

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

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

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

1)加速度必须是恒定的(范围内),用于一个给定的时间(例如秋季从手到地面的时间,这将是大约0.35秒)。

2)自由落体后,加速度会疯狂地上升,这取决于设备所在的表面。也许你可以理解这一点。 :)

+0

请你可以发布任何代码或算法的理论概念? – Mani

+0

我很抱歉,我不能。我是数学老师,但在编程方面我是一个血腥的初学者:) – ksu

相关问题