Apps Wear OS independentes ou não independentes

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A recomendação padrão é que apps para Wear OS funcionem de maneira independente de smartphones. Assim, os usuários podem realizar tarefas no smartwatch sem precisar de acesso a um smartphone Android ou iOS. No entanto, caso o app precise de interação com o smartphone para funcionar, marque esse app para Wear OS como dependente.

Planejar seu app

Use o Android App Bundle para gerar APKs otimizados automaticamente para a configuração de cada dispositivo, com as mesmas informações de produto. Isso permite que o usuário faça o download apenas do código e dos recursos necessários para executar seu app no dispositivo dele.

Para ver mais informações sobre como configurar seu app para distribuição na Google Play Store, consulte Empacotar e distribuir apps para Wear OS e o Guia de iniciação do Android App Bundle.

Geralmente, o nível de API mínimo para um app para Wear OS é 25 (Wear OS 2.0). O nível desejado da API precisa ser 28 ou mais recente (saiba mais). Recomendamos definir targetSdkVersion como nível 30 da API (Wear OS 3) para garantir que o app funcione bem na versão mais recente da plataforma.

Para ver 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 app como app para Wear OS

Defina a tag <uses-feature> no arquivo de manifesto do Android do app. Você pode indicar que esse é um app para smartwatch, por exemplo, conforme mostrado a seguir.

  <manifest>
  ...
  <uses-feature android:name="android.hardware.type.watch" />
  ...
  </manifest>
  

Identificar um app como independente

Os apps para Wear OS precisam definir o elemento meta-data com.google.android.wearable.standalone como true ou false no arquivo de manifesto do Android.

Esse elemento indica se o app é independente, ou seja, se ele não precisa de outro dispositivo para que os recursos principais funcionem. Nesse caso, defina a configuração do elemento como true.

Um app para smartwatches pode ser considerado uma das seguintes opções:

  • Independentes: apps completamente independentes que não precisam de um app para smartphones para executar os recursos principais, incluindo autenticação. Nesse caso, o app para smartphones serviria apenas para oferecer recursos opcionais.
  • Não independente: app que precisa de um app para smartphone ou outro dispositivo para executar os recursos principais, incluindo autenticação.

Se um app para smartwatch for completamente autossuficiente, ele fará parte da categoria independente. É necessário informar essa categorização à Google Play Store, definindo o valor do elemento meta-data como true:

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

Se um app para smartwatch não for independente, defina o valor do elemento meta-data acima como false. Definir esse elemento como false 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 seja false, o app para smartwatch pode ser instalado antes do app para smartphone. Desse modo, se um app para smartwatch detectar que um telefone associado não possui o app necessário, ele solicitará que o usuário instale o app para smartphones.

Código compartilhado e armazenamento de dados

É possível compartilhar código entre um app para Wear OS e um app para smartphones. Se preferir, você pode colocar os códigos específicos de cada formato em módulos separados.

Por exemplo, o código comum para redes pode estar em uma biblioteca compartilhada.

É possível usar APIs de armazenamento padrão do Android para armazenar dados localmente, da mesma forma que em um smartphone. Por exemplo, você pode usar as APIs SharedPreferences ou a biblioteca de persistência Room.

Detectar seu app em outro dispositivo

Seu app para smartwatch pode detectar se o app para smartphones correspondente está disponível e vice-versa.

Seu app para smartphone ou smartwatch pode usar o CapabilityClient para anunciar a presença do app para um dispositivo pareado. Isso pode ser feito de modo estático e dinâmico. Quando um app está em um nó na rede do Wear OS de um usuário (como em um smartphone, um smartwatch pareado ou na nuvem), o CapabilityClient permite que outro app detecte se ele está instalado. Para ver mais informações, consulte Anunciar recursos.

Se um de seus apps não puder detectar o outro, permita que um usuário abra a listagem da Play Store em um dispositivo remoto. Essa é uma solução para apps para smartwatches que só funcionam adequadamente com a presença do app do telefone associado. Um pré-requisito é verificar a presença da Play Store no dispositivo remoto.

Nem todos os smartphones são compatíveis com a Play Store (como iPhones etc.).

Esta seção descreve as práticas recomendadas para estes cenários:

  • Seu app independente para smartwatches precisa do app para smartphones.
  • Seu app para smartphones precisa do app independente para smartwatch.

Consulte o exemplo (link em inglês) no GitHub, que mostra como funciona esse recurso. Para ver mais informações sobre as classes descritas abaixo, consulte a Referência da API Wear OS. Essa referência inclui informações sobre a classe PhoneDeviceType, que contém um método getPhoneDeviceType() que permite que o app para Wear OS confira se o smartphone associado é um dispositivo Android ou iOS.

Especificar nomes de recursos para detectar apps

Para o app correspondente a cada tipo de dispositivo (smartwatch ou smartphone), especifique uma string exclusiva para o nome do recurso no arquivo res/values/wear.xml.

Por exemplo, no seu módulo móvel, 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, o arquivo wear.xml inclui um valor diferente para o nome do recurso, como 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_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 telefone associado de um usuário tem o app para smartphones:

  1. Use o CapabilityClient para verificar se o app para smartphones está instalado no smartphone pareado. Para ver mais informações, consulte o exemplo no GitHub (link em inglês).
  2. Se o app para smartphone não estiver instalado, use o método PhoneDeviceType.getPhoneDeviceType() para verificar o tipo do smartphone.
  3. Se PhoneDeviceType.DEVICE_TYPE_ANDROID for retornado, significa que o smartphone é Android. Chame RemoteActivityHelper.startRemoteActivity() no dispositivo Wear OS para abrir a app store no smartphone. Use o URI comercial no seu app para smartphones, que pode ser diferente do URI do smartphone. Por exemplo, use um URI comercial como market://details?id=com.example.android.wearable.wear.finddevices
  4. Se PhoneDeviceType.DEVICE_TYPE_IOS for retornado, significa que o smartphone é iOS (e não tem a Play Store disponível). Abra a App Store no iPhone chamando RemoteActivityHelper.startRemoteActivity() no dispositivo Wear. Você pode especificar o URL do iTunes do seu app, por exemplo, https://itunes.apple.com/us/app/yourappname. Não é possível determinar programaticamente a partir do Wear OS se seu app para smartphones está instalado em um iPhone. Como prática recomendada, forneça um mecanismo (um botão, por exemplo) para o usuário acionar manualmente a abertura da App Store.

Ao usar a API RemoteActivityHelper descrita acima, você pode especificar que qualquer URL seja aberto no smartphone a partir do smartwatch e que nenhum app seja necessário no smartphone.

Detalhes para detectar o tipo de smartphone pareado

Este é um snippet que usa o método getPhoneDeviceType() para verificar o tipo de smartphone ao qual o smartwatch está pareado:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

O valor retornado pelo método getPhoneDeviceType() é um dos seguintes:

Valor de retorno Descrição
DEVICE_TYPE_ANDROID O smartphone complementar é um dispositivo Android.
DEVICE_TYPE_IOS O telefone associado é um dispositivo iOS.
DEVICE_TYPE_ERROR_UNKNOWN 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:

  1. Com o NodeClient, encontre todos os smartwatches conectados ao smartphone do usuário. Para ver mais informações, consulte o exemplo no GitHub (link em inglês).
  2. Com o CapabilityClient, verifique quais dos smartwatches do usuário têm seu app instalado.
  3. Se o app não estiver instalado em todos os smartwatches do usuário (compare os resultados da Etapa 1 com os da Etapa 2), permita que o usuário abra a Play Store nos demais dispositivos para Wear OS no smartphone, usando o método RemoteActivityHelper.startRemoteActivity(). Mais especificamente, use o URI comercial do app para Wear OS, que pode ser diferente do URI do app para smartphones. 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 smartwatches pareados com iPhones, os desenvolvedores precisam usar o provedor de localização combinada(FLP, na sigla em inglês) para receber os dados de localização em um smartwatch. Consulte Detectar a localização no Wear OS.

Se o telefone associado estiver disponível, o FLP o usará para conseguir os dados de localização.

Conseguir apenas os dados necessários

Geralmente, ao extrair dados da Internet, você precisa extrair apenas os dados necessários. Caso contrário, você pode introduzir latência, uso de memória e uso de bateria desnecessários.

Quando um smartwatch estiver conectado por uma conexão Bluetooth LE, seu app poderá ter acesso a uma largura de banda de apenas 4 kilobytes por segundo, dependendo do smartwatch. Portanto, as seguintes etapas são recomendadas:

  • Monitore as solicitações e as respostas da sua rede para conseguir dados extras exclusivos de um app para smartphone.
  • Reduza imagens grandes antes de enviá-las por uma rede para um smartwatch.

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 WearVerifyRemoteApp (link em inglês) demonstra o uso das APIs abordadas nesta página com mais detalhes.