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());
}});
}
}
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
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;
}
});
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With