2012-02-09 3 views
1

나는 시간 기반 이벤트를 크로노 미터를 사용하여 만들려고합니다. 아래의 코드는 5 초 동안 크로노 미터를 시작한 후 건배를 성공적으로 표시하지만 5/10/20 초에 건배를 표시해야합니다.onchronometerticklistener를 사용하는 if 문

if (elapsedTime == 5000 || elapsedTime == 10000)을 사용해 보았지만 ==를 사용하면 표시가되지 않습니다.

아이디어가 있으십니까? 이 같은

Chronometer.OnChronometerTickListener mChronoListener = new OnChronometerTickListener() { // listens to journey timer to initiate time based events 

    public void onChronometerTick(Chronometer arg0) { 

     long elapsedTime = SystemClock.elapsedRealtime() - arg0.getBase(); 

     if (elapsedTime > 5000) 
     { 
      Toast.makeText(SafeDrive3Activity.this, "HOUR PASSED",  Toast.LENGTH_LONG).show(); 

     } 

    } 
}; 
+0

당신의'elapsedTime'이에 따라 1000 밀리 초 정확하게 나눌 것 같지는 않다 무엇 장치는'onChronometerTick (...)'이 호출 될 때까지 지연을 초래할 수 있습니다. 환언하면, 경과 시간은 청취자에게 전화를 지연시키는 다른 상황에 따라 5001ms 또는 5020ms 일 수있다. 정확한 값에'=='를 사용하면이 경우 작동하지 않습니다. 1000으로 나눈 다음'== 5 '또는'== 10'을 사용하여 비교하십시오. 더 좋게, 1000으로 나눈 다음 결과가 모듈러스 ('%'연산자)를 사용하여 5 또는 10으로 나눌 수 있는지 확인하십시오. – Squonk

+0

네가 맞아, 고마워! – Rob

답변

0

시도 뭔가 (당신은 이후 10 초마다가는 그것을 유지하려는 경우) :

Chronometer.OnChronometerTickListener mChronoListener = new OnChronometerTickListener() { 
    // listens to journey timer to initiate time based events 
    int currentNeededTime = 5000; 
    public void onChronometerTick(Chronometer arg0) { 

     long elapsedTime = SystemClock.elapsedRealtime() - arg0.getBase(); 

     if (elapsedTime > currentNeededTime) 
     { 
      Toast.makeText(SafeDrive3Activity.this, "HOUR PASSED",  Toast.LENGTH_LONG).show(); 
      currentNeededTime += currentNeededTime == 5000 ? 5000 : 10000; 
     } 
    } 
}; 
+0

고마워이 작품 :) – Rob

+0

환상적인, 행운. –