mein Problem nur auf Android 4.2.2android mediaplyer seekTo onPrepared innerhalb
zu passieren scheint, dass ich gehen auf diese Weise Ruhezustand -> initialisierten Zustand -> prepareAsync() -> und in onPrepared die seekTo genannt wird, sondern auf diese android-Version der Mediaplayer gibt
„der Versuch, über das Ende der Datei zu suchen: request = {int> 0}, durationMs = 0“
und beginnen zu spielen von Anfang an, da es keinen Punkt, wo ich Könnte das fangen, noch irgendeinen Zuhörer, es schreibe einfach diese Nachricht in das Protokoll, ich kann nicht wirklich darauf reagieren.
Was noch seltsamer ist, dass, wenn ich mediaPlayer.getDuration() in onPrepared() aufrufen, es richtige Wert zurückgibt und nicht 0
Glauben Sie, es ist ein Mediaplayer Fehler oder gibt es einen besseren Ort, wo man Anruf seekTo? oder vielleicht ein Weg, wie man die Suche nach fehlgeschlagen? Ich möchte vermeiden, die aktuelle Position regelmäßig zu überprüfen, wenn sie kleiner als die gewünschte Position ist, und versuchen, versuchen zu suchen, da dieser Ansatz viele verschiedene Probleme hat.
es ist eine glatte Streaming-Video-Inhalt
Im Anschluss an Robins Antwort versuchte ich, den Quellcode des Media Players auf die Stelle zu ziehen, an der der Wert für die Dauer letztendlich festgelegt wird. Am Ende habe ich mir die StageFrightPlayer-Klasse angeschaut, die eine AwesomePlayer-Struktur hat, die den Wert in ihrem mDurationUs-Member zu halten scheint. Dies scheint bei einem Aufruf von initAudioDecoder oder initVideoDecoder eingestellt zu werden. Ich denke, die ideale Lösung würde dazu führen, dass eine dieser beiden Funktionen aufgerufen wird, ohne die java MediaPlayer.start() - Funktion aufrufen zu müssen. – Simon
Ich habe diese Informationen auch als Kommentar zu Android [Ausgabe 54112] (http://code.google.com/p/android/issues/detail?id=54112) hinzugefügt. – Simon
das ist Arbeit für mich, danke! – Eric