我可以循环播放 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
的多个视频,请尝试以下方法:
(注意:注意索引和视频文件的命名。此示例假设您的视频名为 video1,video2..... 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)以便更好地理解:
我想要实现的是播放存储在 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
的多个视频,请尝试以下方法:
(注意:注意索引和视频文件的命名。此示例假设您的视频名为 video1,video2..... 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)以便更好地理解: