Streaming mit Android-MediaPlayer - abfangen von Fehlern und Pufferung
Ich bin mit Mühe MediaPlayer
ausdauernd zu sein, wenn das streaming aus einer HTTP-URL.
Wenn ich starten Sie die Wiedergabe der Datei, sondern löschen Sie dann die Verbindung (z.B. Flugzeug-Modus) MediaPlayer#OnErrorListener
generiert what=1, extra=-17
und dann kurz danach what=-38, extra=0
.
Es keine Dokumentation gibt, kann ich sehen, in der APIs, was das bedeutet, außer extra "Typisch Implementierung abhängig". Ich bin mit einem HTC Hero (gut, es ist T-Mobile UK s G2 Touch).
Tun, bekommen andere Menschen die gleichen Werte und ist es sicher, zu fangen, diese Werte als Bedeutung die Verbindung ist Weg?
Wie kann ich am besten fortsetzen, wenn die Verbindung wieder? (speichern Sie die aktuelle Suche auf Einstellungen, und wiederholen Sie jede 5 Sekunden?)
Woher weiß ich, Wann das Gerät hat beschlossen, zu beginnen, zu spielen, was es war Pufferung - gibt es einen Rückruf (andere als polling isPlaying()
)?
Zusätzlich, ich bin mir nicht ganz sicher, was onBufferingUpdate
bietet. Ich bin mit einem 40 minütigen podcast MP3 (64kbps bitrate)
- Pufferung geht 1%, 2%, 3%. Wenn ich seek zu etwa 30 Minuten, zeigt es 75%, wenn ich dann versuchen wieder an den start zurück, um 5% - was ist der Sinn dieses callback anderen, als dass Sie ungefähr das, was zwischengespeichert?
Schließlich - gibt es eine Möglichkeit, die Pipeline, was gestreamt wird, um eine MP3
?
- "Wie kann ich am besten fortsetzen, wenn die Verbindung wieder? (speichern Sie die aktuelle Suche auf Einstellungen, und wiederholen Sie jede 5 Sekunden?) Ich bin neugierig zu erfahren, Ihre ultimative Lösung, um diese Besondere Frage, bitte 🙂
- Hi, ich habe das gleiche Problem, fortsetzen müssen-streaming, wenn die Verbindung wieder angezeigt. Bitte helfen Sie mir. Ich bin mit diesem Kampf so viele Tage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entnommen Ähnliche stack Overflow Frage
Ich bin auch enttäuscht über die MEDIA_INFO_BUFFERING_START und MEDIA_INFO_BUFFERING_END Haken... Mist.
Ist es möglich, dies zu tun
MediaPlayer verfügt über Methoden zum registrieren eines OnPreparedListener und ein OnBufferingUpdateListener
onPrepared wird aufgerufen, sobald der Spieler gepuffert ist genug, um anfangen zu spielen.
http://developer.android.com/reference/android/media/MediaPlayer.OnPreparedListener.html
onBufferingUpdate aufgerufen wird, aktualisieren Sie auf die Pufferung Informationen.
http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html
Sollten Sie auch die Connectivity-Dienst zu hören, für Netzwerk-Konnektivität
Ich denke, Sie sollten listne Verlust/Gewinn von Netzwerk.
Haben Sie einen Blick auf: Erkennen, 3G-oder Wifi-Netzwerk-Wiederherstellung
Wenn Sie suchen oder überspringen oder die Verbindung verloren und MediaPlayer hält Sie sich wieder mit dem proxy-server, müssen Sie senden Sie diese Antwort mit Status 206 nachdem Sie die Anfrage und Auswahl(int) vom client.
Und wenn Sie eine Anfrage erhalten von MediaPlayer, die nicht enthalten-Bereich in den HTTP-header , dann ist es ersuchenden eine neue stream-Datei, in diesem Fall deine Antwort-header sollte dann so Aussehen:
Genießen!