¿Cómo se muestra correctamente la posición / duración de un MediaPlayer?
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 utilizado SimpleDateFormat
para intentar mostrar la duración y la posición en este formato, pero me está mostrando la salida como 05:30:00/05:30:06
.
Aquí está el código que estoy usando:
- Android estableció la última hora modificada para el archivo
- Notificación de Android Push (lento)
- Cómo dar formato al tiempo no fecha en Android o Java?
- Android - los cálculos con el tiempo transcurrido en el cronómetro
- Android 4.0 org.apache.http.conn.ConnectTimeoutException: Conectarse a ... agotado el tiempo de espera
time1 = new SimpleDateFormat("HH:mm:ss"); currentTime.setText("" + time1.format(player.getCurrentPosition());
¿Cómo puedo imprimir correctamente la posición y la duración? (Está mostrando horas / minutos que no deben estar allí).
Por favor, ayúdame, Swathi Daruri.
- ¿Cómo puedo obtener el tiempo de "red" (desde el ajuste "Automático" llamado "Usar valores proporcionados por la red"), NO el tiempo en el teléfono?
- Problema extraño con los tiempos de espera de conexión y Google Volley
- ¿Cómo cambiar el retraso del hilo de sueño / temporizador en android durante el tiempo de ejecución?
- ¿Hay una manera de cargar arbitrariamente recursos en tiempo de ejecución en Android?
- ¿Mostrando la hora actual en Android y actualizarla?
- SoundPool de Android tartamudea, retrasa, a veces no juega en absoluto
- Dibuja línea personalizada entre dos elementos en TableLayout Android
- Android: ¿Activar / desactivar un botón en Runtime?
DateFormat
funciona para las fechas, no para los intervalos de tiempo. Así que si obtiene una posición de 1 segundo, el DateFormat interpreta esto como significando que la fecha / hora es 1 segundo después del comienzo del calendario (que es el 1 de enero de 1970).
Tendrías que 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));
La forma más sencilla de hacerlo es utilizando DateUtils.formatElapsedTime(long seconds)
.
import android.text.format.DateUtils; ... currentTime.setText( DateUtils.formatElapsedTime( player.getCurrentPosition() ) ); ...
- Botón de inicio personalizado en ActionBar
- Android: escucha el mensaje de difusión instalado / actualizado de la aplicación