2012-05-17 14 views
6

Tengo un servicio de reproductor de medios que reproduce una secuencia de Internet, pero tengo problemas para mostrar en mi xml el porcentaje de almacenamiento en búfer, en este momento solo estoy mostrando un mensaje ya que todas las formas en que lo he intentado me dieron un número largo estático. Aquí está el código de mi servicio de jugador:Android, Cómo mostrar el porcentaje de almacenamiento en búfer de onBufferingUpdate

@Override 
public void onBufferingUpdate(MediaPlayer mp, int percent) { 
    setBufferPosition(percent * getMusicDuration()/100); 
    myMain.EstadoRadio.setText(" Reproductor \n Buffering... "); 
} 

como se puede deducir EstadoRadio es una vista de texto en mi xml que está trabajando de la actividad mymain donde quiero mostrar el búfer% de la corriente. Gracias por su ayuda.

EDIT: He visto casos donde se utiliza más íntimos 'ciento' de la onBufferingUpdate (pf MediaPlayer, int ciento), algo como esto:

myMain.EstadoRadio.setText(" Reproductor \n" + percent + "%"); 

pero en mi caso por ciento es siempre -2147483648, me no sé por qué, o por qué no cambiar o actualizar, aquí es un poco de mi gato registro:

05-17 13:34:37.005: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0 
05-17 13:34:37.005: V/MediaPlayer(25382): buffering -2147483648 
05-17 13:34:37.005: V/MediaPlayer(25382): callback application 
05-17 13:34:37.005: V/MediaPlayer(25382): getDuration 
05-17 13:34:37.015: V/MediaPlayer(25382): back from callback 
05-17 13:34:38.016: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0 
05-17 13:34:38.016: V/MediaPlayer(25382): buffering -2147483648 
05-17 13:34:38.016: V/MediaPlayer(25382): callback application 
05-17 13:34:38.016: V/MediaPlayer(25382): getDuration 
05-17 13:34:38.016: V/MediaPlayer(25382): back from callback 

Respuesta

3

el número que está viendo es el valor mínimo de un int con signo de 32 bits. Asumiría y diría que Android no puede devolver un porcentaje y, de hecho, le está dando datos basura.

Me reemplazar su flujo de Internet con una dirección URL mp3 remoto para ver si el búfer obtiene un valor real de volver

EDITAR (Como esto confirmaría el resto de su código no tiene la culpa.): La documentación Android con respecto a OnBufferingUpdateListener explica el caso de uso para una descarga HTTP progresiva, no una transmisión de Internet interminable.

No creo que la capacidad de mostrar un porcentaje de almacenamiento en búfer esté disponible utilizando los oyentes incorporados dentro de Android. Sin abrir la fuente de Android para encontrar en qué punto la clase MediaPlayer decide comenzar a reproducir tu transmisión (y si incluso ofrecen una devolución de llamada), dudo que esta pregunta se resuelva.

Sin embargo, estaría interesado en una solución/solución si alguien puede proporcionar una.

http://en.wikipedia.org/wiki/Integer_(computer_science)

http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html

+0

Entonces, ¿hay una manera de obtener una buferring% a partir de una transmisión en vivo? – zvzej

+0

@zvzej He actualizado mi respuesta con lo que creo que es correcto. Sin embargo, me gustaría vincular este informe de errores [error 832] (http://code.google.com/p/android/issues/detail?id=832). Lo siento, no puedo proporcionar una solución real. – stevokk

Cuestiones relacionadas