Android MediaPlayer funktioniert gut in benutzerdefinierten Audio-Streaming-Anwendung bis zu Android 2.1, aber nicht in höheren Versionen
EDIT:
Android 2.2 MediaPlayer ist in Ordnung arbeiten mit einem SHOUTcast-URL aber nicht mit dem anderen
Brauche ich für das Abspielen von audio-Dateien von externen URLs(shoutcast Streams). Derzeit werden die audio-Dateien heruntergeladen werden inkrementell & gespielt werden, sobald wir genügend audio in Telefon-lokalen temporären Speicher. ich bin mit dem StreamingMediaPlayer Klasse.
Überprüfen Sie dieses Stück code:
private MediaPlayer createMediaPlayer(File mediaFile)
throws IOException {
MediaPlayer mPlayer = new MediaPlayer();
//example of mediaFile =/data/data/package/cache/playingMedia0.dat
FileInputStream fis = new FileInputStream(mediaFile);
mPlayer.setDataSource(fis.getFD());
mPlayer.prepare();
return mPlayer;
}
Aktueller status:
1. - Es funktioniert von Android 1.6 auf 2.1 aber nicht in den höheren Versionen wie Android 2.2.
2 - Die "mPlayer."setDataSource(Zi.getFD())" wird die Zeile, die den Fehler auslöst.
3 - Der Fehler ist "Nicht in der Lage zu erstellen media player"
Andere Lösung versucht:
Ich habe versucht, aus alternativen Lösung, aber nichts funktionierte bisher.
Android 2.2 MediaPlayer ist in Ordnung arbeiten mit einem SHOUTcast-URL aber nicht mit dem anderen
Was ich Suche?
Mein Ziel ist es, ein Stück code, die arbeiten, können auf Android 2.1 & höher.
Dieses Problem wird auch hier diskutiert:
1- Inkonsistente 2.2 Media Player Verhalten
2- android-code für das streaming von shoutcast-stream bricht in 2.2
3 - Dieses Problem wird auch diskutiert, eine Menge von Fragen auf dieser Website, aber ich fand die Antwort nicht, wo.
4- markmail.org
LogCat-trace:
Unable to to create media player
Error copying buffered conent.
java.lang.NullPointerException
com.ms.iradio.StreamingMediaPlayer.startMediaPlayer(StreamingMediaPlayer.java:251)
com.ms.iradio.StreamingMediaPlayer.access$2(StreamingMediaPlayer.java:221)
com.ms.iradio.StreamingMediaPlayer$2.run(StreamingMediaPlayer.java:204)
android.os.Handler.handleCallback(Handler.java:587)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:3683)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:507)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
dalvik.system.NativeStart.main(Native Method)
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
StreamingMediaPlayer
- Klasse ist mit einem double-buffering-Technik zu bekommen, um Einschränkungen in Prä-1.2-releases von Android. Alle Produktions-releases von Android OS haben ein MediaPlayer, unterstützt das streaming von Medien(1). Ich würde empfehlen, das zu tun, anstatt mit diesem double-buffering-Technik zu bekommen, um das problem.Android OS 2.2 ersetzt die alte media-player-code mit dem FrightCast Spieler, die wohl anders handeln in diesem Fall.
Den Zeilennummern in Ihrem stack-trace nicht die Karte, um die Datei, die Sie verknüpfen, so dass ich davon ausgehen es gibt eine andere version, die Sie tatsächlich verwenden. Ich werde zu erraten, dass
NullPointerException
wird berichtet vonMediaPlayer
aber weder dieFileInputStream
noch die zurückgegebenFileDescriptor
werden kannnull
.(1) Vor version 2.2 der media-player erkennen würde nicht ShoutCast-streams mit einem "EISIGEN/1.1" - version-header in der Antwort. Durch die Schaffung eines proxy, ersetzt diese mit "HTTP/1.1" können Sie lösen. Finden Sie die StreamProxy Klasse hier für ein Beispiel.
InformationsquelleAutor der Antwort jwadsack
Das problem ist, dass content-type "audio/aacp" streaming wird nicht direkt unterstützt. Einige decoding-libraries können verwendet werden, um zu spielen "aacp", finden Sie die Lösung unter:
Freeware Advanced Audio (AAC) - Decoder für Android
Wie diese Bibliothek verwenden?
Erwägen Sie rechtliche Fragen, während Sie es.
InformationsquelleAutor der Antwort
ich bin mit diesem code, und führen 2.2 Obere version für streaming heruntergeladen.
InformationsquelleAutor der Antwort