Android: Просмотр видео: как проигрывать видео в цикле - PullRequest
33 голосов
/ 06 апреля 2011

У меня есть простое диалоговое окно с VideoView, и я хочу воспроизвести видео в цикле.

Я сейчас использую быстрое решение

 //Video Loop
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                vv.start();
            }
        });

но я хотел бы знать, есть ли лучший способ?


Редактировать

Я добавляю больше кода, потому что я не знаю, как получить доступ к объекту MediaPlayer из VideoView:

String path = defaultPath+currentVideoRessource;


    if (path == null || path.length() == 0) {
        Log.e("extra","File URL/path is empty");
    } else {
        // If the path has not changed, just start the media player
        if (!path.equals(current) && mVideoView != null) {
                Uri pathURI = Uri.parse(defaultPath+currentVideoRessource);
                mVideoView.setVideoURI(pathURI);
    }
    current = path;
    mVideoView.setOnCompletionListener(new MyOnCompletionListener(this));
    //Video Loop
    //              mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    //                  public void onCompletion(MediaPlayer mp) {
    //                      mVideoView.start(); //need to make transition seamless.
    //                  }
    //              });

    mVideoView.start();
    mVideoView.requestFocus();

В настоящее время я изучаю использование MediaPlayer и SurfaceView bu. Хотелось бы узнать, есть ли способ с VideoView напрямую

1 Ответ

80 голосов
/ 06 апреля 2011

Используйте setLooping (true) в вашем экземпляре MediaPlayer.

- Правка -

Как насчет использования setOnPrepareListener вместо setOnCompletionListener?Это дает вам доступ к объекту MediaPlayer.

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