Enviar e sincronizar dados no Wear

Com o Wear OS by Google, um smartwatch pode se conectar diretamente a uma rede, sem acesso a um smartphone Android ou iOS.

Esta página tem as seguintes dependências e pré-requisitos:

Separadamente, a API Wearable Data Layer, que faz parte do Google Play Services, fornece um canal de comunicação opcional para apps. Ainda que um app Wear possa se comunicar com um app de smartphone usando a API Wearable Data Layer, não é recomendado se conectar a uma rede usando essa API.

A API Data Layer consiste em um conjunto de objetos de dados que o sistema pode enviar e sincronizar, junto a listeners que notificam apps de certos eventos, da seguinte maneira:

Item de dados
Um DataItem fornece armazenamento de dados com sincronização automática entre o dispositivo portátil e o wearable.
Recurso
Objetos Asset servem para enviar blobs binários de dados, como imagens. Ao anexar recursos a itens de dados, o sistema automaticamente cuida da transferência para você, conservando a largura de banda do Bluetooth por meio do armazenamento em cache de recursos grandes para evitar a retransmissão.
Mensagem
Um MessageClient pode enviar mensagens e é bom para chamadas de procedimento remoto (RPC, na sigla em inglês), como controlar o player de mídia de um dispositivo portátil a partir do wearable ou iniciar um intent no wearable a partir do dispositivo portátil. As mensagens também são ótimas para solicitações unidirecionais ou para um modelo de comunicação de solicitação/resposta. Se os dispositivos portátil e wearable estiverem conectados, o sistema colocará a mensagem na fila de entrega e retornará um código de resultado. Se os dispositivos não estiverem conectados, um erro será retornado. Um código de resultado bem-sucedido não indica que a mensagem foi entregue, porque os dispositivos podem se desconectar depois do recebimento do código de resultado.
Canal
Você pode usar um ChannelClient para transferir entidades grandes, como arquivos de filmes e músicas, de um dispositivo portátil para um wearable. O uso de um ChannelClient para transferência de dados tem os seguintes benefícios:
  • Transferência de arquivos de dados grandes entre dois ou mais dispositivos conectados, sem a sincronização automática fornecida ao usar objetos Asset anexados a objetos DataItem. O ChannelClient salva espaço no disco sobre DataClient, o que cria uma cópia dos recursos no dispositivo local antes da sincronização com os dispositivos conectados.
  • Envio confiável de arquivos grandes demais para serem enviados usando um MessageClient.
  • Transferência de dados de stream, como músicas de um servidor de rede ou dados de voz do microfone.
WearableListenerService (para serviços)
Ampliar o WearableListenerService permite que você detecte eventos importantes da camada de dados em um serviço. O sistema gerencia o ciclo de vida do WearableListenerService, vinculando-o ao serviço quando é necessário enviar itens de dados ou mensagens e desvinculando o serviço quando nenhuma tarefa é necessária.
OnDataChangedListener (para atividades em primeiro plano)
A implementação do OnDataChangedListener em uma atividade permite que você detecte eventos importantes da camada de dados quando uma atividade estiver em primeiro plano. Usar isso em vez de WearableListenerService permite que você detecte alterações apenas quando o usuário estiver usando o app ativamente.

Aviso: como essas APIs são projetadas para a comunicação entre dispositivos portáteis e wearables, essas são as únicas APIs que podem ser utilizadas para configurar a comunicação entre esses dispositivos. Por exemplo, não tente abrir soquetes de baixo nível para criar um canal de comunicação.

Importante: suas assinaturas de APK para Wear e smartphone e os esquemas de assinaturas precisam ser idênticos para que a API Data Layer consiga fazer comunicação entre os dispositivos. Isso inclui seu uso da assinatura v1 e/ou v2. Verifique se o esquema de assinatura foi configurado corretamente em build.gradle ou quando você usa o assistente Generate Signed APK.

O Wear OS é compatível com vários dispositivos wearable conectados a um dispositivo portátil. Por exemplo, quando o usuário salva uma anotação em um dispositivo portátil, ela automaticamente aparece em todos os seus dispositivos Wear. Para ajudar a sincronizar dados entre dispositivos, os servidores do Google hospedam um nó da nuvem na rede de dispositivos. O sistema sincroniza os dados com dispositivos diretamente conectados, com o nó da nuvem e com os dispositivos wearable conectados ao nó da nuvem via Wi-Fi.

Figura 1. Exemplo de rede de nós com dispositivos portáteis e wearable.

Acesso à rede e sincronização
Esta lição mostra como adquirir uma rede banda larga. A lição também traz um ponto de partida para mensagens na nuvem e muito mais.
Acessar a camada de dados wearable
Esta lição mostra como criar um cliente para acessar as APIs Data Layer.
Sincronizar itens de dados
Os itens de dados são objetos armazenados em um repositório de dados replicados que é automaticamente sincronizado entre dispositivos portáteis e wearables.
Transferir recursos
Recursos são blobs binários de dados usados normalmente para transferir imagens ou mídia.
Enviar e receber mensagens
As mensagens são projetadas para serem mensagens temporárias que podem ser enviadas do dispositivo wearable ao portátil e vice-versa.
Gerenciar eventos da camada de dados
Receba notificações sobre eventos e alterações na camada de dados.
Migrar apps Wear para GoogleApi
Deixe de usar a classe GoogleApiClient.