我試圖檢測左,右,上下搖晃。我研究並找到了這個代碼。檢測加速計抖動android
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float[] values = event.values;
// Movement
float x = values[0];
float y = values[1];
float z = values[2];
long actualTime = System.currentTimeMillis();
if ((actualTime - lastUpdate) > 100)
{
long diffTime = (actualTime - lastUpdate);
lastUpdate = actualTime;
if(Round(x,4)>8.0000){
Log.d("sensor", "=====LEFT====");
}
else if(Round(x,4)<-8.0000){
Log.d("sensor", "=====RIGHT====");
}
else if(Round(z,4) < -0.0){
Log.d("sensor", "=====UP====");
}
else if(Round(y,4) < 1.0){
Log.d("sensor", "=====DOWN====");
}
float speed = Math.abs(x+y+z - last_x - last_y - last_z)/diffTime * 10000;
if (speed > SHAKE_THRESHOLD) {
//Log.d("sensor", "shake detected w/ speed: " + speed);
//Toast.makeText(this, "shake detected w/ speed: " + speed, Toast.LENGTH_SHORT).show();
}
last_x = x;
last_y = y;
last_z = z;
}
}
}
我試圖去研究它,但我有一些問題。
1.每次震動檢測後,我可以在哪裏設置延遲?我希望它在檢測到最後一次震動1秒後檢測到震動。
2.爲什麼如果我把它放在一個平坦的表面,它總是檢測到下來。
3.我無法檢測到正確的動作抖動
任何幫助和建議,將不勝感激。
謝謝你的解釋。那麼,這個代碼是正好適合我的應用程序,你能提出一個解決方案,以防止運動,它放置在平面上時?正確的運動讓我頭疼。 – ljpv14