Primeros pasos con el preview de Android wear
Con el preview del Android wear podemos ya ver en un emulador cómo funcionaría el envío de notificaciones a un dispositivo wereable. Previamente debemos de habernos apuntado como testeadores para tener acceso a la aplicación que va a permitir mandar todas las notificaciones de nuestro teléfono-tablet al emulador así como descargarnos la librería para usar las notificaciones en el dispositivo wereable.
Instalación.
Suponemos que ya tenemos instalado un IDE (en nuestro caso vamos a trabajar siempre con eclipse) y el SDK de Android. Los requisitos que debemos cumplir son:
- usar el ADT plugin para eclipse versión 22.6.1 o superior.
- Android SDK Tools igual o superior al 22.6
Tenemos que instalar también una imagen de sistema para el Android wear. En el android SDK manager seleccionar debajo de Android 4.4.2, Android Wear ARM EABI v7a System Image. También necesitamos tener el último paquete de compatibilidad (Está en la sección de extras).
Establecer el Emulador para Android wear.
Desde el Android virtual device manager vamos a crearnos un nuevo dispositivo. En la documentación se indica que el nombre del dispositivo debe ser “AndroidWearSquare” O “AndroidWearRound” dependiendo de si queremos un emulador cuadrado o redondo.Seleccionamos Android 4.4.2 como target, el CPU tiene que ser el Android Wear AMR que acabamos de instalar y el Skin el Square o Round.
Si nos hemos dado de alta como testeadores recibiremos un mail desde el que podemos acceder a una aplicación para conectar nuestro dispositivo android (tiene que tener una versión 4.3). Ya tenemos el emulador que se va a comportar como nuestro dispositivo wereable también el dispositivo Android al que va a establecer la conexión para poder recibir notificaciones. Para establecer la conexión tenemos que ir al directorio platform-tools y ejecutar el comando:
adb -d forward tcp:5601 tcp:5601
En la aplicación android debemos activar el permitir que nuestro dispositivo pueda compartir la notificaciones.
Vistazo rápido a la interfaz gráfica.
Automáticamente cualquier notificación que tengamos en un móvil o tableta android se mostrará en el dispositivo wereable. Igualmente, si por ejemplo, descartamos una notificación desde el dispositivo wereable esta también desaparecerá del móvil.
Las APIs que por ahora nos ofrece Android wear nos permitirá mejorar la experiencia del usuario, por ejemplo, permitiendo contestar una notificación que espera un texto mediante el uso de voz.
Tendremos dos tipos de “espacios” dependiendo de si somos nosotros los que sugerimos información al usuario o es el usuario el que la solicita a través de los comandos de voz. En el caso de las sugerencias, estas se mostrarán como una lista de tarjetas verticales (siguiendo el mismo planteamiento que Google Now). En el dispositivo, podremos mostrar a la vez sólo una tarjeta más una imagen que complete la información que estamos dando. Por ejemplo, si estamos recibiendo una llamada, podríamos mostrar la imagen del contacto y en la tarjeta el nombre. Si podemos realizar acciones con la notificación (contestar una llamada, solicitar más información, etc) encontraremos tarjetas según nos desplacemos verticalmente con cada una de las acciones).
En el caso de que el usuario demande una acción tendrá que utilizar el comando de voz “Ok Google” o pulsar el icono “g” de la pantalla de inicio. Se mostrarán una serie de tarjetas con las posibles acciones. En las futuras versiones del Android Wear SDK podremos hacer que nuestras aplicaciones respondan a los intents generados.
Preparar nuestro proyecto de prueba.
En el mail que recibimos cuando nos hacemos testeadores también vamos a recibir un enlace desde el que nos descargaremos una nueva librería de soporte que incluye APIs para poder optimizar nuestras notificaciones.
Para poder probar el envío de notificaciones tenemos que crear un nuevo proyecto y tener en la carpeta libs tanto la librería de soporte (la encontramos en /extras/android/support/v4/android-support-v4.jar), si bien eclipse ya nos la añade automáticamente. Tenemos que añadir también el jar weareable-preview-support.jar que encontramos en el zip que nos hemos descargado desde el correo. Finalmente les añadiremos al build path.
En Android, no vamos a encontrar diferencias con respecto a la forma de declarar y gestionar una notificación.
Para construir nuestras notificaciones usamos la clase NotificationCompat.Builder. Esta clase nos permite crear notificaciones con las últimas características, como poder añadir botones de acción en la propia notificación, permitiendo usar dispositivos con Android 1.6 que no lo soportan directamente.
En la aplicación vamos a tener dos botones, con uno crearemos una notificación a la que mandaremos un pending intent para recibir más información mediante otra notificación pero sin botón de acción (es decir, el wereable creará la tarjeta con la acción de abrir automáticamente). Con el segundo botón mandaremos la misma notificación pero esta vez con un botón de acción.
Botón1.
int notificacionId = 1; // Instanciamos nuestra llamada a la pantalla de premios Intent viewIntent = new Intent(this, PremioActivity.class); viewIntent.putExtra(ID_NOTIFICACION_PREMIO, ID_EVENTO); PendingIntent viewPendingIntent = PendingIntent.getActivity(this, 0, viewIntent, 0); //Creamos la notificación. NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Lotería") .setContentText("Has ganado un premio en la lotería") .setContentIntent(viewPendingIntent); //Obtenemos la instancia NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); //Enviamos la notificación notificationManager.notify(notificacionId, notificationBuilder.build());
Si ya hemos trabajado con notificaciones este código no tiene mucho misterio. Mediante el builder del NotificationCompat indicamos el icono que debe mostrar la notificación (setSmallIcon), el título (setContentTitle) y el texto (setContentText).
Como queremos que la notificación haga algo, también le mandamos el pending intent indicándole la actividad que debe abrir (setContentIntent).
Un pending intent es un envoltorio de un intent, que nos permite, tener permisos para poder ejecutar desde otra aplicación intents que estén llamando a nuestra aplicación.Desde una notificación, si queremos que se ejecute alguna acción que nos provee nuestra aplicación deberemos hacerlo a través de un pending intent.
En nuestro intent llamamos a la clase PremioActivity.class que nos muestra otra notificación con el importe del premio. Y aquí tenemos el ejemplo de lanzar la notificación. Se muestra una tarjeta con el icono, el título y el texto. Si nos desplazamos a la izquierda nos aparecerá una opción para poder ejecutar el intent que hemos lanzado junto a la notificación.
Si pulsamos la acción “Open” se ejecutará la llamada a la actividad PremioActivity.class y recibiremos una segunda notificación.
Si necesitamos añadir un texto más largo a la notificación podemos hacerlo mediante el método setStyle de la clase NotificationCompat.Builder al que podemos pasar tanto un objeto BigStyle como un InboxStyle.
BigStyle nos permite incluir un texto largo en la notificación. InboxStyle, también nos permite mostrar un texto largo, pero en este caso podremos añadir una lista de hasta cinco cadenas.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle(); bigStyle.bigText(getString(R.string.texto_largo));
En este caso, podemos desplazar la tarjeta hacia arriba para ver el resto del contenido.
El segundo botón lo vamos a utilizar para generar una notificación con un botón de acción y mandar también una imagen que complemente la información de la notificación.
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("Lotería") .setContentText("Has ganado un premio en la lotería") .setContentIntent(viewPendingIntent) .addAction(R.drawable.ic_launcher, getString(R.string.ver_premio), viewPendingIntent) .setLargeIcon(bitmap);
Para añadir los botones de acción utilizamos el método addAction(icono, texto, pending intent). El resultado es que ahora tenemos en la parte de abajo dos rayas que nos indican que estamos en la primera tarjeta y que podemos navegar en la segunda.
Para poder mostrar una imagen que nos ayude a mostrar más información utilizaremos el método .setLargeIcon(bitmap);
En la segunda se muestra nuestro botón de acción.
Reader Comments (1)
no puedo conectarla con la app y cuando lo instalo en el emulador me sale una nube con una diagonal encima