我有一个Android应用程序,它允许播放视频文件,特别是来自一个网络媒体资源的不同系列剧集。
正在播放视频文件:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(mp4url), "video/mp4");
startActivity(intent);
其中mp4url
- 是一个String变量
现在我想让程序播放一个视频文件队列。
我试着做下一个方法:
for(int iteration=arg2;iteration<episodes.size(); iteration++){
Intent intent1 = new Intent(Intent.ACTION_VIEW);
intent1.setDataAndType(Uri.parse(mp4Url1), "video/mp4");
startActivity(intent1);
}
其中arg2
显示所选视频文件的位置,episodes
是在选择的视频文件后播放的视频文件队列的ArrayList变量。
但它没有用。实际上所有的videofiles都是可玩的但是 同时。我需要他们轮流玩。如何有效地重新组织我的代码?
感谢您的关注。
答案 0 :(得分:0)
创建电影网址的arraylist(例如yourURLList
)
将int
常量定义为static final int VIDEO_PLAYBACK_FINISHED = 32
您可以保持计数以跟踪正在播放的视频,如:
static int VIDEO_RUNNING = 0
在调用者活动中创建这样的方法:
private void startMovie(int serialOfMovie){
String vdoURL= yourURLList.get(serialOfMovie);//array list of movie urls
if(vdoURL != null)
{
//video url for that index is found,if not then it would not enter here
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(vdoURL), "video/mp4");
startActivityForResult(intent,
VIDEO_PLAYBACK_FINISHED);
}
}
在调用者活动(您正在调用您正在创建的意图的活动)中,不要忘记添加此代码段:
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == VIDEO_PLAYBACK_FINISHED) {
if (resultCode == RESULT_OK) {
//one video is finished
VIDEO_RUNNING++; //increase which vdo is running count
startMovie(VIDEO_RUNNING);
}
}
}
现在当你即将播放这一系列电影时(从头开始),只需拨打startMovie(VIDEO_RUNNING);//VIDEO_RUNNING is 0 initially,so it will point the first url in url list.
请记住,如果您正在使用 MediaPlayer 在活动中播放电影(您使用电影网址调用的电影),那么当电影播放完毕后,您应该finish
那项活动。就像你在该活动中有一个名为mPlayer
的 MediaPlayer 实例一样,你应该这样做:
mPlayer.setOnCompletionListener(new
OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
finish();
}
});
这样你应该有一个接一个播放电影的队列效果。