2011-02-14 3 views
0

J'utilise le code ci-dessous pour lire une chanson du serveur.Contrôle de la diffusion en continu avec MediaPlayer

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.setDataSource(playUrl); 

Et j'appelle la méthode de départ de la méthode public void onPrepared(MediaPlayer mp). Mais ce qui arrive, c'est que parfois c'est de 5 à 6% de mise en tampon et commence à jouer et parfois il tamponne 40 ou 60 ou parfois 80%. Et j'utilise prepareAsync() pour préparer le joueur. Donc, y a-t-il un moyen de jouer de la chanson après 5 ou 6%?

thankx

Répondre

0

essayer la fixation d'un auditeur tampon de mise à jour et lire la vidéo après un certain pourcentage.
Modifié:

boolean mediaPrepared = false; 
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnBufferingUpdateListener(){ 
     void onPrepared(MediaPlayer mp){ 
     mediaPrepared = true; 
     } 
    }); 
mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener(){ 
    public void onBufferingUpdate(MediaPlayer mp, int percent){ 
    if (!mediaPrepared){ 
     mp.prepareAsync(); 
    } 
    if (percent > 5){ 
     mp.start(); 
    } 
    } 
}); 

Et assurez-vous de gérer correctement les valeurs du drapeau mediaPrepared.

Je ne sais pas si cela va fonctionner, mais peut-être que vous pouvez l'utiliser comme un indice. Bonne chance!

+0

J'ai essayé cela mais que se passe-t-il si le lecteur n'est pas préparé qu'il donne une erreur. – Hitendra

+0

Eh bien @Hitendra, comme je l'ai écrit, je ne suis pas sûr que cela fonctionne, mais vous pouvez simplement ajouter un autre if-block – mdelolmo

+0

nécessitent un mp.reset() avant le mp.prepareAsync() je pense ... btw pas sûr ... le flow des callbacks est assez mystirus pour moi, ça ne semble pas suivre les docs complètement ... –

Questions connexes