Com o Wear OS by Google, um relógio pode se comunicar diretamente com uma rede, sem acesso a um smartphone Android ou iOS. Não use a API Data Layer para conectar um app para Wear OS a uma rede. Em vez disso, siga as diretrizes e as etapas guia.
Acesso à rede
Os apps Wear OS podem fazer solicitações de rede. Quando um relógio tem Bluetooth a um smartphone, o tráfego de rede do relógio geralmente é intermediado por proxy o celular.
Quando um smartphone não está disponível, o Wi-Fi e as redes celulares são usados, dependendo hardware do relógio. A plataforma Wear OS processa as transições entre redes.
Você pode usar protocolos como HTTP, TCP e UDP. No entanto,
As APIs android.webkit, incluindo a classe CookieManager, não estão
disponíveis. Você pode usar cookies lendo e gravando cabeçalhos em solicitações e
de resposta.
Use WorkManager para solicitações assíncronas, incluindo pesquisas em eventos regulares
em intervalos de IP.
Se for preciso se conectar a tipos de rede específicos, consulte Leitura de rede estado.
Acesso à rede de alta largura de banda
A plataforma Wear OS gerencia a conectividade de rede para oferecer a a melhor experiência geral do usuário. A plataforma escolhe a rede ativa padrão equilibrando duas necessidades: bateria de longa duração e largura de banda da rede.
Quando a economia da bateria é priorizada, a rede ativa pode não ter largura de banda suficiente para tarefas de rede, como transporte de arquivos grandes ou streaming mídia.
Esta seção fornece orientações sobre como usar a classe ConnectivityManager para
ajudam a garantir que seu app tenha a largura de banda de rede necessária. Para informações gerais
informações sobre controle detalhado de recursos de rede, consulte gerenciar
uso da rede.
Solicitar conectividade Wi-Fi
Para casos de uso que exigem acesso à rede de alta largura de banda, como transporte arquivos grandes ou streaming de mídia, solicitar conectividade com uma largura de banda alta transporte, como Wi-Fi. Isso é mostrado neste exemplo:
Kotlin
val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network) } override fun onLost(network: Network) { super.onLost(network) // Called when a network disconnects or otherwise no longer satisfies this request or callback. } } connectivityManager.requestNetwork( NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback )
Java
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() { public void onAvailable(Network network) { super.onAvailable(network); // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network); } public void onLost(Network network) { super.onLost(network); // Called when a network disconnects or otherwise no longer satisfies this request or callback. } }; connectivityManager.requestNetwork( new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback );
A aquisição de uma rede pode não ser instantânea, porque o Wi-Fi do relógio ou a
o rádio celular pode estar desligado para economizar bateria. Se o relógio não conseguir se conectar
rede, o método onAvailable() da instância NetworkCallback não será
chamou.
Depois que onAvailable() é chamado, o dispositivo tenta permanecer conectado à
Rede Wi-Fi até que o NetworkCallback seja liberado. Para preservar a duração da bateria,
libere o retorno de chamada, conforme mostrado no exemplo a seguir, quando não precisar mais de uma
Rede Wi-Fi.
Kotlin
connectivityManager.bindProcessToNetwork(null) connectivityManager.unregisterNetworkCallback(callback)
Java
connectivityManager.bindProcessToNetwork(null); connectivityManager.unregisterNetworkCallback(callback);
Iniciar a atividade de configuração de Wi-Fi
Ao solicitar uma rede Wi-Fi, o sistema tenta se conectar a uma rede salva
se um deles estiver configurado e dentro do alcance. Se nenhuma rede Wi-Fi salva estiver disponível, o
O método de callback onAvailable da instância NetworkCallback não é chamado.
Se você estiver usando um Handler para definir o tempo limite da solicitação de rede, será possível direcionar o
que o usuário adicione uma rede Wi-Fi quando o tempo limite for atingido. Enviar o usuário diretamente para
a atividade para adicionar uma rede Wi-Fi usando a seguinte intent:
Kotlin
context.startActivity(Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"))
Java
context.startActivity(new Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"));
Para iniciar a atividade de configurações, o app precisa ter a CHANGE_WIFI_STATE
permissão.
Considerações sobre a interface do usuário
Caso seu app precise de uma conexão com uma nova rede Wi-Fi para alta largura de banda Verifique se o motivo para se conectar está claro para o usuário antes antes de iniciar as configurações de Wi-Fi. Só solicite que o usuário adicione uma nova rede Wi-Fi quando a rede de alta largura de banda for necessária. Não bloqueie o usuário de acessem recursos de aplicativos que não exigem uma rede de alta largura de banda.
A Figura 1 mostra um app de música. O aplicativo permite que o usuário procure músicas em um com menor largura de banda e só exige que o usuário adicione uma nova rede para fazer o download ou streaming de música.

Figura 1. Fluxo de um app para download de música.
Considerações sobre o uso de dados e energia
Para ajudar a preservar a duração da bateria e minimizar o uso de dados móveis, adie qualquer tarefas de rede não essenciais, como relatórios de análise ou coleta de registros, até que o dispositivo Wear OS restabeleça uma conexão Bluetooth ou Wi-Fi em vez de uma conexão LTE ou limitada.
Mensagens na nuvem
Para enviar notificações, use o Firebase Cloud Messaging (FCM) diretamente.
Nenhuma API para acesso à rede ou FCM é específica do Wear OS. Consulte o modelo documentação sobre como se conectar a uma rede e mensagens na nuvem.
O FCM funciona bem com o recurso Soneca e é a forma recomendada de enviar notificações. a um relógio.
Fornecer mensagens do FCM coletando um token de registro para um dispositivo quando o app para Wear OS é executado. Em seguida, inclua o token como parte da solicitação quando o servidor envia mensagens para o endpoint REST do FCM. O FCM envia mensagens o dispositivo identificado pelo token.
As mensagens do FCM estão no formato JavaScript Object Notation (JSON) e podem incluir um ou ambos os payloads a seguir:
- Payload de notificação:quando um payload de notificação é recebido por um relógio, os dados são exibidos para um usuário diretamente no fluxo de notificações. Quando o usuário tocar na notificação, o app será iniciado.
- Payload de dados:quando o payload tem um conjunto de pares personalizados de chave ou valor. O payload é enviado como dados para o app do Wear OS.
Para mais informações e exemplos de payloads, consulte Sobre as mensagens do FCM.
Por padrão, as notificações são compartilhadas de um app do smartphone para o relógio. Se você tiver um um app independente para Wear OS e um app para smartphones correspondente, duplicando as notificações. podem ocorrer. Por exemplo, uma única notificação do FCM, recebida por um smartphone e relógio, podem ser exibidas por ambos os dispositivos de maneira independente. Você pode evitar isso usando APIs de ponte.
Usar serviços em segundo plano
Para ajudar a garantir que tarefas em segundo plano sejam executadas corretamente, eles precisam considerar para os recursos Soneca e App em espera.
Quando uma tela é desligada ou entra no modo ambiente por muito tempo, um subconjunto
do modo soneca pode ocorrer e tarefas em segundo plano podem ser adiadas por certos períodos.
Depois, quando o dispositivo fica inativo por um tempo prolongado, o modo Soneca normal é ativado.
Programe solicitações com a API WorkManager, que permite que seu app registre
para a execução de códigos com segurança de soneca.
Programar com restrições
Você pode usar restrições para configurar solicitações de forma a economizar bateria vida. Selecione uma ou mais das seguintes restrições para incluir no seu solicitações:
Agende uma solicitação que exija rede.
Especifique se
NetworkTypeéCONNECTEDouUNMETERED.UNMETEREDserve para grandes transferências de dados eCONNECTEDpara pequenas transferências de dados.Programe uma solicitação ao carregar.
Programe uma solicitação enquanto o dispositivo estiver inativo. Isso é útil para trabalho ou sincronização em segundo plano de menor prioridade, especialmente quando dispositivo está carregando.
Para saber mais, consulte a seção Efeito das restrições sobre sobre trabalho periódico.