web-dev-qa-db-fra.com

Codes d'erreur Android MediaPlayer?

Je ne parviens pas à faire fonctionner un flux radio en direct sur Android. J'utilise la classe MediaPlayer et je ne fais que définir l'URL et la lire. Cela fonctionne très bien pour la plupart, mais après 5-30 minutes, il meurt inévitablement. Sur les téléphones 2.1 (plus spécifiquement un héros), je reçois cette sortie du journal

W/MediaPlayer( 7919): info/warning (1, 26)
I/MediaPlayer( 7919): Info (1,26)
I/MediaStreamService( 7919): mPlayer info code:1  extra:26
E/MediaPlayer( 7919): error (1, -11)
E/MediaPlayer( 7919): Error (1,-11)

MediaStreamService est mon service contenant la MediaPlayer la sortie provient de la OnInfoListener

Sur les téléphones 2.2, je ne reçois jamais le rappel OnInfoListener, le flux meurt. Mais je vois cela dans le logcat

E/HTTPStream( 1020): recv failed, errno = 11 (Try again)
E/HTTPDataSource( 1020): retrying connection failed

Semble fonctionner parfaitement sur mon téléphone 1.6 malgré le spam logcat constant de

E/PlayerDriver( 82): Invalid percentage value <big growing number>

Ma question est la suivante: que signifient les codes d'erreur (1, 26)? Qu'est-ce qui cause le crash de mon mediaPlayer? Le problème 2.1 est-il lié au problème 2.2? Merci Nathan

Edit: Je cherchais OnInfoListener dans le code source et trouve public static final int MEDIA_INFO_UNKNOWN = 1;. Je ne sais pas exactement ce que cela signifie, et je ne trouve pas non plus où ces extras sont conservés. Avez-vous une idée de la signification inconnue de Media? ou ce que cela représente 26 serait très apprécié.

18
schwiz

Ma question est la suivante: que signifient les codes d'erreur (1, 26)?

  • 26 signifie PVMFInfoErrorHandlingStart, juste une indication d'erreur

L'erreur est -11, ce qui signifie PVMFErrTimeout. Vous pouvez consulter les fichiers de définition ici link text

31
swcai

Peut-être que les données RDS? Définissez-vous la taille de votre mémoire tampon manuellement?

0
ykatchou

Pour lancer la lecture, start () doit être appelé. Une fois que start () a été renvoyé avec succès, l’objet MediaPlayer est à l’état Lancé. isPlaying () peut être appelé pour vérifier si l'objet MediaPlayer est à l'état Lancé.

Lorsqu'il est dans l'état Lancé, le moteur de lecteur interne appelle la méthode de rappel OnBufferingUpdateListener.onBufferingUpdate () fournie par l'utilisateur si un OnBufferingUpdateListener a été préalablement enregistré via setOnBufferingUpdateListener (OnBufferingUpdateListener). Ce rappel permet aux applications de suivre l’état de la mise en mémoire tampon lors de la diffusion audio/vidéo.

L'appel de start () n'a aucun effet sur un objet MediaPlayer qui est déjà à l'état Démarré.

Peut-être que cela fait partie de la réponse.

0
ykatchou