104 votes

Boucle vidéo transparente avec VideoView

J'ai le code suivant pour prendre une vidéo en tant que ressource brute, démarrer la vidéo et la boucler, mais j'ai besoin que la vidéo se boucle de manière transparente dès maintenant quand il s'agit d'une fin du clip et recommence la transition entre les causes d'un scintillement pendant une fraction de seconde, ce que je ne peux vraiment pas avoir pour mon application.

public class Example extends Activity {
    VideoView vv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        vv = (VideoView)findViewById(R.id.VideoView01);

        //Video Loop
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                vv.start(); //need to make transition seamless.
            }
        });

        Uri uri = Uri.parse("android.resource://com.example/"
                + R.raw.video);

        vv.setVideoURI(uri);
        vv.requestFocus();    
        vv.start();
    }
}

Le clip ne dure que 22 secondes, mais a été créé pour être transparent, il est donc possible de travailler sans délai.

257voto

PravinDodia Points 696

Essayez ceci, il fonctionnera à 100%


VideoView videoView;<---écrivez ceci en dehors de la méthode ou bien déclarez-le comme variable finale.

videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});

19voto

Chirag Kalra Points 31

Dans Kotlin, utilisez simplement

videoView.setOnPreparedListener { it.isLooping = true }

9voto

lexodus k Points 99

Je ne sais pas si cela aidera des années plus tard, mais j'ai utilisé

vv.start();
vv.setOnCompletionListener ( new MediaPlayer.OnCompletionListener() {

 @Override 
  public void onCompletion(MediaPlayer mediaPlayer) {   
    vv.start();
  }
});

et il possède une boucle sans soudure

2voto

J J Points 750

Un peu tard, mais n'importe quelle raison que vous ne pouvez pas utiliser ce qui suit ?

MediaPlayer.setLooping(true);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X