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.