我正在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编写的。

任何帮助,将不胜感激。

最佳答案

几个小时后,我想出了解决方案:

而不是将所有三个加速度尺寸与阈值进行比较,我们应该将所有三个加速度的总和与(修改后的)阈值进行比较。它可以防止对旋转产生反应。

10-08 07:01