Galera estou precisando da ajuda de vocês, estou fazendo o download de uma arquivo e gostaria de mostrar uma barra de progresso conforme o download é processado, como faço isso?
Abaixo a minha classe que faz o download.
public class DownloadTask extends AsyncTask<String, Integer, String> {
private ProgressDialog mProgressDialog;
private Context context;
public DownloadTask(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
mProgressDialog = new ProgressDialog(context);
mProgressDialog.setMessage("Download:");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(true);
mProgressDialog.show();
}
@Override
protected String doInBackground(String... sUrl) {
InputStream input = null;
OutputStream output = null;
HttpURLConnection connection = null;
try {
URL url = new URL(sUrl[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
// Esperado o cod. de resposta igual a 200 ou seja conexão OK
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
return "Server returned HTTP "+connection.getResponseCode()+" "+connection.getResponseMessage();
}
// Comprimento do conteudo em bytes
int fileLength = connection.getContentLength();
// download the file
input = connection.getInputStream();
output = new FileOutputStream("//mnt/sdcard/Recebe/download.txt");
byte data[] = new byte[4096];
long total = 0;
int count;
mProgressDialog.setMax(17136);
int contador = 0;
while ((count = input.read(data)) != -1) {
// allow canceling with back button
if (isCancelled()) {
input.close();
return null;
}
total += count;
Log.e("TAM.WHILE", String.valueOf(contador++).toString());
if (fileLength > 0){// only if total length is known
//publishProgress((int) (total * 100 / fileLength));
//publishProgress(contador++);
mProgressDialog.setProgress(mProgressDialog.getProgress() + contador++);
}
output.write(data, 0, count);
}
} catch (Exception e) {
Log.e("ERROR", e.getMessage().toString());
return e.toString();
} finally {
try {
if (output != null)
output.close();
if (input != null)
input.close();
} catch (IOException ignored) {}
if (connection != null)
connection.disconnect();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... params) {
//mProgressDialog.setProgress(mProgressDialog.getProgress() + params[0]);
}
@Override
protected void onPostExecute(String params) {
mProgressDialog.dismiss();
}
}
Obrigado