Android : Download a file using asynctask and showing progressbar

on Tuesday, August 12, 2014


i have a following code to download an image , show a progress bar and return its bitmap. but the bitmap always returns null.. once i remove the while loop, the bitmap has value, but i dont get a progress bar.



@Override
protected Bitmap doInBackground(String... params) {
bitmap = null;

try {
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoInput(true);
connection.connect();
int lenghtOfFile = connection.getContentLength();
InputStream input = connection.getInputStream();
OutputStream output = new FileOutputStream(Environment
.getExternalStorageDirectory().toString()
+ "/DCIM/downloadedfile.jpg");

byte data[] = new byte[1024];

long total = 0;

int count;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress((int) ((total * 100) / lenghtOfFile));
output.write(data, 0, count);

}

Bitmap bitmap = BitmapFactory.decodeStream(input);

return bitmap;

} catch (IOException e) {

Log.e("could not load ", e.getMessage());
e.printStackTrace();
return null;
}

}

protected void onProgressUpdate(Integer... progress) {
pDialog.setProgress(progress[0]);
}

public void onPostExecute(Bitmap result) {
pDialog.dismiss();
listener.onTaskCompleted(result);
}
enter code here

0 comments:

Post a Comment