2012-03-09 10 views
2

私はアンドロイドのタイマーアプリケーションに関してリンクhttp://dewful.com/?tag=basic-android-timerを見ました。それは正常に動作しています。 私は、タイマーを停止するために一時停止ボタンを追加し、停止した場所からタイマーを再開するための再生ボタンを追加する必要があります。私はその仕事を達成できますか?どのようにしてアンドロイドでタイマーを一時停止できますか?

マイコード:再開ボタンは、タイマーが再び50秒から始めていると私はそのようにしたくないクリックされた上記のコードで

long timervalue = 50000; 
CountDownTimer Counter1 = new CountDownTimer(timervalue, 1000) 
{ 
    public void onTick(final long millisUntilFinished) 
    { 
     time.setText(formatTime(millisUntilFinished)); 
     pause.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Counter1.cancel(); 
      } 
     } 
     ); 
     resume.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Counter1.start(); 
       timervalue = Long.parseLong(output); 
       System.out.println("paused timer value resumed"+timervalue); 
       Counter1.onTick(timervalue); 
      } 
     } 
     ); 
    } 
    public void onFinish() 
    { 
     Counter1.cancel(); 
    } 
}; 
public String formatTime(long millis) 
{ 
    output = "00"; 
    seconds = millis/1000; 
    seconds = seconds % 60; 
    System.out.println("seconds here"+seconds); 
    String secondsD = String.valueOf(seconds); 
    System.out.println("secondsD here"+secondsD); 
    if (seconds < 
    10)    secondsD = "0" + seconds; 
    System.out.println("secondsD here in if"+secondsD); 
    output = secondsD; 
    return output; 
} 

。それは私が一時停止した時から始まるはずです。 ..........

が助けのために本当に感謝してます......私は一週間以来、このために苦労しています...これについての私を助けてください

+0

plzは以下のリンクをチェックしてください...それはあなたがうまくいくのに役立ちます。 http://stackoverflow.com/questions/2098642/pausing-stopping-and-starting-resuming-java-timertask-continuously –

+0

リンクをありがとうございました....私はそれを通過しました。それを私のコードでどうやって適用できるのか教えてください。 – RaagaSudha

答えて

9
public class TimerActivity extends Activity 
{ 
    EditText e1; 
    MyCount counter; 
    Long s1; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     e1=(EditText)findViewById(R.id.editText1); 
     counter= new MyCount(5000,1000); 
     counter.start(); 
    } 
    public void asdf(View v) 
    { 
     switch(v.getId()) 
     { 
      case R.id.button1:   counter.cancel(); 
      break; 
      case R.id.button2:   counter= new MyCount(s1,1000); 
      counter.start(); 
     } 
    } 
    public class MyCount extends CountDownTimer 
    { 
     public MyCount(long millisInFuture, long countDownInterval) 
     { 
      super(millisInFuture, countDownInterval); 
     } 
     @Override  public void onFinish() 
     { 
      e1.setText("DONE"); 
     } 
     @Override  public void onTick(long millisUntilFinished) 
     { 
      s1=millisUntilFinished; 
      e1.setText("left:"+millisUntilFinished/1000); 
     } 
    } 
} 
形式の時間
0
public void time(long m){ 
    timer=new CountDownTimer(m, 1000) { 

      public void onTick(long millisUntilFinished) { 

       tv_timer.setText(formatTime(millisUntilFinished)); 

      } 

      public void onFinish() { 
       tv_timer.setText("done!"); 
      } 

     }.start(); 

} 

私はタイマーのためにこれを使用していると私は一時停止のためのボタンを配置しており、この

case R.id.bT_PAUSE: 
    String s_time = null; 

    try{ 
    if(Bt_pause.getText().equals("PAUSE")){ 

    s_time=tv_timer.getText().toString(); 
    timer.cancel(); 
    String[] Pause_time=s_time.split(":"); 
    m=Long.parseLong(Pause_time[0].trim()); 
    n=Long.parseLong(Pause_time[1].trim()); 
    m=(m*60)+n; 
    m=m*1000; 
    Bt_pause.setText("RESUME"); 

    }else if(Bt_pause.getText().equals("RESUME")){ 
     //min_longmillis=Long.parseLong(sss); 
     //min_longmillis=min_longmillis*1000*60; 
     //min_longmillis=m; 
     //timer.start(); 
     Toast.makeText(this,String.valueOf(m),Toast.LENGTH_SHORT).show(); 
     time(m); 
     Bt_pause.setText("PAUSE"); 
    } 
    }catch(Exception e){ 
     Toast.makeText(this,e.toString(),Toast.LENGTH_SHORT).show(); 
    } 
    break; 

を使用して、この

public String formatTime(long millis) { 
    String output = "00:00"; 
    long seconds = millis/1000; 
    long minutes = seconds/60; 

    seconds = seconds % 60; 
    minutes = minutes % 60; 

    String sec = String.valueOf(seconds); 
    String min = String.valueOf(minutes); 

    if (seconds < 10) 
     sec = "0" + seconds; 
    if (minutes < 10) 
     min= "0" + minutes; 

    output = min + " : " + sec; 
    return output; 
}//formatTime 
関連する問題