我正在處理需要檢測加速計運動的應用程序,例如根據這些動作將手機抖動或傾斜到正確,左側,上下,並向UPnP設備發送一些密鑰。在android中檢測加速度計運動
例如,如果檢測到正確的運動增加媒體服務器的音量,反之亦然。
請幫我解決這個問題。
我試過一些例子。它左右工作正常。但我需要一個更好的解決方案。
這裏我添加了代碼。
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
lastUpdate = System.currentTimeMillis();
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float[] values = event.values;
// Movement
float x = values[0];
float y = values[1];
float z = values[2];
/*float accelationSquareRoot = (x * x + y * y + z * z)
/(SensorManager.AXIS_X * SensorManager.AXIS_X);*/
Log.d("Shakes","X: "+x+" Y: "+y+" Z: "+z);
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;
}
}
}
是你能夠解決您的問題? – moDev