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
éCONNECTED
ouUNMETERED
.UNMETERED
serve para grandes transferências de dados eCONNECTED
para 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.