2012-05-17 2 views
6

J'ai un service Media Player qui lit un flux Internet, mais j'ai des problèmes sur la façon d'afficher dans mon xml le pourcentage de mise en mémoire tampon, au moment où je ne fais que afficher un message depuis toutes les façons que j'ai essayé il m'a donné un nombre statique long. Voici le code de mon service de joueur:Android, Comment afficher la mise en mémoire tampon% de onBufferingUpdate

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

que vous pouvez dire EstadoRadio est une vue de texte dans mon xml qui fonctionne d'une activité mymain où je veux afficher le% de mémoire tampon du flux. Merci pour votre aide.

EDIT: J'ai vu des cas les plus intimes où 'pour cent' de l'est utilisé onBufferingUpdate (MediaPlayer mp, de pour cent int), quelque chose comme ceci:

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

mais dans mon pour cent de cas est toujours -2147483648, je ne sais pas pourquoi, ou pourquoi il ne change pas ou mise à jour, voici un peu de mon chat journal:

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 

Répondre

3

le numéro que vous voyez est la valeur minimale d'un 32 bits signé int. Je devrais prendre une supposition et dire que Android est incapable de retourner un pourcentage et vous donne en fait des données de corbeille.

Je remplacerai votre flux Internet avec une URL mp3 à distance pour voir si en mémoire tampon obtient une valeur réelle retour

EDIT (Comme cela confirmerait le reste de votre code n'est pas à blâmer.): La documentation Android en ce qui concerne le OnBufferingUpdateListener explique le cas d'utilisation pour un téléchargement http progressif, pas un flux Internet sans fin.

Je ne crois pas que la capacité d'afficher un pourcentage de mise en mémoire tampon est disponible en utilisant les écouteurs intégrés dans Android. Sans ouvrir la source Android pour trouver à quel point la classe MediaPlayer décide de commencer à lire votre flux (et même si elle fournit un callback), je doute que cette question soit résolue.

Je serais cependant intéressé par une solution/solution de contournement si quelqu'un peut en fournir un.

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

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

+0

donc est-il un moyen d'obtenir un buferring% d'un flux en direct? – zvzej

+0

@zvzej J'ai mis à jour ma réponse avec ce que je crois être correct. Je voudrais cependant lier ce rapport de bug [bug 832] (http://code.google.com/p/android/issues/detail?id=832). Désolé, je ne peux pas fournir une solution réelle. – stevokk

Questions connexes