Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I set the start time for a chronometer

I have an application that has a chronometer, I need to set the start time to a difference between to dates

How can I do that?

like image 429
JRivero_SWCO Avatar asked Feb 21 '23 19:02

JRivero_SWCO


1 Answers

One way of doing this is to extends the Chronometer class... something like this:

public class MyChronometer extends Chronometer {

    public int msElapsed;
    public boolean isRunning = false;

    public MyChronometer(Context context) {
        super(context);
    }

    public int getMsElapsed() {
        return msElapsed;
    }

    public void setMsElapsed(int ms) {
        setBase(getBase() - ms);
        msElapsed  = ms;
    }

    @Override
    public void start() {
        super.start();
        setBase(SystemClock.elapsedRealtime() - msElapsed);
        isRunning = true;
    }

    @Override
    public void stop() {
        super.stop();
        if(isRunning) {
            msElapsed = (int)(SystemClock.elapsedRealtime() - this.getBase());
        }
        isRunning = false;
    }
}

You can use setMsElapsed(int ms) to specify your offset. You will probably have to convert your Dates to Long and do the math from there. The class can be used in XML layout if you specify the whole package where the class resides.

like image 139
hovanessyan Avatar answered Mar 06 '23 05:03

hovanessyan