2012-03-09 6 views
2

안드로이드의 타이머 응용 프로그램에 관한 링크 http://dewful.com/?tag=basic-android-timer을 보았습니다. 잘 작동합니다. 타이머를 중지하려면 일시 중지 단추를 추가하고 중지 한 곳에서 타이머를 다시 시작하려면 재생 단추를 추가해야합니다. 그 작업을 수행 할 수 있습니까?어떻게 타이머를 Android에서 일시 중지 할 수 있습니까?

내 코드 : 이력서 버튼 타이머가 다시 50sec에서 시작되고 나는 그렇게하지 않을 클릭하면 위의 코드에서

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); 
     } 
    } 
} 
,536 포맷 시간
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 
관련 문제