У меня есть метод для определения амплитуды ниже порогового значения.
public boolean amplitude_Detection(double ampA) {
//Thresholds for amplitude acceleration
double acceAmplitudeTH = 3.0;
//Compare value with threshold
if (ampA < acceAmplitudeTH) {
return true;
}
return false;
}
Затем, в моем onSensorChanged, у меня есть оператор if, если приведенный выше код возвращает true, я хочу приостановить свой датчик на 5секунд.Через 5 секунд снова включите датчик.Тем не менее, во время моего эксперимента, бросая телефон на кровать 10 раз в том же положении.Таймер иногда срабатывает дважды, а иногда только один.Кто-нибудь знает, что происходит?
if(algo.amplitude_Detection(ampA))
{
//Pause sensors
pauseSensor();
Toast.makeText(getBaseContext(), "Pause ", Toast.LENGTH_SHORT).show();
new CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) {
((TextView)findViewById(R.id.timeCalc)).setText("Time Left: "+millisUntilFinished/1000+"\n"+ampA);
}
public void onFinish() {
((TextView)findViewById(R.id.timeCalc)).setText("Done");
resumeSensor();
}
}.start();
}
}
public void pauseSensor()
{
senManager.unregisterListener(this, sensorAccelerometer);
}
public void resumeSensor() {senManager.registerListener(this, sensorAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);}