检测手机的移动速度

时间:2016-02-19 07:04:11

标签: android accelerometer motion

我需要检查手机在拍摄一系列图像时是否移动得太快(例如Google相机中的全景选项)。

我试过这个:

public void onSensorChanged(SensorEvent event) {
    float x = event.values[0];
    float y = event.values[1];
    float z = event.values[2];

    //System.out.println("X: "+ x + ", Y: " +y);

    if (!mInitialized) {
        mLastX = x;
        mLastY = y;
        mLastZ = z;
        mInitialized = true;
    }else{
        float deltaX = Math.abs(mLastX - x);
        float deltaY = Math.abs(mLastY - y);
        float deltaZ = Math.abs(mLastZ - z);
        if (deltaX < NOISE) deltaX = (float)0.0;
        if (deltaY < NOISE) deltaY = (float)0.0;
        if (deltaZ < NOISE) deltaZ = (float)0.0;
        mLastX = x;
        mLastY = y;
        mLastZ = z;

        if (deltaX > deltaY) {
            //Log.e("TEST","HORIZONTAL "+deltaX + " :X, " +deltaY +" :Y");
            //horizontal
        } else if (deltaY > deltaX) {
            //vertical
           // didShake = true;
           //Log.e("TEST","TOO MUCH "+deltaX + " :X, " +deltaY +" :Y");
        } else {

        }
    }
}

NOISE是一个阈值,我一直在试验。

现在,只有在出现突然的混蛋时才会触发(从摇动监听器教程复制)。这不是我想要的。如果我在没有突然混蛋的情况下移动手机太快,那么这不会被触发。

我已经完成了这个:

finding speed of device movement

这让我想到了这个:

http://maephv.blogspot.in/2011/10/android-computing-speed-and-distance.html

但这看起来像GPS这样的设备的计算速度。我只需要检测手机是否正在快速挥动。

0 个答案:

没有答案