1

I'm trying to create some time based events using a chronometer. The code below is successfully displaying a toast after 5 seconds of chronometer being started however I need the toast to be displayed at 5/10/20 seconds.

I've tried using if (elapsedTime == 5000 ||elapsedTime == 10000 ) but no toast displays when I use ==.

Any ideas?

Chronometer.OnChronometerTickListener mChronoListener = new OnChronometerTickListener() { // listens to journey timer to initiate time based events

    public void onChronometerTick(Chronometer arg0) {

        long elapsedTime = SystemClock.elapsedRealtime() - arg0.getBase();

        if (elapsedTime > 5000)
        {
            Toast.makeText(SafeDrive3Activity.this, "HOUR PASSED",      Toast.LENGTH_LONG).show();

        }

    }
};  
Rob
  • 1,479
  • 5
  • 18
  • 24
  • It seems unlikely that your `elapsedTime` will be exactly divisible by 1000 milliseconds based on what the device is doing which might introduce a delay to when `onChronometerTick(...)` is called. In other words, the elapsed time may be 5001ms or 5020ms depending on other circumstances delaying the call to the listener. Using `==` on an exact value won't work in this case - divide by 1000 then compare using `== 5` or `==10`. Even better, divide by 1000 then see if the result is exactly divisible by 5 or 10 using modulus (`%` operator). – Squonk Feb 09 '12 at 15:48

1 Answers1

0

Try something like this (if you want to keep it going every 10 seconds thereafter):

Chronometer.OnChronometerTickListener mChronoListener = new OnChronometerTickListener() { 
    // listens to journey timer to initiate time based events
    int currentNeededTime = 5000;
    public void onChronometerTick(Chronometer arg0) {

        long elapsedTime = SystemClock.elapsedRealtime() - arg0.getBase();

        if (elapsedTime > currentNeededTime)
        {
            Toast.makeText(SafeDrive3Activity.this, "HOUR PASSED",      Toast.LENGTH_LONG).show();
            currentNeededTime += currentNeededTime == 5000 ? 5000 : 10000;
        }
    }
};
Brian Dupuis
  • 8,136
  • 3
  • 25
  • 29