Android VideoView是否循环播放多个视频?
我已经成功地在视频视图中播放了一个视频。 现在我想在一个循环中播放2个或更多视频。 视频正在从服务器下载并保存在SD卡中,我想从那里播放 下面的代码正在运行,但问题只是循环播放的第一个视频。 我想一个接一个地循环播放所有3个视频 我的代码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.
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();
}
}