我正在Android上开发震动检测,我无法处理一个问题 - 旋转手机。我的算法检测到正确的抖动,但它也会反应旋转。
看起来像这样:
//for every second
if(!alarmed) {
if(Math.abs(oldX - acceleration.x) > threshold ||
Math.abs(oldY - acceleration.y) > threshold ||
Math.abs(oldZ - acceleration.z) > threshold) {
// shake detected
}
}
oldX = acceleration.x;
oldY = acceleration.y;
oldZ = acceleration.z;
这是JavaScript,因为我用Cordova写的。
任何帮助都将不胜感激。
答案 0 :(得分:2)
几个小时后,我想出了解决方案:
我们不应将所有三个加速度维度与阈值进行比较,而应将三者的和与(修改的)阈值进行比较。它可以防止对旋转做出反应。