Android : Progress Bar with AsyncTask in Android

on Thursday, July 10, 2014


I have a function name CreateVideo(), the problems are: 1/ Because function must be run until it finishs to create a video, I cannot know how many percent completed of the video. 2/ Did I put the function at a right place?


Here is the code:



private class MyVideo extends AsyncTask<Void, Void, String> {

private Context context;
private String output;
private String quality;
private FramePackage framePackage;

CreateMP4Video createMP4Video;

public MyVideo(Context context, FramePackage framePackage, String output, String quality) {
// TODO Auto-generated constructor stub
this.context = context;
this.output = output;
this.quality = quality;
this.framePackage = framePackage;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
// Create Video Maker
createMP4Video = new CreateMP4Video(context, framePackage, output, quality);

// Create progress
mProgress = new ProgressDialog(MainActivity.this);
mProgress.setTitle("Please Wait..");
mProgress.setMessage("Creating Video...");
mProgress.setProgressStyle(mProgress.STYLE_HORIZONTAL);
mProgress.setProgress(0);
mProgress.setMax(framePackage.getCount());
mProgress.setCancelable(false);
mProgress.show();
};


@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
try {
createMP4Video.CreateVideo();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while (mProgress.getProgress() <= mProgress.getMax()) {

try {

Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

updateBarHandler.post(new Runnable() {

public void run() {
mProgress.setProgress(createMP4Video.getCurrentFrame());
}
});

if (mProgress.getProgress() == mProgress.getMax()) {
mProgress.dismiss();
}
}
return null;
}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
}

}


Thank you in advance!


0 comments:

Post a Comment