我正在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编写的。
任何帮助,将不胜感激。
最佳答案
几个小时后,我想出了解决方案:
而不是将所有三个加速度尺寸与阈值进行比较,我们应该将所有三个加速度的总和与(修改后的)阈值进行比较。它可以防止对旋转产生反应。