У меня есть домашняя страница, которая ссылается на 4 различных вида деятельности (страницы). Я реализовал функцию встряхивания, используя SensorEventListener
, и она отвечает правильно, но я могу использовать ее, например, только для того, чтобы открыть одно действие в данный момент: я могу сделать это либо встряхнуть один раз, чтобы открыть занятие, либо дважды встряхнуть, чтобы открыть занятие. но не оба этих if
утверждения одновременно.
Я пытался использовать операторы if и else с границами, потому что я знаю, как установить количество встряхиваний, но я не понимаю, как я могу позволить программе обнаруживать, чтобы она полностью ожидала, сколько сотрясений я делаю, прежде чем это произойдет. задача.
private final SensorEventListener sensorListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
Intent tts = new Intent(context, ttsScreen.class);
Intent stt = new Intent(context, sttScreen.class);
Intent cbb = new Intent(context, cbbScreen.class);
Intent ocr = new Intent(context, ocrScreen.class);
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
acelLast = acelValue;
acelValue = (float) Math.sqrt((double) (x*x + y*y + z*z));
float difference = acelValue - acelLast;
shake = shake * 0.9f + difference;
if(shake > 12 && shake < 24 ) {
startActivity(tts);
}
else if (shake > 24 && shake < 36) {
startActivity(stt);
}
else if (shake > 36 && shake < 48) {
startActivity(cbb);
}
else if (shake > 48) {
startActivity(ocr);
}
}
В моем onCreate
методе у меня есть следующее:
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sm.registerListener(sensorListener,sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
acelValue = SensorManager.GRAVITY_EARTH;
acelLast = SensorManager.GRAVITY_EARTH;
shake = 0.00f;
В данный момент он всегда будет открывать startActivity(tts)
. Я не уверен, какой подход мне нужен, но я подумал, может быть, таймер или что-то еще, чтобы он полностью проверял, сколько встряхиваний я делаю, прежде чем открывать занятие. Или подход if / else не является правильным способом сделать это?