我可以循环播放 videoview 中原始文件夹中存储的多个视频吗?

Can i loop multiple videos stored on raw folder in videoview?

我想要实现的是播放存储在 raw 文件夹中的多个视频循环播放,一个接一个地依次播放?

我只能在 videoview 中循环播放一个,但不能访问其他的。 提前致谢。 这是我的 videoview.

private VideoView myVideo1;
String path = "http://192.168.0.22/output/files/video/";
Uri uri=Uri.parse(path);

@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.setVideoURI(uri);
    myVideo1.start();
    myVideo1.requestFocus();

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

要播放位于 raw 的多个视频,请尝试以下方法:

(注意:注意索引和视频文件的命名。此示例假设您的视频名为 video1video2..... videoX)

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

Getting resources from raw 说明:android.resource:// 是路径的常量部分,getPackageName() 指向你的应用程序,/raw/ 告诉系统去哪里寻找文件,video文件的常量命名前缀,id 是文件名的动态后缀

VideoView 使用 MediaPlayer 播放视频,下面是其状态的概述(取自 official docs)以便更好地理解: