Recomendamos que os apps do Wear OS funcionem de maneira independente de smartphones para que os usuários possam realizar tarefas no relógio sem precisar ter um smartphone Android ou iOS. Caso seu app do Wear OS precise de interação com o smartphone para funcionar, marque esse app como dependente e adote medidas para garantir que o usuário tenha acesso à versão para smartphone.
Planejar seu app
Você pode usar o Android App Bundle para gerar automaticamente pacotes de aplicativo Android (APKs) otimizados para a configuração de cada dispositivo com as mesmas informações do aplicativo. Isso permite que o usuário faça o download apenas do código e dos recursos necessários para executar seu app.
Para mais informações sobre como configurar seu app para distribuição na Google Play Store, consulte Empacotar e distribuir apps do Wear e o guia de introdução dos Android App Bundles.
Para novos apps, o nível desejado da API precisa ser 34 ou mais recente. Para mais informações, consulte Atender ao requisito de nível desejado da API do Google Play. Segmentar o nível da API mais recente disponível ajuda a garantir que o app funcione bem em versões atuais da plataforma.
Para informações sobre solicitações de rede e acesso a redes de alta largura de banda, consulte Acesso à rede e sincronização no Wear OS.
Definir um aplicativo como um app do Wear OS
Defina a tag
<uses-feature> no arquivo de manifesto do Android do app.
Para indicar que esse é um app para smartwatch, adicione uma entrada como esta:
<uses-feature android:name="android.hardware.type.watch" />
Identificar um app como independente ou dependente
Um app para smartwatch pode ser considerado independente ou dependente:
- Independentes: apps que não precisam de uma versão para smartphone para executar os recursos principais. Embora os avisos "Abrir no smartphone" sejam aceitáveis, o app precisa oferecer meios alternativos para que os usuários concluam uma função, como um link curto ou QR code, sem depender de um smartphone conectado.
- Dependentes: apps que dependem do app instalado no smartphone ou em outro dispositivo para executar os recursos principais. Essa opção é melhor para apps que não podem oferecer facilmente um meio alternativo, como um QR code ou link curto, para concluir uma função principal, como a autenticação.
Observação:mesmo para apps dependentes, os usuários podem instalar o app para Wear OS antes do app para dispositivos móveis. Portanto, se o app para Wear OS detectar que um dispositivo portátil próximo não tem o app complementar necessário, peça ao usuário para instalar o app complementar.
O Google valida a precisão do status independente de um app durante a veiculação. Esse valor afeta a visibilidade dos apps na Google Play Store em dispositivos não conectados, como dispositivos Wear OS que não estão pareados com dispositivos portáteis. Apps dependentes, bem como apps que os desenvolvedores designam incorretamente como "independentes", não estão disponíveis para usuários nesses dispositivos não conectados.
No app para Wear OS, defina o valor de
meta-data do elemento com.google.android.wearable.standalone
no arquivo de manifesto do Android para declarar se o app é independente ou não independente.
Se o app para smartwatch for completamente independente, transmita essa informação
à Google Play Store, definindo o
valor de com.google.android.wearable.standalone como true:
<meta-data android:name="com.google.android.wearable.standalone" android:value="true" />
Se o app para smartwatch for dependente e precisar de outro para executar os recursos principais,
defina o valor de com.google.android.wearable.standalone como
false. Isso indica que o app para smartwatch precisa de outro dispositivo para funcionar, mas não
afeta a promoção do app na Google Play Store.
Observação:
mesmo que o valor de com.google.android.wearable.standalone seja
false, o app
para smartwatch pode ser instalado antes do app para smartphone.
Assim, se o app para smartwatch
detectar que o app necessário não está instalado no telefone associado,
conforme descrito nesta página,
ele vai pedir para o usuário instalar a versão para smartphone.
Código compartilhado e armazenamento de dados
É possível compartilhar código entre um app do Wear OS e um app para smartphone. Por exemplo, o código comum para redes pode ficar em uma biblioteca compartilhada.
Se preferir, você pode colocar os códigos específicos de cada formato em módulos separados.
É possível usar APIs de armazenamento padrão do Android para armazenar dados localmente, da mesma forma que em um smartphone. Use o DataStore para armazenar pares de chave-valor e objetos digitados ou a biblioteca de persistência do Room.
Detectar seu app em outro dispositivo
Seu app para smartwatch pode detectar se o app para smartphone correspondente está disponível e vice-versa.
Seu app para smartphone ou smartwatch pode usar o
CapabilityClient para anunciar ao dispositivo pareado que a
versão correspondente está instalada. Isso pode ser feito de modo estático ou dinâmico.
Quando um app
está em um nó na rede do Wear OS de um usuário (como em um smartphone, um relógio pareado ou
na nuvem), o CapabilityClient permite que ele
seja detectado. Para mais informações, consulte
Anunciar recursos.
Se um dos seus apps não puder detectar o outro, solicite que o usuário abra a página de detalhes do app na Google Play Store no dispositivo afetado. Essa é uma solução para apps para smartwatches que só funcionam adequadamente com a presença do app para smartphones associado.
É necessário verificar se a Play Store está disponível no dispositivo, já que nem todos os smartphones (como iPhones) usam a Play Store.
As próximas seções descrevem as práticas recomendadas para dois casos:
- O app independente para smartwatch precisa do app para smartphone.
- O app para smartphone precisa do app para smartwatch independente.
Você também pode consultar o
exemplo de ajudantes do DataLayer, que mostra como usar as
bibliotecas de ajudantes do DataLayer, parte do
Horologist. Esses ajudantes permitem monitorar a conexão entre um dispositivo portátil
e um dispositivo Wear OS.
Para mais informações
sobre as classes descritas na próxima seção, consulte a
Referência da API Wear OS.
Essa referência também inclui informações sobre a
PhoneTypeHelper classe, que contém um
getPhoneDeviceType() método que permite que o
app para Wear OS confira se o telefone associado é um dispositivo Android ou dispositivo iOS.
Especificar nomes de recursos para detectar apps
Especifique uma string exclusiva para o nome do recurso no
arquivo res/values/wear.xml do app correspondente
a cada tipo de dispositivo (relógio ou smartphone).
Por exemplo, no seu módulo para dispositivos móveis, o arquivo wear.xml
pode incluir o seguinte:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_phone_app</item> </string-array> </resources>
No módulo do Wear OS, o arquivo wear.xml inclui um valor
diferente para o nome do recurso,
como no exemplo abaixo:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_wear_app</item> </string-array> </resources>
Para mais informações, consulte Anunciar recursos.
Detecção de app e abertura de um URL em um smartwatch
O app para smartwatch pode detectar se o smartphone associado tem o app para smartphone instalado. Para isso, siga estas etapas:
-
Use o
CapabilityClientpara verificar se o app para smartphone está instalado no dispositivo pareado. Para mais informações, consulte o exemplo de ajudantes do DataLayer (link em inglês) no GitHub. -
Se o app para smartphone não estiver instalado, use o
PhoneDeviceType.getPhoneDeviceType()método para verificar o tipo de smartphone. Consulte a próxima seção para mais informações. -
Se
PhoneDeviceType.DEVICE_TYPE_ANDROIDfor retornado, significa que o smartphone é Android. ChameRemoteActivityHelper.startRemoteActivity()no dispositivo Wear OS para abrir a Play Store no smartphone. Use o URI comercial do app para smartphone, que pode ser diferente do URI do Wear. Por exemplo, use um URI comercial como:market://details?id=com.example.android.wearable.wear.finddevices -
Se
PhoneDeviceType.DEVICE_TYPE_IOSfor retornado, significa que o smartphone é iOS e não tem a Play Store. Nesse caso, chameRemoteActivityHelper.startRemoteActivity()no dispositivo Wear OS para abrir a App Store no iPhone. Você pode especificar o URL do iTunes do seu app, por exemplo,https://itunes.apple.com/us/app/yourappname.No Wear OS, não é possível determinar programaticamente se o app para smartphone está instalado em um iPhone. Como prática recomendada, forneça um mecanismo para que o usuário abra a App Store manualmente.
Observação: use a API RemoteActivityHelper conforme descrito na seção anterior para especificar que qualquer URL seja aberto no smartphone pelo relógio e que nenhum app para smartphone seja necessário.
Detalhes para detectar o tipo de smartphone pareado
O snippet abaixo usa o método getPhoneDeviceType() para
verificar o tipo de smartphone pareado com o relógio:
var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)
O valor retornado pelo getPhoneDeviceType()
método é um dos seguintes:
| Valor de retorno | Descrição |
|---|---|
DEVICE_TYPE_ANDROID
|
O telefone associado é um dispositivo Android. |
DEVICE_TYPE_IOS
|
O telefone associado é um dispositivo iOS. |
DEVICE_TYPE_UNKNOWN
|
O telefone associado é um dispositivo desconhecido. |
DEVICE_TYPE_ERROR
|
Ocorreu um erro ao determinar o tipo do smartphone pareado. Faça outra verificação mais tarde. |
Detecção de app a partir de um smartphone Android
O smartphone Android pode detectar se os dispositivos Wear OS do usuário têm seu app para smartwatch instalado. Para isso, siga estas etapas:
-
Com o
NodeClient, encontre todos os smartwatches conectados ao smartphone do usuário. Para mais informações, consulte o exemplo de ajudantes do DataLayer (link em inglês) no GitHub. -
Use o
CapabilityClient, para conferir qual dos relógios do usuário têm seu app instalado. -
Se o app não estiver instalado em todos os relógios do usuário, permita que ele abra a Google Play Store nos demais dispositivos Wear OS pelo smartphone, usando o método
RemoteActivityHelper.startRemoteActivity(). Use o URI comercial do app do Wear OS, que pode ser diferente do URI do app para smartphone. Por exemplo, use um URI comercial como:market://details?id=com.example.android.wearable.wear.finddevices
Dados de localização para smartwatches pareados com iPhones
No caso de relógios pareados com iPhones, use o provedor de localização combinada (FLP) para receber os dados de localização no relógio. Para mais informações, consulte Detectar a localização no Wear OS.
Se o telefone associado estiver disponível, o FLP o usará para acessar os dados de localização.
Coletar apenas os dados necessários
De maneira geral, extraia apenas os dados necessários da Internet. Caso contrário, você pode introduzir latência, uso de memória e uso de bateria desnecessários.
Quando o relógio está conectado via Bluetooth LE, é possível que o app tenha acesso a uma largura de banda de apenas 4 kilobytes por segundo, dependendo do modelo. Portanto, as etapas abaixo são recomendadas:
- Confira se dados extras, necessários apenas para apps para smartphones, estão sendo coletados nas solicitações e respostas da rede.
- Reduza imagens grandes antes de enviá-las por uma rede para o relógio.
Para casos em que uma rede de alta largura de banda for necessária, consulte Acesso à rede de alta largura de banda.
Outros exemplos de código
O exemplo de ajudantes do DataLayer (link em inglês) demonstra melhor o uso das APIs abordadas nesta página.