2010-10-04 2 views
18

Ich kämpfe mit einem Live-Radio-Stream, um auf Android zu arbeiten. Ich benutze die Klasse MediaPlayer und stelle einfach die URL ein und spiele sie ab. Es funktioniert größtenteils gut, aber nach 5-30 Minuten stirbt es unweigerlich. Auf 2,1 Telefone (genauer gesagt ein Held) erhalte ich diese LogausgabeAndroid MediaPlayer Fehlercodes?

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) 

Wo MediaStreamService mein Dienst ist OnInfoListener

auf 2.2 Telefone der die MediaPlayer die Ausgabe enthält, kommt ich nicht bekommen die OnInfoListener Rückruf immer, der Strom stirbt einfach. Aber ich sehe das in den logcat

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

scheint einwandfrei trotz des ständigen logcat Spam auf meinem 1.6 Telefon arbeitet von

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

Meine Frage ist, was die Fehlercodes zu tun (1, 26) bedeuten? Was verursacht meinen MediaPlayer zum Absturz? Ist das 2.1-Problem überhaupt mit dem 2.2-Problem verbunden? Danke, Nathan

Edit: Ich wurde im Quellcode zu OnInfoListener suchen und fand public static final int MEDIA_INFO_UNKNOWN = 1; ich genau bin nicht sicher, was es bedeutet, und kann nicht finden, wo diese Extras gehalten werden entweder .. Jede Einsicht auf zu was Medieninfo unbekannt bedeutet? oder wofür diese 26 steht, wäre sehr geschätzt.

Antwort

29

Meine Frage ist, was bedeuten die Fehlercodes (1, 26)?

  • 26 bedeutet PVMFInfoErrorHandlingStart, nur eine Fehleranzeige

Der Fehler ist -11, die PVMFErrTimeout bedeutet. Sie können hier die Definitionsdateien auschecken link text

+0

Danke für den Link! – schwiz

+12

Verbindung ist unterbrochen. Sie finden es [hier] (https: // github.com/android/plattform_external_opencore/blob/master/pvmi/pvmf/include/pvmf_return_codes.h) – efeyc

0

Vielleicht RDS-Daten? Legen Sie Ihre Puffergröße manuell fest?

+0

Gibt es eine Möglichkeit, die Puffergröße auf 'MediaPlayer' einzustellen, habe ich das vielleicht verpasst. – schwiz

+1

Es scheint ein Ereignis zu haben, um den Zustand der Puffer zu beobachten: http://developer.android.com/reference/android/media/MediaPlayer.html – ykatchou

0

Um die Wiedergabe zu starten, muss start() aufgerufen werden. Nachdem start() erfolgreich zurückgegeben wurde, befindet sich das MediaPlayer-Objekt im Status Gestartet. isPlaying() kann aufgerufen werden, um zu testen, ob sich das MediaPlayer-Objekt im Status Gestartet befindet.

Während des Starts ruft die interne Player-Engine eine vom Benutzer bereitgestellte OnBufferingUpdateListener.onBufferingUpdate() - Callback-Methode auf, wenn zuvor ein OnBufferingUpdateListener über setOnBufferingUpdateListener (OnBufferingUpdateListener) registriert wurde. Dieser Rückruf ermöglicht Anwendungen, den Pufferstatus beim Streaming von Audio/Video zu verfolgen.

Der Aufruf von start() wirkt sich nicht auf ein MediaPlayer-Objekt aus, das bereits im Status Gestartet ist.

Vielleicht ist es ein Teil der Antwort.

+0

OnBufferingUpdate wird nicht auf 2.2 Geräten mit diesem Stream aufgerufen, weil die Dateigröße ist unbekannte. (endlose Größe ist ein Radiosender-Stream) – schwiz