2010-10-04 5 views
18

Je suis aux prises avec l'obtention d'un flux de radio en direct pour travailler sur Android. J'utilise la classe MediaPlayer et je définis simplement l'URL et je la joue. Cela fonctionne très bien pour la plupart, mais après 5-30 minutes, il meurt inévitablement. Sur 2.1 téléphones (plus précisément un héros) je reçois cette sortie du journalCodes d'erreur Android MediaPlayer?

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 2.2 téléphones Je ne reçois pas le OnInfoListener rappel jamais, le flux meurt juste. 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 1.6 téléphone malgré le spam logcat constante de

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

Ma question est, qu'est-ce que les codes d'erreur (1, 26) signifier? Qu'est-ce qui provoque le crash de ma MediaPlayer? Est-ce que le problème 2.1 est lié au problème 2.2? Merci, Nathan

Edit: Je cherchais dans le code source à OnInfoListener et trouvé public static final int MEDIA_INFO_UNKNOWN = 1; je ne sais pas exactement ce que cela signifie, et ne peut pas trouver où ces extras sont conservés soit .. Toute idée sur à quoi Media info unknown veut dire? ou ce que 26 représente serait très apprécié.

Répondre

29

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

  • 26 signifie PVMFInfoErrorHandlingStart, à une indication d'erreur

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

+0

merci pour le lien! – schwiz

+12

Le lien est rompu. Vous pouvez le trouver [ici] (https: // github.com/android/platform_external_opencore/blob/maître/pvmi/pvmf/include/pvmf_return_codes.h) – efeyc

0

Peut-être des données RDS? Définissez-vous votre taille de tampon manuellement?

+0

Y at-il un moyen de définir la taille de la mémoire tampon sur «MediaPlayer», j'ai peut-être manqué cela. – schwiz

+1

Il semble avoir un événement pour regarder l'état des tampons: http://developer.android.com/reference/android/media/MediaPlayer.html – ykatchou

0

Pour lancer la lecture, start() doit être appelé. Après le démarrage réussi de start(), l'objet MediaPlayer est dans l'état Started. isPlaying() peut être appelé pour tester si l'objet MediaPlayer est dans l'état Started.

Dans l'état, le moteur de lecteur interne appelle un utilisateur fourni OnBufferingUpdateListener.onBufferingUpdate() méthode de rappel si un OnBufferingUpdateListener a été enregistré au préalable via setOnBufferingUpdateListener (OnBufferingUpdateListener). Ce rappel permet aux applications de garder une trace de l'état de mise en mémoire tampon lors du streaming audio/vidéo.

L'appel de start() n'a pas d'effet sur un objet MediaPlayer déjà dans l'état Started.

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

+0

OnBufferingUpdate n'est pas appelé sur les périphériques 2.2 avec ce flux parce que la taille de fichier est inconnu. (taille sans fin est un flux de station de radio) – schwiz

Questions connexes