Android

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:

Barra de progreso en Android

Barra de progreso en Android

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.

Compartilo en
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestEmail this to someone

AboutJosé Di Meglio

Apasionado de la tecnología y programación. Aportando información gratuita sobre el mundo de la informática.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *