【问题标题】:VideoView Add a multiple videos and playVideoView 添加多个视频并播放
【发布时间】:2015-12-09 07:53:36
【问题描述】:

让我们假设 SD 卡或内部存储中有 5 个视频。
现在我已经获得了文件路径,我的问题是如何在 VIDEO VIEW 中插入多个视频?

下一个或上一个按钮不起作用

这是我的代码

 public void getFile()
{

    urls = getIntent().getStringArrayListExtra("url_videoAll");
    keys = getIntent().getStringArrayListExtra("key_videoAll");

    for(int i = 0; i<urls.size();i++) {
        String FileName = URLUtil.guessFileName(urls.get(0), null, MimeTypeMap.getFileExtensionFromUrl(urls.get(0)));
        String yourFilePath = getBaseContext().getFilesDir() + "/" + FileName;
        fileList.add(new File(yourFilePath));

    }
    playallvideo(fileList);
}

在此代码中,如果我有 5 个视频,那如何?

private void playallvideo(final List<File> file)
    {
    mediaController = new MediaController(this);

    video.setMediaController(mediaController);
    video.setVideoPath(file.get(0).toString());
    video.start();

    mediaController.setPrevNextListeners(new View.OnClickListener() {
        public void onClick(View v) {
            video.setMediaController(mediaController);
            video.setVideoPath(file.get(1).toString());
            video.requestFocus();
            video.start();
            // code for next
        }
    }, new View.OnClickListener() {
        public void onClick(View v) {
            video.setMediaController(mediaController);
            video.setVideoPath(file.get(1).toString());
            video.requestFocus();
            video.start();
            // code for previous
        }
    });
}

我需要这个,因为我将使用 MediaController 并按下下一个视频

【问题讨论】:

    标签: java android video android-videoview


    【解决方案1】:

    您可以使用计数器并在第一个视频停止播放后立即增加它的值。这可以通过使用MediaPlayer.OnCompletionListener 来实现。

    以下对我有用:

    private static int currentVideo = 0;
    private List<String> fileData = new ArrayList<String>();
    
    videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            if(!(currentPosition < fileData.size())) {
                return;
            }
            Uri nextUri = Uri.parse(fileData.get(currentPosition++));
            videoView.setVideoURI(nextUri);
            videoView.start();
            //to keep looping into the list, reset the counter to 0.
            //in case you need to stop playing after the list is completed remove the code.
            if(currentPosition == fileData.size()) {
                currentPosition = 0;
            }
        }
    });
    

    虽然帖子太老了,无法回答,但最终来到这里的初学者开发人员会得到和我一样多的帮助。

    【讨论】:

    • setOnCompletionListener 没有触发,即使循环设置为 false
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多