Wir haben in letzter Zeit Berichte über Audio empfangen, die in unseren Android-Apps auf dem Samsung Galaxy S4 nicht abgespielt werden. Die App ist auf anderen Geräten in Ordnung.
Der Ton wird mit dem MediaPlayer gestreamt. Es wird lokal mit der Android Socket-Methode gespeichert.
Die Warnung im Logcat wird verursacht durch:
%Vor%Der Stack-Trace ist wie folgt:
%Vor%Der Stream wird abgespielt, wenn ich den Proxy-Code auskommentiere, er beginnt jedoch für eine Sekunde zu spielen und beginnt dann für 2-3 Sekunden zu puffern, bevor er fortgesetzt wird.
Jede Lösung wäre sehr akzeptiert.
Ich habe ähnliche Probleme gefunden, aber sie wurden nicht gelöst:
Ich habe endlich das Problem herausgefunden, das das verursacht hat. Wie erwartet, versuchte der Medienspieler Bereichsanfragen, um die ID3-Informationen zu finden. Auf anderen Telefonen würde das Festlegen der Header-Statuszeile auf HTTP/1.0 206 OK
verhindern, dass der Medienplayer solche Bereichsanforderungen ausführt. Aus irgendeinem Grund gilt dies jedoch nicht für den S4 (danke Samsung!).
Um es zu beheben, müssen Sie nur diese Bereichsanforderungen verarbeiten. In meinem Fall habe ich nur einmal socket.accept()
aufgerufen. Ich habe das geändert, um in einer Schleife ausgeführt zu werden, während isRunning
in meiner Funktion run()
wahr ist. Auf diese Weise wird eine neue Anfrage korrekt bearbeitet. Eine abgehackte Version meines Codes sieht so aus ...
Hoffe, das hilft.
Broken Pipe tritt normalerweise auf, wenn die andere Seite die Verbindung auf Ihnen geschlossen hat. Stellen Sie sicher, dass Sie die Header korrekt übernehmen und fügen Sie dann die beiden Zeilenumbrüche ein, bevor Sie den Hauptteil einfügen. Etwas, das du am anderen Ende fütterst, führt wahrscheinlich dazu, dass eine Steckdose geschlossen wird ... Das passiert nur auf S4? Senden Sie die Inhaltslänge?
Tags und Links android proxy android-mediaplayer samsung-mobile