Cómo enviar y sincronizar datos en Wear

Con Wear OS by Google, un reloj puede comunicarse con una red directamente sin acceder a un teléfono con Android o iOS.

Esta página contiene los siguientes requisitos previos y dependencias:

De manera independiente, la API de Data Layer para wearables, que forma parte de Servicios de Google Play, brinda un canal de comunicación opcional a las apps. Si bien una app para Wear puede comunicarse con una app para teléfonos usando la API de Data Layer para wearables, no es recomendable conectarse a una red con esta API.

La API de Data Layer tiene un conjunto de objetos de datos que el sistema puede enviar y sincronizar, junto con objetos de escucha que informan a las apps sobre ciertos eventos de la siguiente manera:

Elemento de datos
Un DataItem proporciona almacenamiento de datos con sincronización automática entre el dispositivo portátil y el wearable.
Recurso
Los objetos Asset sirven para enviar BLOB binarios de datos como imágenes. Adjunta recursos a elementos de datos y el sistema realizará automáticamente la transferencia, con lo cual se conservará ancho de banda de Bluetooth y se almacenarán recursos grandes en caché para evitar la retransmisión.
Mensaje
Un MessageClient puede enviar mensajes y es útil para llamadas de procedimientos remotos (RPC), como controlar el reproductor multimedia de un dispositivo portátil desde el wearable o iniciar un intent en el wearable desde el dispositivo portátil. Los mensajes también son excelentes para solicitudes unidireccionales o para un modelo de comunicación de solicitud/respuesta. Si el wearable y el dispositivo portátil están conectados, el sistema pone en cola el mensaje para su entrega y muestra un código de resultado exitoso. Si los dispositivos no están conectados, se mostrará un error. Un código de resultado exitoso no indica que el mensaje se entregó correctamente, ya que los dispositivos pueden desconectarse después de recibir el código de resultado.
Canal
Puedes usar un ChannelClient para transferir entidades grandes, como archivos de música y películas, desde un dispositivo portátil a un wearable. Las ventajas de usar un ChannelClient para transferir datos son las siguientes:
  • Puedes transferir archivos de datos grandes entre dos o más dispositivos conectados sin la sincronización automática que se brinda al usar objetos Asset adjuntos a objetos DataItem. ChannelClient ahorra espacio en el disco en comparación con DataClient, que crea una copia de los recursos en el dispositivo local antes de sincronizarse con dispositivos conectados.
  • Puedes enviar de manera confiable un archivo demasiado grande como para enviarlo con un MessageClient.
  • Puedes transferir datos de transmisiones, como música extraída de un servidor de red o datos de voz desde el micrófono.
WearableListenerService (para servicios)
Extender WearableListenerService te permite escuchar eventos importantes de Data Layer en un servicio. El sistema maneja el ciclo de vida del WearableListenerService; vincula al servicio cuando necesita enviar elementos de datos o mensajes y desvincula el servicio cuando no es necesario realizar tareas.
OnDataChangedListener (para actividades en primer plano)
Implementar OnDataChangedListener en una actividad te permite escuchar eventos importantes de Data Layer cuando la actividad está en primer plano. Si lo usas en lugar de WearableListenerService, puedes escuchar cambios solo cuando el usuario usa activamente tu app.

Advertencia: Debido a que estas API están diseñadas para la comunicación entre dispositivos portátiles y wearables, son las únicas API que debes usar para configurar la comunicación entre estos dispositivos. Por ejemplo, no intentes abrir sockets de bajo nivel para crear un canal de comunicación.

Importante: Las firmas de tu teléfono y del APK de Wear deben ser idénticas a los esquemas de firmas para que la API de Data Layer pueda comunicarse correctamente entre dispositivos. Se incluye tu uso de la firma v1 y/o v2. Asegúrate de que el esquema de firmas se defina correctamente en build.gradle o cuando uses el asistente de Generar APK firmado.

Wear OS admite la conexión de varios wearables a un dispositivo portátil. Por ejemplo, cuando el usuario guarda una nota en un dispositivo portátil, esta aparece automáticamente en todos sus dispositivos Wear. Para ayudar a sincronizar los datos entre dispositivos, los servidores de Google alojan un nodo en la nube en la red de dispositivos. El sistema sincroniza los datos con los dispositivos conectados directamente, con el nodo en la nube y con los wearables conectados a ese nodo por Wi-Fi.

Figura 1: Ejemplo de red de nodos con dispositivos portátiles y wearables

Sincronización y acceso a la red
En esta lección, se explica cómo adquirir una red de alto ancho de banda. También se brinda un punto de partida para conocer el envío de mensajes a través de la nube y mucho más.
Acceso a Data Layer para wearables
En esta lección, se explica cómo crear un cliente para acceder a las API de Data Layer.
Sincronización de elementos de datos
Los elementos de datos son objetos que se guardan en un almacén de datos replicados que se sincroniza automáticamente desde dispositivos portátiles a wearables.
Transferencia de recursos
Los recursos son BLOB binarias de datos que normalmente se utilizan para transferir imágenes o contenido multimedia.
Envío y recepción de mensajes
Los mensajes están diseñados para aquellos mensajes que no requieren seguimiento y que puedes enviar de un dispositivo a otro entre el wearable y el dispositivo portátil.
Administración de eventos de Data Layer
Recibe avisos sobre cambios y eventos en Data Layer.
Migración de apps de Wear a GoogleApi
Migra desde la clase GoogleApiClient.