Blog
Barra de progreso en una notificación con Android usando Java

En este tutorial aprenderemos a crear una barra de progreso en una notificación con Android usando el lenguaje de programación Java. Debido a que en este artículo vamos a utilizar una AsyncTask les recomiendo leer el tutorial en el cual se explica como usarla: http://programacionextrema.com/notificaciones-push-en-android.
¿Cómo crear una barra de progreso en una notificación con Android?
Como hemos dicho anteriormente para realizar esta tarea vamos a utilizar una AsyncTask, la cual va a ejecutar una tarea larga (en nuestro caso usaremos un sleep para simular la tarea) que vaya actualizando la barra de progreso en la notificación a medida que pase el tiempo:
import android.annotation.SuppressLint; import android.app.NotificationManager; import android.content.Context; import android.os.AsyncTask; import android.support.v4.app.NotificationCompat; public class ProgressNotification extends AsyncTask<Void, Integer, Boolean> { private Context context; private NotificationManager mNotificationManager; private android.support.v4.app.NotificationCompat.Builder mNotifyBuilder; private int numMessages; public ProgressNotification(Context context) { this.context = context; } @Override protected Boolean doInBackground(Void... object) { // Tarea larga que se ejecuta en segundo plano Integer value = 0; while (value < 100) { value += 10; try { Thread.sleep(1000); // Cada 1 segundo actualiza la barra de progreso publishProgress(value); } catch (InterruptedException e) { return false; } } return true; } @SuppressLint("NewApi") @Override protected void onProgressUpdate(Integer... values) { // Actualiza la barra de progreso mNotifyBuilder.setProgress(100, values[0], false); mNotificationManager.notify(numMessages, mNotifyBuilder.build()); } protected void onPreExecute() { mNotificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); // Establece un ID para la notificación, para que se pueda actualizar mNotifyBuilder = new NotificationCompat.Builder(context) .setContentTitle("Tarea en ejecución") .setContentText("Tarea en ejecución") .setSmallIcon(R.drawable.ic_launcher); // Comienza un bucle que procesa los datos y luego notifica al usuario mNotifyBuilder.setContentText("En proceso.."); // Debido a que el ID se mantiene sin cambios, la notificación // existente se actualiza mNotificationManager.notify(numMessages, mNotifyBuilder.build()); } @Override protected void onPostExecute(Boolean resultado) { // Muestra el resultado en la notificación si fue exitoso o no if (resultado) { mNotifyBuilder.setContentText("Tarea terminada correctamente"); } else { mNotifyBuilder.setContentText("La tarea no se pudo realizar"); } // Elimina la barra de progreso mNotifyBuilder.setProgress(0, 0, false); mNotificationManager.notify(numMessages, mNotifyBuilder.build()); } }
Luego para probar nuestra barra de progreso podemos ejecutar el siguiente código en una Activity:
new ProgressNotification(getApplicationContext()).execute();
Y el resultado de ejecutar el programa sería el siguiente:

Bueno gente, hemos llegado al final de este tutorial, espero que les sea de gran utilidad. Ante cualquier problema no duden en dejar un comentario.