El API de Android nos permite varias maneras de requerir la atención del usuario. Lo que resulta realmente difícil es decidir qué tipo de notificación usar en cada momento. Os vamos a mostrar qué tipos de notificaciones usamos en Frogtek y para qué.

android:theme="@android:style/Theme.Dialog"

Este diálogo bloquea el hilo de la interfaz, incluso podemos decir que no sea        cancelable y evitar así que desaparezca cuando el usuario pulsa el botón                    "BACK", así nos aseguraremos que siempre pase por nuestro código para                cancelarlo.

  • Barra de estado: en frogtek usamos esta barra para notificar al usuario y no requerir su interacción inmediata, por ejemplo para:
    1. Mostrar que hay una nueva actualización de la aplicación disponible.device_2
    2. Realizar un proceso en background y que el usuario pueda ver el proceso si le interesa.

    tiendatek_notification_2

    NotificationManager mNotificationManager;
    mNotificationManager = (NotificationManager)
    theContext.getSystemService(android.content.Context.NOTIFICATION_SERVICE); 
    
    PendingIntent contentIntent = PendingIntent.getActivity(theContext, 1, notificationIntent, 1);
    
    long when = System.currentTimeMillis();
    
    Notification notificationStatus = new Notification(icon,text,when);
    
    notificationStatus.setLatestEventInfo(theContext, title, text, contentIntent);
    mNotificationManager.notify(notificationID,notificationStatus);
  • Toast: este tipo de notificación en Android es idóneo para informar al usuario en la pantalla principal sin distraerle demasiado y dejando que el hilo principal siga su ejecución. En nuestra aplicación lo usamos para indicar el importe estimado en caja después de cada operación. Incluso podemos personalizar las vista de un toast (en nuestro caso cambiamos los colores del fondo):
View layout = inflater.inflate(rLayout, viewGroup);
TextView text = (TextView) layout.findViewById(rIdText);
text.setText(textToShow);

Toast toast = new Toast(ctx);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

toast

  • Animaciones: no tienen su finalidad directa en notificar al usuario, pero en Tiendatek probamos qué tal quedaría una animación shake que agitase el total de una venta cada vez que el usuario añadía un producto. De este modo el usuario era consciente de dónde repercutía su acción y por otro lado simulábamos un efecto de añadir dinero.

Debemos tener cuidado a la hora de notificar al usuario, a lo largo de nuestra experiencia hemos observado los siguientes puntos clave:

  • Homogeneidad. En el caso de Tiendatek, al ser una aplicación de contabilidad decidimos pintar las cifras/mensajes en relación con la dirección del dinero. De este modo estamos educando la vista del usuario. De un rápido vistazo sabrá el sentido de una operación.
  • Bloqueante. A lo largo de la vida de la aplicación hemos ido cambiando notificaciones dependiendo de si se necesita bloquear el hilo principal o no.
  • Claridad en los botones de respuesta. No podemos sacar un pop-up bloqueante informando de algo con un botón de respuesta "SÍ". Este tipo de situaciones pueden desorientar al usuario.

Para terminar de recorrernos las notificaciones en Android, nos queda hablar de las luces LED y de los sonidos; estos últimos los hemos usado en Tiendatek para cuando un producto es leído por el lector de códigos de barras. Quizás Jose en un futuro post nos puede contar como añadir sonidos a una aplicación Android.