【问题标题】:Video doesn't loop Android VideoView视频不循环 Android VideoView
【发布时间】:2012-04-20 13:05:51
【问题描述】:

我正在尝试构建一个可以循环播放视频的 Android 应用! 问题是它永远不会循环!它只播放一次视频! 在调试过程中,我意识到“myVideoView.setOnCompletionListener”正在执行,但视频没有播放! 我还在 CompletionListener 中尝试了“mp.reset()”。 也许我遗漏了其他文件中的某些内容,例如清单?

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

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

标签: android loops android-videoview


【解决方案1】:

尝试使用onPreparedListener 而不是onCompletionListener

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

希望这会有所帮助。

【讨论】:

  • 大概可以去掉“TODO自动生成的方法存根”
【解决方案2】:

试试这个。

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

    }
});

在你的视频完成后重新开始......

【讨论】:

  • 这很好但是 onCompletion 必须 seekTo 1 @Override public void onCompletion(MediaPlayer mp) { mp.seekTo(1); myVideoView.start(); } 谢谢
【解决方案3】:

试试这个。

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

                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多