2012-09-18 11 views
6

Ho utilizzato un esempio di timer per il conto alla rovescia per android per creare un conto alla rovescia per una certa data.tempo timer conto alla rovescia per android

Time TimerSet = new Time(); 
     TimerSet.set(20, 8, 2012); //day month year 
     TimerSet.normalize(true); 
     long millis = TimerSet.toMillis(true); 

     Time TimeNow = new Time(); 
     TimeNow.setToNow(); // set the date to Current Time 
     TimeNow.normalize(true); 
     long millis2 = TimeNow.toMillis(true); 

     long millisset = millis - millis2; //subtract current from future to set the time remaining 

     final int smillis = (int) (millis); //convert long to integer to display conversion results 
     final int smillis2 = (int) (millis2); 

     new CountDownTimer(millisset, 1000) { 
      public void onTick(long millisUntilFinished) { 

       // decompose difference into days, hours, minutes and seconds 
       int weeks = (int) ((millisUntilFinished/1000)/
         604800); 
       int days = (int) ((millisUntilFinished/1000)/86400); 
       int hours = (int) (((millisUntilFinished/1000) - (days 
         * 86400))/3600); 
       int minutes = (int) (((millisUntilFinished/1000) - ((days 
         * 86400) + (hours * 3600)))/60); 
       int seconds = (int) ((millisUntilFinished/1000) % 60); 
       int millicn = (int) (millisUntilFinished/1000); 



       w.setText(" " +weeks); 
       d.setText(" " +days); 
       h.setText(" " +hours); 
       m.setText(" " +minutes); 
       s.setText(" " +seconds); 
       mTextField.setText(smillis + " " + smillis2 + " " + 
         millicn + "Time remaining: " +weeks +"weeks " +days + " days " + hours 
         + " hours: " + minutes+ " minutes: " 
         + seconds + " seconds: "); 

      } 

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

mi chiedevo come posso impostare l'ora e la data? attualmente è in ritardo fino a mezzanotte. Mi piacerebbe che fosse 15:00

grazie in anticipo

+0

hi. scusate la confusione. l'app countdown al 20 settembre 2012 00:00 (quindi mezzanotte (00:00) del 20 settembre 2012 mTextField dirà fatto –

+0

ho provato a cambiarli ma il conto alla rovescia si ferma –

+0

millis 2 è la data e l'ora corrente, millis è il data corrente.Se io cambio millis, si arresta il conto alla rovescia –

risposta

6

Qui è il problema:

timerSet.set(20, 8, 2012); //day month year 

Imposta la data futura, ma non il tempo futuro del giorno (invece, imposta booleano allDay su true), per cui il valore predefinito è 00:00.

Dal android API:

set(int second, int minute, int hour, int monthDay, int month, int year) 

in modo da provare

timerSet.set(0,0,15,20,8,2012) 

per 15:00, 20 agosto 2012.

+0

aha. Stavo andando male, avevo timerSet.set (15,00,00,20,8,2012) –