0

我有一个 android 应用程序,它允许播放视频文件,特别是来自一个网络媒体资源的不同系列的剧集。

接下来播放视频文件:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(mp4url), "video/mp4");
startActivity(intent);

其中mp4url- 是一个字符串变量

现在我想允许程序播放视频文件队列。

我试着做下一个方法:

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 变量,用于在所选视频文件之后播放的视频文件队列。

但它没有用。实际上所有的视频文件都可以
同时播放。我需要他们轮流上场。如何有效地重组我的代码?

感谢您的关注。

4

1 回答 1

0

创建一个电影网址的数组列表(例如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在活动中播放电影(您使用带有电影 url 的意图调用的活动),那么当电影播放完毕时,您应该finish进行该活动。就像如果您在该活动中调用了MediaPlayer实例mPlayer,那么您应该这样做:

mPlayer.setOnCompletionListener(new
    OnCompletionListener() {        
        @Override
        public void onCompletion(MediaPlayer arg0) {
        finish();              
    }
});

这样一来,您就应该拥有一个接一个播放电影的队列效果。

于 2013-07-28T09:50:02.307 回答