android,如何播放一行视频文件?

时间:2013-07-28 09:08:26

标签: android video android-intent android-activity playlist

我有一个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都是可玩的但是 同时。我需要他们轮流玩。如何有效地重新组织我的代码?

感谢您的关注。

1 个答案:

答案 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();              
    }
});

这样你应该有一个接一个播放电影的队列效果。