循环播放多个视频

时间:2020-05-17 16:16:31

标签: android android-videoview

嗨,我想循环播放多个视频。我正在尝试以下代码:

   private VideoView videoView = null;
String[] videoArray = {"video1", "video2"};

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Uri videoUri = Uri.parse("android.resource://" + MainActivity.this.getPackageName() + "/raw/" + videoArray[0]);

    videoView = (VideoView)findViewById(R.id.videoView);
    videoView.setVideoURI(videoUri);
    videoView.start();

    videoView.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) 
        {
            Uri videoUri = Uri.parse("android.resource://" + MainActivity.this.getPackageName() + "/raw/" + videoArray[1]);
            videoView.setVideoURI(videoUri);
            videoView.start();
        }
    });
}
}

但是此代码仅循环播放最后一个。

1 个答案:

答案 0 :(得分:0)

尝试

让我们假设您的视频被命名为video1,video2 .... videoN。

只关注索引。

private final int COUNT = 3;
private int index = 1;
private VideoView myVideo1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.activity_main);
myVideo1 = (VideoView) findViewById(R.id.myvideoview);
myVideo1.requestFocus();
myVideo1.setVideoURI(getPath(index));
index++;

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

myVideo1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {
            //videos count +1 since we started with 1
        if (index == COUNT + 1) index = 1;
        myVideo1.setVideoURI(getPath(index));
        index++;
    }
});
}

private Uri getPath(int id) {
return Uri.parse("android.resource://" + getPackageName() + "/raw/video" + id);
}