Ho un'applicazione con VideoView, ho impostato un video da riprodurre in VideoView. Ad un certo punto mentre il video è in riproduzione verrà messo in pausa. Quindi, dopo che è stato messo in pausa per un po 'di tempo, inizierà a riprodurre di nuovo il video, ma cerca in avanti fino al punto in cui il video sarebbe presente se non fosse stato messo in pausa. Così, per esempioVideoView getCurrentPosition() irregolarità su Acer Iconia A200
Il video inizia la riproduzione
Video fermò a 6 secondi
il video rimane in pausa per 10 secondi
video inizia a giocare di nuovo < --- a questo punto che voglio il video per iniziare giocando al segno dei 16 secondi.
Al fine di ottenere questo effetto mi hanno istituito timestamp fare la matematica necessaria quindi so quanto tempo il video è stato messo in pausa per, e poi quando mi metto di nuovo, io chiamo mVideoView.seekTo(timePlayed + timePaused);
Tutto questo funziona come previsto su Toshiba Thrive e Motorola Xoom. Comunque su Acer Iconia A200 Sembra che dal punto in cui chiamo seekTo() forward la VideoView tornerà sempre nello stesso momento quando chiamo getCurrentPosition()
. Per illustrare questo ho impostato un runnable che spara all'incirca ogni 1000ms che registra la posizione corrente. Ecco alcune delle uscita da quella:
/****************
* These are from before it is paused/resumed
* you can see that the current time is functioning
* as expected.
******************/
Current Position = 0
Current Position = 734
Current Position = 1735
Current Position = 2703
Current Position = 3737
Current Position = 4738
Current Position = 5739
Current Position = 6740
Current Position = 7741
Current Position = 8742
Current Position = 9743
/**********************************
* These are from the exact same runnable
* after the video has been paused, and
* started again after seekTo().
* The position is no longer increasing.
* Note that the video is playing correctly on the screen
* while these logs happen.
**********************************/
Current Position = 23410
Current Position = 23410
Current Position = 23410
Current Position = 23410
23410 è il tempo esatto che sto passando a seekTo(), così sembra che dopo aver fatto questo invito, la VideoView restituirà sempre qualunque cosa mi passa per non importa se sta ancora suonando e la posizione sta avanzando.
Qualcun altro ha già riscontrato questo bug di VideoView/MediaPlayer? Ho visto alcune cose sul gruppo di problemi noti che stavano parlando di MediaPlayer che restituiva valori errati per getCurrentPosition(), ma non ha trovato alcun punto in cui avrebbe semplicemente smesso di aumentare in questo modo. La maggior parte di quelli che ho visto, stavano anche provando a riprodurre audio piuttosto che video.
Si utilizza riprendi() per continuare dopo la pausa()? riprendere non funziona sul mio Iconia A501. getCurrentPosition() restituisce il valore passato alla ricerca ma il video è ancora in pausa. – asktomsk
Puoi inviare un esempio del codice? Controllerò il mio tablet. – asktomsk
Non ho visto lo stesso problema come te ma ho visto getCurrentPosition in modo inaffidabile - a volte restituisce 0 per me quando la posizione di ricerca non è 0. – MaximumGoat