所以我正在编写一段代码,我必须在上面的 iOS 4.3 中使用加速度计和陀螺仪检测不同的运动手势。
Q1:是否有任何现有的开源代码可以实现任何运动/手势检测?
如果不
Q2:现在我想检测 iPhone 是否掉落。
到目前为止我所取得的成就: CoreMotion API 提供userAcceleration,它(afaik)是用户给予设备的加速度或设备在某个方向(x、y 或 z)的加速度,而不考虑重力所以我可以做的是:存储,比方说,之前的5-6个加速度参数值,并可以检查它们中的任何一个达到大的负值,这基本上代表突然减速。
但是这个解决方案不是很理想,我想我也需要先以某种方式检测设备的自由落体/向下运动。知道如何解决这个问题吗?
更新: 感谢 Misch 分享您的方法。我根本没有考虑完全加速。我完全按照你说的做了:
“但是,您必须测试自己,在您的情况下,“总加速度大约对应于地球加速度”和“一段时间”是什么意思。”
加速度值实际上是以 G 为单位的,所以我测试了范围为 0.9 - 1.1 的“总加速度”值。我检查了一段时间,最初我在 updateInterval 设置为 1/20.0 时检查了四个连续的值。现在我稍微放宽了连续性的条件。
这是一个示例输出:
加速= 0.090868
加速= 0.074473
加速= 0.159797
加速= 1.157513
加速= 1.224588
加速= 1.036272
加速= 0.914698
加速= 0.904093
加速= 0.941516
加速= 0.046362
加速= 0.045109
加速= 0.060045
我认为,我仍然需要继续测试和调整价值观。如果您有任何优化的想法,请分享,我知道为了帮助您,您需要查看许多自由落体加速度值的样本。现在我想:
- 将加速度值四舍五入到小数点后 3 位,并使用我正在使用的加速度范围。
- 可以检查在满足自由落体条件后,总加速度值是否突然下降。
- 你认为我引用的加速度值有点吵吗?