Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

chronometer resume?

when I clicked start, the 'stopwatch' started to count.. I pressed pause, only the textview paused, it's not resuming, because it still running in background.. I need it to be resumed at where I've stopped..

here's my dot java code :

package com.example.chronometer2;

import com.example.chronometer.R;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;

public class ChronometerApp extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_chronometer);

       final Chronometer myChronometer = (Chronometer)findViewById(R.id.my_chronometer);
       Button buttonStart = (Button)findViewById(R.id.buttonstart);
       Button buttonStop = (Button)findViewById(R.id.buttonstop);
       Button buttonReset = (Button)findViewById(R.id.buttonreset);

       buttonStart.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myChronometer.start();
   }});

       buttonStop.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myChronometer.stop();

   }});

       buttonReset.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myChronometer.setBase(SystemClock.elapsedRealtime());

   }});

   }
}
like image 875
peace Avatar asked Jun 14 '26 05:06

peace


2 Answers

You need to define a variable which contains the elapsed time when the chronometer was stopped

timeWhenStopped = chronometer.getBase() - SystemClock.elapsedRealtime();

and then when you start again set the the timer plus the timeWhenStopped

chronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);

to reset the chronometer just use

chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.stop();
timeWhenStopped = 0;

and maybe you need to add an extra variable to define if the chronometer is running

like image 64
fabzy Avatar answered Jun 16 '26 19:06

fabzy


You're just ought to remember the time, which has gone in variable, for example, timeWhenStopped. And then, each time when you start your chronometer, you start with value not 0, but with some seconds? which you can set by method setBase. Here 3 buttons with actions Start, Pause and Restart. Good luck!

public class MainActivity extends Activity {
/** Called when the activity is first created. */
long timeWhenStopped = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Button butStart = (Button) findViewById(R.id.button1);
    final Button butStop = (Button) findViewById(R.id.button2);
    final Button butReset = (Button) findViewById(R.id.button3);

    final Chronometer Mchronometer = (Chronometer) findViewById(R.id.chronometer1);

    butStart.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {                  Mchronometer.setBase(SystemClock.elapsedRealtime()
                            +timeWhenStopped);
            Mchronometer.start();
        }
    });

    butStop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            timeWhenStopped = Mchronometer.getBase() - SystemClock.elapsedRealtime();
            Mchronometer.stop();
        }
    });

    butReset.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Mchronometer.setBase(SystemClock.elapsedRealtime());
            Mchronometer.stop();
            timeWhenStopped = 0;
        }
    });
    }
like image 21
funk Avatar answered Jun 16 '26 20:06

funk



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!