[RESOLVIDO] Android - Barra de Progresso

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

Galera, consegui inserir a barra de progresso, o problema agora é que a barra de progresso é preenchida mais o download não terminou, pois não passou pelo metodo onPostExecute para fechar a barra, o que estou fazendo de errado. Abaixo o código.

[code]
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 totalSize = connection.getContentLength();

			// download the file
			input = connection.getInputStream();
			output = new FileOutputStream("//mnt/sdcard/JN/Recebe/download.txt");

			byte buffer[] = new byte[1];
			long downloadedSize = 0;
			int bufferLength; 
			while ((bufferLength = input.read(buffer)) != -1) {
				if (isCancelled()) {
					input.close();
					return null;
				}
				downloadedSize += bufferLength;

				output.write(buffer, 0, bufferLength);
				publishProgress((int)downloadedSize, totalSize);
			}
		} 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]);
		mProgressDialog.setMax(params[1]);
	}

	@Override
	protected void onPostExecute(String params) {
		mProgressDialog.dismiss();
	}
}[/code]

Resolvido era uma falta de atenção minha.