CountDownTimer выстрелить дважды? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть метод для определения амплитуды ниже порогового значения.

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);}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...