MediaPlayer.seekTo () ne fonctionne pas pour la position non tamponnée
J'utilise media player pour la lecture d'un seul titre en mp3 à partir du réseau. Source de données est une URL HTTP.
Imaginons que nous avons suivantes état de lecture.
Chanson durée: 1:00
Les progrès en cours: 0:10
Actuel de mise en mémoire tampon des progrès 0:30
Disons que je veux sauter une partie de la chanson et de la recherche. Je le fais avec MediaPlayer.seekTo() la méthode. Si je cherche à en tampon de la position (0:20) il est effectué correctement. Mais si, je recherche un poste qui n'a pas été tamponnée (0:40) le lecteur multimédia se comporte de façon étrange. Il indique immédiatement qu'il a cherché correctement sans attendre un tampon à remplir. En fait, il continue à jouer à la même position où il était avant de chercher. À partir de maintenant MediaPlayer.getCurrentPosition() la méthode renvoie mauvaise position. Lors de la lecture touche à sa fin et OnCompletionListener.onCompletion callback est appelée la situation actuelle des médias la position du joueur est beaucoup plus élevé que de l'ensemble de la durée de la chanson.
Des idées pour résoudre ce problème?
source d'informationauteur plugmind
Vous devez vous connecter pour publier un commentaire.
C'est probablement liée à la bogue (en se référant à l'un des commentaires) et éventuellement corrigé en 2.2
http://code.google.com/p/android/issues/detail?id=4124
J'ai trouvé une solution de contournement pour ce problème:
Tout d'abord vous créer un
OnBufferingUpdateListener
:Puis dans votre seekbar événement
onProgressChanged
procédez de la manière suivante:Avec cela, vous garantie l'utilisateur ne peut pas faire glisser la barre de progression pour un tampon de poste (et aussi de vous voir ce tampon).
Il a été résolu dans Android 2.2 dans certains appareils seulement pour autant que je sais.
Cependant Android 2.2 bousille recherche du tampon posistion. Même si un poste est déjà amortie MediaPlayer envoie une requête à un serveur.