Ho un'applicazione con un VideoView, al fine di rendere la riproduzione del video su un loop Io uso un onCompletionListner chiamare setVideoPath() ancora una volta, in questo modo:Android VideoView ripetizione
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
mVideoView.start();
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//I have a log statment here, so I can see that it is making it this far.
mp.reset(); // <--- I added this recently to try to fix the problem
mVideoView.setVideoPath(file.getAbsolutePath());
}
});
Questa messa a punto funziona bene su tutti i dispositivi che ho incontrato finora, non ho mai avuto problemi con esso, non ripetendo.
Tuttavia il Motorola Xoom su cui sto effettuando i test è stato recentemente aggiornato a ICS. Ora che è su ICS, funzionerà per un po 'e farà un loop del video. Ma alla fine (ho aggiunto un contatore e alcuni log, non sembra esserci alcun motivo per quante volte ha fatto il ciclo con successo prima di fermarsi) uscirà dal ciclo e siederà semplicemente su un fermo immagine del primo fotogramma del film.
Qualcuno sa che cosa potrebbe causare che questo non si verifichi più correttamente? O qualcuno sa di un altro modo per far funzionare correttamente un VideoView che funziona ancora sotto ICS?
Che cos'è mp sul tuo codice? –
@jeraldov 'mp' è l'oggetto MediaPlayer che viene passato come parametro al metodo onCompletion(). – FoamyGuy