我需要检查手机在拍摄一系列图像时是否移动得太快(例如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这样的设备的计算速度。我只需要检测手机是否正在快速挥动。