Notificaciones mejoradas y listas para usar en Android

Introducción

Las notificaciones son una forma muy útil de interactuar con los usuarios de su aplicación y, con Android Wear, ahora también tenemos dispositivos portátiles con Android. Por lo tanto, es una buena idea aprender a aprovechar estas nuevas funciones agregando acciones apropiadas a las notificaciones o creando acciones que solo son visibles en dispositivos portátiles..

En este tutorial, te mostraré la implementación moderna de notificaciones, como se muestra durante la I / O de Google de este año. Usaremos el nuevo paquete de soporte y ampliaremos sus capacidades agregando acciones que solo son visibles en los relojes inteligentes, los únicos dispositivos portátiles disponibles con Android Wear en el momento de la redacción..

1. Requisitos previos

Para este proyecto, puede utilizar Android Studio o las Herramientas de desarrollo de Android. Si está utilizando Android Studio, asegúrese de agregar la siguiente línea a su construir.gradle expediente.

compilar "com.android.support:support-v4:20.0.+"

2. Configuración del proyecto

Inicie su IDE y cree un nuevo proyecto de Android, o abra un proyecto que haya creado anteriormente. Para este tutorial, crearé un nuevo proyecto y lo nombraré. Notificaciones mejoradas. No olvides usar un nombre de paquete único.

Al configurar el proyecto, asegúrese de seleccionar Actividad vacía opción en el Crear actividad paso.

Una vez creado el proyecto, crea una nueva Actividad., ActivatedActivity. Esta actividad se llamará desde una notificación en su dispositivo móvil o portátil.

Antes de continuar, necesitamos actualizar el strings.xml archivo agregando las cadenas que vamos a utilizar un poco más adelante en este tutorial.

  Notificaciones mejoradas ActivatedActivity Hola"!" Yo "" soy la actividad activada Pruébame para una nueva notificación Hola mamá"!" Yo "'" "soy un título Mírame"!" Yo "'' soy un contenido de notificación sexy Deje que "" vea el autor "" perfil de Twitter Solo aparezco aqui 

3. Creando el diseño

El siguiente paso es crear un diseño para el Actividad principal y el ActivatedActivity clases El diseño para el Actividad principal la clase se muestra a continuación.

 

Y este es el diseño para el ActivatedActivity clase.

  

4. Creando una Notificación

Creamos una notificación en el Actividad principal clase. En el fragmento de código a continuación, puede ver qué pasos están involucrados en la creación de una notificación. He comentado el bloque de código para ayudarlo a comprender los distintos pasos, pero vamos a ver el fragmento paso a paso..

paquete com.androiheroes.improvednotifications; importar android.app.Activity; importar android.app.Notification; importar android.app.PendingIntent; import android.content.Intent; importar android.net.Uri; importar android.os.Bundle; importar android.support.v4.app.NotificationCompat; importar android.support.v4.app.NotificationManagerCompat; importar android.view.View; importar android.widget.Button; la clase pública MainActivity extiende la actividad / * Widgets que va a usar * / botón privado; / * * Este es el ID de notificación * Puede usarlo para descartar la notificación que llama al método .cancel () en el objeto notification_manager * / private int notification_id = 1; Cadena final privada NOTIFICATION_ID = "notification_id"; / * Estas son las clases que usa para iniciar la notificación * / private NotificationCompat.Builder notification_builder; NotificationManagerCompat notification_manager privado; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); / * * Paso 1 * Creación de una instancia del botón que utiliza para iniciar la notificación * / button = (Button) findViewById (R.id.notification_button); / * * Paso 2 * Crea la intención que lanzarás cuando se presione tu notificación * y deja que PendingIntent lo maneje * / Intent open_activity_intent = new Intent (this, ActivatedActivity.class); open_activity_intent.putExtra (NOTIFICATION_ID, notification_id); PendingIntent pending_intent = PendingIntent.getActivity (this, 0, open_activity_intent, PendingIntent.FLAG_CANCEL_CURRENT); / * * Paso 3 * Aquí crea la notificación y comienza a agregar todos los atributos que va a usar * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string .notification_title)) .setContentText (getString (R.string.notification_text)) / * * Este método especifica que nuestra notificación debe tener todas las características predeterminadas de una notificación * como sonido y vibración * / .setDefaults (Notification.DEFAULT_ALL) / * Este método descartará la notificación una vez que se presione * / .setAutoCancel (true) .setContentIntent (pending_intent); / * * Paso 4 * Aquí creamos una instancia del objeto de Notification Manager para iniciar / detener las notificaciones * / notification_manager = NotificationManagerCompat.from (this);  @ Anular la anulación protegida onStart () super.onStart (); / * * Paso 5 * La notificación aparecerá cuando presione el botón en la pantalla * / button.setOnClickListener (new View.OnClickListener () @Override public void onClick (View v) notification_manager.notify (notification_id, notification_builder .construir());  ); 

Paso 1

Primero creamos una instancia del botón que usaremos para iniciar la notificación. También puede crear la notificación directamente en el onCreate método,pero al usar un botón, tiene más control sobre el momento exacto de la notificación.

Paso 2

En el segundo paso, instanciamos una Intención objeto con la tarea a realizar cuando se toca la notificación. Pasamos el objeto a una PendingIntent instancia para manejarlo más tarde cuando se llama.

Paso 3

Usando la biblioteca de soporte de Android, creamos la notificación usando la Constructor clase de NotificationCompat objeto y establecer sus atributos.

Etapa 4

En este paso, instanciamos una NotificationManagerCompat instancia para iniciar y / o detener la notificación en cualquier momento que queramos. Esto hará que las pruebas sean mucho más fáciles.

Paso 5

Cuando se pulsa el botón, la notificación se activa utilizando la tecla notificar método.

No te olvides de usar las clases de la biblioteca de soporte de Android. De esta manera, puede estar seguro de que su notificación se verá bien en versiones anteriores de Android.

Ahora puede ejecutar la aplicación, tocar el botón y ver aparecer la notificación en la parte superior de la pantalla. Si toca la notificación, debería ir a la ActivatedActivity actividad. Con la notificación configurada y en funcionamiento, es hora de comenzar a agregarle acciones..

5. Agregando Acciones a la Notificación

Puede agregar acciones adicionales a la notificación invocando el addAction método en el notification_builder objeto. Para que esto funcione, necesitas pasar una PendingIntent instancia con la tarea que te gusta realizar.

En el siguiente fragmento de código, le muestro los pasos que debe implementar para crear una acción con una tarea personalizada. En este ejemplo, te llevaré a mi perfil de Twitter en la aplicación de Twitter. Esto significa que necesito un URI instancia que apunta a mi perfil de Twitter, agregue esto a la Intención, y dejar que el PendingIntent manejarlo cuando se toca la acción. Inserte este bloque de código antes de la instanciación de la notification_builder objeto.

 / * La acción en la notificación de la computadora de mano debe realizar alguna tarea * En este caso, el perfil de Twitter del autor se abrirá, en la aplicación de Twitter, cuando se haga clic en *, pero puede cambiarlo con su perfil si lo desea;) * / Intención open_twitter_profile = new Intent (Intent.ACTION_VIEW); Uri twitter_profile_location = Uri.parse ("twitter: // user? Screen_name = @ kerpie"); open_twitter_profile.setData (twitter_profile_location); PendingIntent twitter_intent = PendingIntent.getActivity (this, 0, open_twitter_profile, 0);

Para añadir la acción, invoca el addAction método en el notification_builder objeto y pasar en el open_twitter_profile objeto que acabamos de crear.

/ * * Aquí crea la notificación y comienza a agregar todos los atributos * que va a usar * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Este método especifica que su notificación debe tener todas las características predeterminadas de una notificación * como sonido y vibración * / .setDefaults (Notification.DEFAULT_ALL) / * Este método va a descartar la notificación una vez que se presione * / .setAutoCancel (true) .setContentIntent (pending_intent) / * Aquí puede agregar acciones a su dispositivo portátil * solo cuide la cantidad de acciones que agregue * en este caso, como en muchos otros, menos es más * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent);

Ejecute la aplicación, toque el botón para activar la notificación, y debería ver aparecer la notificación junto con la acción que acabamos de crear..

Si bien puede agregar más acciones a una notificación usando el addAction método, asegúrese de que el usuario no esté abrumado por la cantidad de acciones que puede elegir.

6. Apoyo a Android Wear

Hasta ahora, hemos utilizado las clases de la biblioteca de soporte de Android para asegurarnos de que las notificaciones también se muestren en los relojes inteligentes que ejecutan Android Wear. Puede ejecutar la aplicación en un smartwatch físico o puede probarla en el emulador desde el Administrador de dispositivos virtuales de Android. De cualquier manera, necesita sincronizar su dispositivo con el reloj inteligente.

Antes de sincronizar su dispositivo con el emulador de smartwatch, debe instalar la aplicación Android Wear, que está disponible en Google Play. Después de desconectar todos los dispositivos Android conectados a su computadora, ejecute el siguiente comando desde la línea de comandos.

dispositivos adb

Este comando enumera los dispositivos conectados a su máquina de desarrollo. Debería ver dos de ellos, el emulador de smartwatch y su dispositivo. Luego ejecute el siguiente comando desde la línea de comandos para habilitar el reenvío de puertos.

adb -d tcp delantero: 5601 tcp: 5601

Ahora puede conectar su dispositivo con el emulador y activar las notificaciones utilizando la aplicación Android Wear. Ejecute la aplicación de nuevo y active la notificación. La notificación debe ser similar a la que se muestra a continuación..

7. Agregando acciones de solo uso

Es posible agregar acciones que solo son visibles en los wearables. Esto se logra invocando el addAction método de la WearableExtender clase. El resultado es que cualquier acción añadida a través del NotificationCompat.Builder la clase es ignorada.

Como hicimos antes, para desencadenar la acción, hacemos uso de un Intención y un PendingIntent instancia, pero crearemos la acción que se muestra en el dispositivo portátil utilizando el Constructor clase de un especial Acción clase, que es parte de la NotificationCompat clase como se muestra a continuación.

/ * Aquí creamos una instancia de la intención que queremos usar cuando se presiona la acción en el reloj inteligente * / Intent wearable_intent = new Intent (this, ActivatedActivity.class); PendingIntent wearable_pending_intent = PendingIntent.getActivity (this, 0, wearable_intent, PendingIntent.FLAG_UPDATE_CURRENT); / * Ahora tenemos un intento para el wearable creado, tenemos que crear una acción wearable usándolo * / NotificationCompat.Action wearable_action = new NotificationCompat.Action.Builder (android.R.drawable.ic_dialog_email, getString (R.string.wearable_action) , wearable_pending_intent) .build ();

Entonces agregamos esta acción a la notification_builder objeto usando el ampliar método como se muestra a continuación.

/ * * Aquí crea la notificación y comienza a agregar todos los atributos * que va a usar * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Este método especifica que su notificación debe tener todas las características predeterminadas de una notificación * como sonido y vibración * / .setDefaults (Notification.DEFAULT_ALL) / * Este método va a descartar la notificación una vez que se presione * / .setAutoCancel (true) .setContentIntent (pending_intent) / * Aquí puede agregar acciones a su dispositivo portátil * solo cuide la cantidad de acciones que agregue * en este caso, como en muchos otros, menos es más * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent) / * * Aquí se agrega una acción que solo se puede usar * Esta acción no será visible en el dispositivo de mano * / .extend (nuevo WearableExtender ( ) .addAction (wearable_action));

Ejecute la aplicación y toque el botón para mostrar la notificación en su dispositivo. Debe ser diferente a la notificación que aparece en el emulador portátil..

Conclusión

Los relojes inteligentes están aquí para quedarse, al menos durante un tiempo, y, por lo tanto, es importante aprovechar esta nueva forma de comunicarse con los usuarios de su aplicación. Espero que hayas encontrado el tutorial útil y no olvides compartirlo si te gustó..