2012-02-01 10 views
8

Tengo una aplicación con un VideoView, con el fin de hacer que el juego de video en un bucle utilizo un onCompletionListner para llamar setVideoPath() de nuevo, como esto:Android VideoView repetición

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()); 
     } 
    }); 

Esta configuración funciona bien en todos los dispositivos que he encontrado hasta ahora, nunca tuve ningún problema con que no se repita.

Sin embargo, el Motorola Xoom que estoy probando recientemente se actualizó a ICS. Ahora que está en ICS esto funcionará por un tiempo y hará un bucle en el video. Pero con el tiempo (he agregado un contador y algunos registros, no parece haber ningún patrón que indique cuántas veces se repite con éxito antes de detenerse) se detendrá el bucle y se sentará en un fotograma congelado del primer fotograma de la película.

¿Alguien sabe lo que podría hacer que esto no vuelva a funcionar correctamente? O ¿alguien sabe de otra manera de hacer que un VideoView se repita correctamente y funcione bajo ICS?

+0

¿Qué es mp en tu código? –

+0

@jeraldov 'mp' es el objeto MediaPlayer que pasa como parámetro del método onCompletion(). – FoamyGuy

Respuesta

10

Si solo tiene un video para reproducir, puede configurarlo (verdadero) en su oyente preparado.

myVideoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 
      // TODO Auto-generated method stub 
      mp.setLooping(true); 

     } 
    }); 

y listo.

3

Hasta ahora esto:

mp.reset(); 

dentro de la devolución de llamada onComplete parece solucionarlo. Estaría muy interesado si alguien puede explicar lo que está pasando con él.

+1

¿te refieres a onCompletion? – Adi

Cuestiones relacionadas