mio problema sembra accadere solo su Android 4.2.2Android mediaplyer seekTo all'interno onPrepared
vado in questo modo stato di inattività -> inizializzata Stato -> prepareAsync() -> e in onPrepared il seekTo si chiama, ma su questa versione di Android il mediaplayer ritorna
"Tentativo di cercare di oltre la fine del file: richiesta = {int> 0}, durationMs = 0"
e iniziare a giocare dall'inizio, in quanto non v'è alcun punto in cui ho potrebbe prendere questo, né alcun ascoltatore, basta scrivere questo messaggio al log, non posso davvero reagire su questo.
Che cosa è ancora più strano è che se io chiamo mediaPlayer.getDuration() in onPrepared() restituisce il giusto valore e non 0.
Pensi che sia un bug mediaplayer o c'è un posto migliore dove chiamata seek To? o forse un modo come sapere la ricerca Per fallire? Vorrei evitare di controllare periodicamente la posizione corrente se è più piccola della posizione desiderata e provare a chiamare cerca perché questo approccio ha molti problemi diversi.
si tratta di un liscio di contenuti video in streaming
In seguito alla risposta di Robin, ho provato a rintracciare il codice sorgente del lettore multimediale dove viene impostato il valore di durata. Ho finito per guardare la classe StageFrightPlayer, che ha una struttura AwesomePlayer, che sembra mantenere il valore nel suo membro mDurationUs. Questo sembra essere impostato quando viene effettuata una chiamata a initAudioDecoder o initVideoDecoder. Immagino che la soluzione ideale possa far richiamare una di queste due funzioni senza bisogno di chiamare la funzione java MediaPlayer.start()? – Simon
Ho appena aggiunto queste informazioni come commento su Android [numero 54112] (http://code.google.com/p/android/issues/detail?id=54112). – Simon
questo è lavoro per me, grazie! – Eric