如何使用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 :(得分:0)
我想,变量x到z存储加速度,单位为m /s²。
因此,器件的总加速度(m /s²)为 sqrt(x * x + y * y + z * z)。
然而,结论是该设备倒地是假的。任何加速度都可以达到该值。
我有2个想法如何解决这个特殊问题
1)加速度必须在给定时间内保持不变(在一定范围内)(例如从手到地面的下降时间约为0.35秒。)
2)自由落体后,加速度会急剧上升,具体取决于设备落地的表面。也许你可以抓住它。 :)