2017-03-16 11 views
1

현재 정지 버튼을 클릭 할 때까지 시작 버튼을 클릭 한 후 경과 된 시간이 필요한 안드로이드 응용 프로그램을 만들려고합니다. 같은 클래스의 XML 파일에 아래의 코드를 다음크로노 미터 (안드로이드)에서 값을 파싱하는 방법은 무엇입니까?

//on start timer 
public void startTimer(View view){ 
    myChronometer.setBase(SystemClock.elapsedRealtime()); 
    myChronometer.start(); 
} 

//on stop timmer 
public void stopTimer(View view){ 
    myChronometer.stop(); 
} 

:

<Chronometer 
    [...] 
    android:id="@+id/chronometer" /> 

<Button 
    android:text="Stop" 
    [...] 
    android:onClick="stopTimer"/> 

<Button 
    android:text="Start" 
    [...] 
    android:onClick="startTimer" /> 

나는 통과 할 수있는 방법이 있나요 현재 내가 자바 클래스에 다음 코드를 사용하는 타이머를 가지고 동일한 자바 클래스의 다른 메소드에 크로노 미터를 사용하여 경과 된 시간 (초)?

+0

저는 합리적인 크로노 미터 클래스에는 경과 시간을 반환하는 메서드가 있다고 확신합니다. 그 방법을 부르지 못하게하는 것은 무엇입니까? – GhostCat

+0

@GhostCat 솔직히 ... 나는 그 방법이 무엇인지 모르겠습니다 :) – Maja

+0

크로노 미터 클래스는 경과 시간을 반환하는 메서드가없는 것처럼 보입니다. – lelloman

답변

0

분명히 값 (check here)을 반환 방법이 아니라 쉽게 스스로를 계산할 수 :

SystemClock.elapsedRealtime() - myChronometer.getBase() 

당신이 크로노 미터가 당신이 좋아하는 뭔가를 할 수 중지 한 후 시간에 액세스해야하는 경우 이

private long timerTime = Long.MIN_VALUE; 

//on start timer 
public void startTimer(View view){ 
    myChronometer.setBase(SystemClock.elapsedRealtime()); 
    myChronometer.start(); 
    timerTime = Long.MIN_VALUE; 
}  

//on stop timmer 
public void stopTimer(View view){ 
    myChronometer.stop(); 
    timerTime = SystemClock.elapsedRealtime() - myChronometer.getBase(); 
} 

private long getTimerTime(){ 
    if(timerTime == Long.MIN_VALUE){ 
     return SystemClock.elapsedRealtime() - myChronometer.getBase(); 
    } 

    return timerTime; 
} 
+0

안녕하세요 @ lelloman, 정말 도움이됩니다.이 버튼을 눌렀을 때 값이 증가하는 것을 멈출 수있는 방법을 알고 계셨습니까? – Maja

+0

잘 stopTimer()에서 값을 계산하고 그것을 저장하십시오 – lelloman

+0

@ 마하 나는 그것을 받아 들일 수 및/또는 upvote 도움이된다면, 코드 샘플 답변을 업데이 트했습니다 – lelloman