2011-04-05 20 views
10

Witam Chcę wyświetlić pozycję zawodnika i czas trwania gracza w prostym formacie daty. to jest. 00:00:01/00:00:06. Pierwsza część to aktualna pozycja gracza, a druga część to czas trwania. Użyłem SimpleDateFormat do wypróbowania wyświetlania czasu trwania i pozycji w tym formacie, ale pokazuje mi to wynik jako 05:30:00/05:30:06.Jak poprawnie wyświetlić pozycję/czas trwania MediaPlayera?

Oto kod używam:

time1 = new SimpleDateFormat("HH:mm:ss"); 
currentTime.setText("" + time1.format(player.getCurrentPosition()); 

Jak mogę wydrukować pozycję i czas poprawnie? (Wyświetlane są godziny/minuty, których nie powinno tam być).

Uprzejmie pomóż mi, Swathi Daruri.

Odpowiedz

25

DateFormat działa dla dat, nie dla przedziałów czasu. Jeśli więc otrzymasz pozycję 1 sekundy, DateFormat interpretuje to w ten sposób, że data/czas to 1 sekunda po rozpoczęciu kalendarza (1 stycznia 1970).

trzeba by zrobić coś takiego

private String getTimeString(long millis) { 
    StringBuffer buf = new StringBuffer(); 

    int hours = (int) (millis/(1000 * 60 * 60)); 
    int minutes = (int) ((millis % (1000 * 60 * 60))/(1000 * 60)); 
    int seconds = (int) (((millis % (1000 * 60 * 60)) % (1000 * 60))/1000); 

    buf 
     .append(String.format("%02d", hours)) 
     .append(":") 
     .append(String.format("%02d", minutes)) 
     .append(":") 
     .append(String.format("%02d", seconds)); 

    return buf.toString(); 
} 

I wtedy coś zrobić jak

totalTime.setText(getTimeString(duration)); 
currentTime.setText(getTimeString(position)); 
+0

dziękuje u tak dużo .. to działało. Myślałem, że mogę zrobić to poprzez prosty format daty – user562237

+2

Musisz rzucić Integers 'int hours = (int) (millis/(1000 * 60 * 60));' –

+1

@AhmadTK Dlaczego nie edytować post? – sandalone

Powiązane problemy