Android VideoView是否循环播放多个视频?

Android VideoView是否循环播放多个视频?,android,video,android-videoview,android-sdcard,Android,Video,Android Videoview,Android Sdcard,我已经成功地在视频视图中播放了一个视频。 现在我想在一个循环中播放2个或更多视频。 视频正在从服务器下载并保存在SD卡中,我想从那里播放 下面的代码正在运行,但问题只是循环播放的第一个视频。 我想一个接一个地循环播放所有3个视频 我的代码 public class display extends Activity implements MediaPlayer.OnPreparedListener ,MediaPlayer.OnCompletionListener { Uri Uvid; io.

我已经成功地在视频视图中播放了一个视频。 现在我想在一个循环中播放2个或更多视频。 视频正在从服务器下载并保存在SD卡中,我想从那里播放

下面的代码正在运行,但问题只是循环播放的第一个视频。 我想一个接一个地循环播放所有3个视频

我的代码

public class display extends Activity implements MediaPlayer.OnPreparedListener ,MediaPlayer.OnCompletionListener {

Uri Uvid;
io.vov.vitamio.MediaPlayer mplyer;
private SurfaceHolder vidHolder;
SurfaceView Sview;
Uri uri;
File[] files;
int videoIncrementer = 0, i = 0;
String[] tempPath;
String videolink[];
String id;
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
File file, dir, root;

private static final String VIDEO_URL = "http://eazeltv.com/admin/api/videonew.php";
private SharedPreference sharedPreference;
VideoView Vvid;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))
        return;
    setContentView(R.layout.activity_display);
    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    Vvid = (VideoView) findViewById(R.id.videoV);

    pDialog = new ProgressDialog(display.this);
    sharedPreference = new SharedPreference();
    id = sharedPreference.getValue(display.this);


   new DownloadFileFromURL().execute();
}





class DownloadFileFromURL extends AsyncTask<String, String, String> {
    List params;
    /**
     * Before starting background thread Show Progress Bar Dialog
     */
    @Override
    public void onPreExecute() {
        super.onPreExecute();
        pDialog.setMessage("Downloading Video...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();

        // id = bundle.getString("id");
        params = new ArrayList();
        params.add(new BasicNameValuePair("id", id));

        System.out.println("=====Mazhar==VideoplayerID=====" + id);

    }

    /**
     * Downloading file in background thread
     */
    @Override
    public String doInBackground(String... f_url) {

        // File cacheDir = getBaseContext().getCacheDir();
        // File tempFile = new File(cacheDir.getPath());

        System.out.println("=====mazhar==Downloading file in background thread==" + dir);

        root = android.os.Environment.getExternalStorageDirectory();
        dir = new File(root.getAbsolutePath() + "/myvideo");
        if (dir.exists() == false) {
            dir.mkdirs();
        }
        files = dir.listFiles();
        tempPath = new String[files.length];

        if (files.length > 0) {
            System.out.println("=====mazhar==length thread==");
            int i = 0;
            for (File file : files) {
                tempPath[i] = file.getAbsolutePath();

                System.out.println("=====mazhar==Downloading==" + tempPath[i]);

                if (file.isDirectory()) {
                    // inFiles.addAll(getListFiles(file));
                    if (file.getName().endsWith(".mp4")) {
                        // inFiles.add(file);
                        Toast.makeText(display.this, file.getName(), Toast.LENGTH_SHORT).show();
                        System.out.println("=====mazhar==in background thread==" + file);
                    }

                }
                i++;
            }
        } else {

            JSONArray Jarray = null;
            JSONObject json = jsonParser.makeHttpRequest(VIDEO_URL, "POST", params);
            if (json != null) {
                System.out.println("=====Mazhar==JsonVideo=start===" + json);
                try {
                    Jarray = json.getJSONArray("data");
                    System.out.println("===Mazhar==VideoJArray=start===" + Jarray);
                } catch (JSONException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                videolink = new String[Jarray.length()];


                System.out.println("=====mazhar====Jarray===" + Jarray.length());

                downloadfile(videolink, Jarray);

            } else {
                System.out.println("====Mazhar===VideoURL==JSON Null");
            }
        }
        return null;
    }

    /**
     * Updating progress bar
     */
    @Override
    public void onProgressUpdate(String... progress) {
        // setting progress percentage
        // pDialog.setProgress(Integer.parseInt(progress[0]));

    }

    /**
     * After completing background task Dismiss the progress dialog
     **/
    @Override
    public void onPostExecute(String file_url) {

        playVideo();

        pDialog.dismiss();
    }

}



private void downloadfile(String[] VLink, JSONArray Jarray) {

    for (int j = 0; j < Jarray.length(); j++) {

        try {

            JSONObject Jasonobject = Jarray.getJSONObject(j);
            System.out.println("=====Mazda==VideoLinks=====" + Jasonobject);

            // type[j] = Jasonobject.getString("type");
            // System.out.println("=====Mazhar==TypeLinks=11111===="+type[j]);
            videolink[j] = Jasonobject.getString("video_link");
            // videolink = videolink.replaceAll("/", "");
            videolink[j] = videolink[j].trim().replaceAll(" ", "%20");
            // jsonFormattedString.add(videolink);
            System.out.println("==arrayV==Mazhar===" + videolink[j]);
            // videolink = json.getString("video_link");

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    // temppath tha
    tempPath = new String[Jarray.length()];

    // Toast.makeText(getApplicationContext(),"Temp Path is" + tempPath ,
    System.out.println("===Mazhar==Temp Path is :" + tempPath[i]);
    // Toast.LENGTH_LONG).show();
    for (int i = 0; i < Jarray.length(); i++) {
        try {
            storeSDCard(videolink[i], i);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

private void storeSDCard(String path, int arrayIndex) throws IOException {
    try {
        Log.d("TwoSizeVideo", "storeSDCard");
        URLConnection cn = new URL(path).openConnection();
        cn.connect();
        InputStream istream = cn.getInputStream();

        // try {
        // System.out.println("=====storeSDCard==Type==="+type[arrayIndex]);
        // if(type[arrayIndex].equals("mp4")){

        File savePath = new File(dir, "");
        System.out.println("=====storeSDCard=====" + dir);

        file = File.createTempFile("AdMovies", ".mp4", savePath);
        tempPath[arrayIndex] = file.getAbsolutePath();
        System.out.println("===storeSDCard==tempath===" + tempPath[arrayIndex]);

        FileOutputStream out = new FileOutputStream(file);
        byte buf[] = new byte[16384];
        do {
            int numread = istream.read(buf);
            if (numread <= 0)
                break;
            out.write(buf, 0, numread);

        } while (true);
        out.close();
        istream.close();

    } catch (Exception e) {
        System.out.println("===catch===StoreCard==" + e);
    }
}


public void playVideo()
{
    System.out.println("PlayVideo");
    uri = Uri.parse(tempPath[videoIncrementer]);
    System.out.println("TempPath" + tempPath[videoIncrementer]);
    MediaController mediaController = new MediaController(this);
    Vvid.setVideoURI(uri);
    Vvid.requestFocus();
    Vvid.setMediaController(mediaController);
    Vvid.setOnCompletionListener(this);
    Vvid.setOnPreparedListener(this);
    Vvid.start();

}


@Override
public void onPrepared(MediaPlayer mp) {
    mp.setLooping(true);
}

@Override
public void onCompletion(MediaPlayer mp) {
    try {
    mp.stop();
    mp.reset();
    mp.setDataSource(tempPath[videoIncrementer]);
    mp.prepare();
    mp.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
}
公共类显示扩展活动实现MediaPlayer.OnPreparedListener、MediaPlayer.OnCompletionListener{
乌里乌维德;
io.vov.vitamio.MediaPlayer;
私人地表持有人;
表面视图;
Uri;
文件[]文件;
int videoIncrementer=0,i=0;
字符串[]临时路径;
字符串视频链接[];
字符串id;
私人对话;
JSONParser JSONParser=新的JSONParser();
文件,目录,根;
私有静态最终字符串视频\u URL=”http://eazeltv.com/admin/api/videonew.php";
私人共享参考共享参考;
视频视图Vvid;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(!io.vov.vitamio.LibsChecker.checkVitamioLibs(此))
返回;
setContentView(R.layout.activity_显示);
getWindow().setFormat(像素格式.半透明);
Vvid=(视频视图)findViewById(R.id.videoV);
pDialog=新建进度对话框(display.this);
SharedReference=新的SharedReference();
id=SharedReference.getValue(display.this);
新建下载文件fromURL().execute();
}
类DownloadFileFromURL扩展异步任务{
列出参数;
/**
*启动后台线程前显示进度条对话框
*/
@凌驾
公共无效onPreExecute(){
super.onPreExecute();
setMessage(“下载视频…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
//id=bundle.getString(“id”);
params=新的ArrayList();
参数add(新的BasicNameValuePair(“id”,id));
System.out.println(“==Mazhar==VideoplayerID==”+id);
}
/**
*在后台线程中下载文件
*/
@凌驾
公共字符串doInBackground(字符串…f_url){
//文件cacheDir=getBaseContext().getCacheDir();
//File tempFile=新文件(cacheDir.getPath());
System.out.println(“===mazhar==backgroundingfile-in-background-thread==”+dir);
root=android.os.Environment.getExternalStorageDirectory();
dir=新文件(root.getAbsolutePath()+“/myvideo”);
if(dir.exists()==false){
dir.mkdirs();
}
files=dir.listFiles();
tempPath=新字符串[files.length];
如果(files.length>0){
System.out.println(“==mazhar==length thread==”);
int i=0;
用于(文件:文件){
tempPath[i]=file.getAbsolutePath();
System.out.println(“==mazhar==Downloading==”+tempPath[i]);
if(file.isDirectory()){
//addAll(getListFiles(file));
if(file.getName().endsWith(“.mp4”)){
//inFiles.add(文件);
Toast.makeText(display.this,file.getName(),Toast.LENGTH_SHORT.show();
System.out.println(“==mazhar==in-background-thread==”+文件);
}
}
i++;
}
}否则{
JSONArray-Jarray=null;
JSONObject json=jsonParser.makeHttpRequest(视频URL,“POST”,参数);
if(json!=null){
System.out.println(“==Mazhar==JsonVideo=start==”+json);
试一试{
Jarray=json.getJSONArray(“数据”);
System.out.println(“==Mazhar==VideoJArray=start===”+Jarray);
}捕获(JSONException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
videolink=新字符串[Jarray.length()];
System.out.println(“==mazhar===Jarray==”+Jarray.length());
下载文件(视频链接,Jarray);
}否则{
System.out.println(“==Mazhar==VideoURL==JSON Null”);
}
}
返回null;
}
/**
*更新进度条
*/
@凌驾
public void onProgressUpdate(字符串…进度){
//设置进度百分比
//pDialog.setProgress(Integer.parseInt(progress[0]));
}
/**
*完成后台任务后,关闭“进度”对话框
**/
@凌驾
public void onPostExecute(字符串文件\u url){
播放视频();
pDialog.disclose();
}
}
私有void下载文件(字符串[]VLink,JSONArray Jarray){
对于(int j=0;j    @Override
public void onCompletion(MediaPlayer mp) {
    try {
    mp.stop();
    mp.reset();
    // Add this line
    videoIncrementer = ++videoIncrementer < tempPath.length ? videoIncrementer : 0;
    mp.setDataSource(tempPath[videoIncrementer]);
    mp.prepare();
    mp.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

}