视频在Android VideoView中无法循环播放

4

我正在尝试构建一个循环播放视频的Android应用程序! 问题是它从来没有循环!它只播放一次视频! 在调试过程中,我意识到“myVideoView.setOnCompletionListener”正在执行,但视频并没有播放! 我还尝试在CompletionListener内部使用“mp.reset()”。 也许我在不同的文件中漏掉了一些东西,比如清单文件(Manifest)吗?

有什么想法吗? 以下是我的代码:

  final VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview);
      myVideoView.setVideoURI(Uri.parse(SrcPath));     

       myVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer arg0) {
                myVideoView.requestFocus();
                myVideoView.start();
           }
        });
       myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                 myVideoView.setVideoURI(Uri.parse(SrcPath));

           }
        });

不需要重新设置URI或路径,只需编写myVideoView.start()即可。 - Vipin Sahu
3个回答

15

建议使用onPreparedListener而不是onCompletionListener

myVideoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});
希望这能帮到你。

可能可以删除“TODO Auto-generated method stub”。 - Greg Ennis

7

试试这个。

myVideoView = (VideoView) findViewById(R.id.videoView1);
myVideoView.setVideoPath(video_path); 
myVideoView.setMediaController(new MediaController(this));
myVideoView.start();   

myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {

        myVideoView.start();  

    }
});

完成视频后,重新开始即可实现上述操作…

1
这段代码很好,但是onCompletion必须seekTo 1。@Override public void onCompletion(MediaPlayer mp) { mp.seekTo(1); myVideoView.start(); }谢谢。 - Sotos

0

试试这个。

            videoView.setVideoPath(tempFileMessageUri.toString());

            ctlr = new MediaController(context);
            ctlr.setMediaPlayer(videoView);

            videoView.setMediaController(ctlr);
            videoView.requestFocus();
            videoView.start();

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

            videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer mp) {
                    videoView.start();

                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接