Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

stop watch logic

Tags:

android

I want to develop a simple stop watch logic in android.

On clicking a list view the timer should start and on clicking the button the timer should stop. Can anyone please guide me. Any sample code will be of great help

like image 401
Rahul Kalidindi Avatar asked Sep 17 '10 08:09

Rahul Kalidindi


People also ask

What is the working principle of stopwatch?

Digital Stopwatch Circuit Principle: This circuit is based on the principle of 2 stage counter operation, based on synchronous cascading. The idea is to display clock pulses count from 0 to 59, representing a 60 second time interval.


1 Answers

Use the Stopwatch Class (For higher precision use System.nanoTime())

Add a Start() event and Stop() event on Button Presses. You'll need to update the UI so use a Thread/Handler Combination.

This should get you started.

EDIT: Added Code. (Nice Exercise! :) )

Use the Refresh_Rate to configure how often your UI is updated.

import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;  public class Main extends Activity implements OnClickListener{      final int MSG_START_TIMER = 0;     final int MSG_STOP_TIMER = 1;     final int MSG_UPDATE_TIMER = 2;      Stopwatch timer = new Stopwatch();     final int REFRESH_RATE = 100;      Handler mHandler = new Handler()     {         @Override         public void handleMessage(Message msg) {             super.handleMessage(msg);             switch (msg.what) {             case MSG_START_TIMER:                 timer.start(); //start timer                 mHandler.sendEmptyMessage(MSG_UPDATE_TIMER);                 break;              case MSG_UPDATE_TIMER:                 tvTextView.setText(""+ timer.getElapsedTime());                 mHandler.sendEmptyMessageDelayed(MSG_UPDATE_TIMER,REFRESH_RATE); //text view is updated every second,                  break;                                  //though the timer is still running             case MSG_STOP_TIMER:                 mHandler.removeMessages(MSG_UPDATE_TIMER); // no more updates.                 timer.stop();//stop timer                 tvTextView.setText(""+ timer.getElapsedTime());                 break;              default:                 break;             }         }     };      TextView tvTextView;     Button btnStart,btnStop;      /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         tvTextView = (TextView)findViewById(R.id.TextView01);          btnStart = (Button)findViewById(R.id.Button01);         btnStop= (Button)findViewById(R.id.Button02);         btnStart.setOnClickListener(this);         btnStop.setOnClickListener(this);      }      public void onClick(View v) {         if(btnStart == v)         {             mHandler.sendEmptyMessage(MSG_START_TIMER);         }else         if(btnStop == v){             mHandler.sendEmptyMessage(MSG_STOP_TIMER);         }     } } 
like image 127
st0le Avatar answered Oct 02 '22 18:10

st0le