Я пытаюсь обнаружить правильные тряски телефона, это ниже кода, но его не правильно работать, например, часто, когда я трясти телефон налево я получить RIGHT
или получить оба RIGHT
и LEFT
:Android обнаружить правильный телефон трясти
@Override
public void onSensorChanged(int sensor, float[] values) {
if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
long curTime = System.currentTimeMillis();
// only allow one update every 100ms.
if ((curTime - lastUpdate) > 200) {
long diffTime = (curTime - lastUpdate);
lastUpdate = curTime;
x = values[SensorManager.DATA_X];
y = values[SensorManager.DATA_Y];
z = values[SensorManager.DATA_Z];
if (Round(x, 4) > 10.0000) {
Toast.makeText(this, "Right shake detected", Toast.LENGTH_SHORT).show();
} else if (Round(x, 4) < -10.0000) {
Toast.makeText(this, "Left shake detected", Toast.LENGTH_SHORT).show();
}
last_x = x;
last_y = y;
last_z = z;
}
}
}
POST ОБНОВЛЕНО:
if (Utils.Round(x, 4) > 8.0000) {
//left
} else if (Utils.Round(x, 4) < -8.0000) {
//right
} else if (z > 9 && z < 10)
//down
else if (z > -10 && z < -9)
//up
ОК, позвольте мне изменить свой код и проверить, что –
Мне очень жаль, сэр. после того, как все больше и больше меняют код, я ошибаюсь, не могли бы вы исправить мой код? Я обновил сообщение, спасибо –