2011-04-05 4 views
10

Hola Quiero mostrar la posición del jugador y la duración del jugador en formato de fecha simple. es decir. 00:00:01/00:00:06. La primera parte es la posición actual del jugador y la segunda parte es la duración. He usado SimpleDateFormat para intentar mostrar la duración y la posición en este formato, pero me muestra el resultado como 05:30:00/05:30:06.¿Cómo visualizo correctamente la posición/duración de un MediaPlayer?

Aquí está el código que estoy utilizando:

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

¿Cómo puedo imprimir a cabo la posición y la duración correcta? (Muestra horas/minutos que no deberían estar allí).

Amablemente ayúdenme, Swathi Daruri.

Respuesta

25

DateFormat funciona para las fechas, no para los intervalos de tiempo. Entonces, si obtiene una posición de 1 segundo, DateFormat interpreta que esto significa que la fecha/hora es 1 segundo después del comienzo del calendario (que es el 1 de enero de 1970).

Se necesitaría hacer algo como

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(); 
} 

y luego hacer algo como

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

u gracias tanto .. funcionó. Pensé que podía hacerlo a través del formato de fecha simple – user562237

+2

Necesita convertir los números enteros 'int hours = (int) (millis/(1000 * 60 * 60));' –

+1

@AhmadTK ¿Por qué no editó la publicación? – sandalone

Cuestiones relacionadas