2012-05-17 13 views
6

Ho un servizio di media player che riproduce uno streaming internet, ma ho problemi su come visualizzare nel mio xml la percentuale di buffering, al momento sto solo visualizzando un messaggio poiché tutti i modi in cui ho provato mi hanno dato un numero lungo statico. Ecco il codice dal mio servizio giocatore:Android, Come visualizzare il buffering% da onBufferingUpdate

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

Come si può dire EstadoRadio è una vista di testo nel mio xml che sta lavorando da attività mymain dove voglio visualizzare il buffer% del flusso. Grazie per il vostro aiuto.

EDIT: ho visto casi più intimi in cui viene utilizzata 'cento' dal onBufferingUpdate (MediaPlayer mp, int per cento), qualcosa di simile:

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

ma nel mio caso per cento è sempre -2147483648, ho non so perché, o perché non cambia o l'aggiornamento, ecco un po 'dal mio registro gatto:

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 

risposta

3

il numero che state vedendo è il valore minimo di un po' int firmato 32. Vorrei fare un'ipotesi e dire che Android non è in grado di restituire una percentuale e in effetti ti sta dando dati spazzatura.

mi piacerebbe sostituire il vostro flusso di Internet con un URL mp3 a distanza per vedere se il buffering ottiene un valore reale di nuovo

EDIT (Dato che questo confermerebbe il resto del codice non è da biasimare.): La documentazione Android per quanto riguarda l'OnBufferingUpdateListener spiega il caso d'uso per un download progressivo di http, non un flusso internet senza fine.

Non credo che la possibilità di visualizzare una percentuale di buffering sia disponibile utilizzando i listener interni in Android. Senza spaccare la sorgente Android per scoprire a che punto la classe MediaPlayer decide di iniziare a riprodurre il tuo stream (e se addirittura forniscono una richiamata), dubito che questa domanda verrà risolta.

Sarei comunque interessato a una soluzione/soluzione se qualcuno può fornirne uno.

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

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

+0

è così c'è un modo per ottenere un buferring% da un flusso dal vivo? – zvzej

+0

@zvzej Ho aggiornato la mia risposta con ciò che ritengo sia corretto. Vorrei tuttavia collegare questo bug report [bug 832] (http://code.google.com/p/android/issues/detail?id=832). Mi dispiace, non posso fornire una soluzione reale. – stevokk

Problemi correlati