O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Apps para Wear independentes

Um app Wear OS pode funcionar independentemente da presença de um smartphone. Os usuários podem realizar tarefas em um smartwatch, sem acesso a um smartphone Android ou iOS.

Confira os seguintes recursos relacionados:

Planejar seus apps

Você pode usar o recurso de vários APKs (múltiplos APKs) do Google Play para publicar mais de um arquivo APK na mesma listagem de aplicativos. Um APK de smartwatches deve ser distribuído com esse recurso. Não incorpore um APK de smartwatches em um APK de smartphone. Para ver informações sobre como configurar seu app para distribuição por meio da Google Play Store, consulte Empacotar e distribuir apps para Wear e Como funciona a publicação de vários APKs.

Observação: para se qualificar para promoção na Google Play Store do Wear (ou seja, na Play Store do smartwatch), seu app precisa funcionar independentemente de um smartphone. É necessário oferecer compatibilidade com iOS e Android.

Geralmente, o nível de API mínimo e de destino para um app independente e para o Wear 2.0 é 25. O nível mínimo de SDK só poderá ser 23 se você estiver usando o mesmo APK para Wear 1.0 e 2.0 (e, portanto, tiver um APK do Wear 1.0 integrado).

Observação: devido a um problema de latência que afeta a disponibilidade de um app em smartwatches Wear 1.x, se você criar um APK independente para o Wear 2.0 e continuar a ter um APK para o Wear 1.0, siga estas duas etapas:

  • Forneça uma versão independente do APK do Wear.
  • Continue incorporando uma versão do APK do Wear no APK do seu smartphone.

Cuidado: se você publicar uma atualização para seu APK de smartphones de produção em que um APK do Wear integrado tenha sido removido, usuários de produção que atualizarem o APK de smartphones antes de instalar o APK do Wear independente perderão o app para Wear e todos os dados contidos nele. Se você publicar uma atualização para seu APK de smartphones de produção, continue a integrar o APK de smartwatches no APK de smartphones.

Permissões de tempo de execução são necessárias para apps independentes.

Para informações sobre solicitações de rede e acesso a redes de alta largura de banda, consulte Acesso à rede e sincronização.

Identificar um app como independente

Os apps para Wear precisam ter o elemento meta-data no arquivo de manifesto do Android como filho do elemento <application>. O nome do elemento meta-data é com.google.android.wearable.standalone e o valor precisa ser true ou false. O elemento indica se seu app para smartwatch é um app independente e, portanto, não requer um app para Android complementar para funcionar. Se a configuração do elemento for true, seu app poderá ser disponibilizado na Play Store em smartwatches pareados com iPhones, desde que os APKs ativos em todos os canais (por exemplo, no Canal beta) tenham o elemento definido como true. Se nem todos os APKs (alfa, beta e produção) atualmente oferecidos para o usuário tiverem a configuração descrita acima, seu app ficará indisponível quando o usuário fizer uma pesquisa em um smartwatch pareado com um iPhone.

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

  • Completamente independente de um app para smartphones
  • Semi-independente, ou seja, um app para smartphones não é necessário e só forneceria recursos opcionais
  • Dependente de um app para smartphones

Se um app para smartwatch for completamente independente ou semi-independente, ele será considerado da categoria independente. Você precisa indicar essa categorização para a Google Play Store definindo o valor desse elemento meta-data como true:

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

Como um app independente ou semi-independente pode ser instalado por um usuário de um iPhone ou de um smartphone Android sem a Play Store, o app para smartwatch precisa ser utilizável sem o app para smartphones.

Se um app para smartwatch depender de um app para smartphone, defina o valor do elemento meta-data acima como false. Definir o elemento como false significa que o app só pode ser instalado em um smartwatch pareado com um smartphone que tenha a Play Store.

Observação: mesmo que o valor seja false, o app para smartwatches pode ser instalado antes da instalação do app para smartphones. 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.

Definir um app como um app para Wear

Você precisa garantir que a tag <uses-feature> seja definida no arquivo de manifesto do Android no seu app. Ele precisa indicar que é um app watch, por exemplo, android:name="android.hardware.type.watch" conforme mostrado a seguir:

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

Código compartilhado e armazenamento de dados

É possível compartilhar código entre um app para Wear e um app para smartphones. Opcionalmente, códigos específicos para um formato podem estar em um módulo separado.

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 smartphones 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ó em uma rede do Wear de um usuário (ou seja, em um smartphone, em um smartwatch pareado ou na nuvem), o CapabilityClient permite que outro app detecte se ele está instalado. Para 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 a amostra que exibe essa funcionalidade. Para mais informações sobre as classes descritas abaixo, consulte a Referência da API Wear. Nessa referência, também há informações sobre a classe PhoneDeviceType, que contém um método getPhoneDeviceType() que permite ao seu app para Wear verificar se um telefone 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 seu módulo do Wear, o arquivo wear.xml inclui um valor diferente no 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 mais informações, consulte a amostra.
  2. Se o app para smartphones 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 RemoteIntent.startRemoteActivity() no dispositivo Wear 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 RemoteIntent.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 RemoteIntent 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 telefone associado é 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 de um usuário têm seu app para smartwatch:

  1. Com o NodeClient, encontre todos os smartwatches conectados ao smartphone do usuário. Para mais informações, consulte a amostra (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 dispositivos Wear restantes a partir do smartphone pelo método RemoteIntent.startRemoteActivity(). Especificamente, use o URI comercial do app para Wear, que pode ser diferente do URI do seu 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

Para smartwatches pareados com iPhones, os desenvolvedores precisam usar o provedor de localização combinada (FLP, na sigla em inglês) para conseguir 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 smartphones.
  • 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.

Outras amostras de código

As amostras WearVerifyRemoteApp e SpeedTracker (links em inglês) demonstram o uso das APIs abordadas nesta página.

As amostras demonstram o uso das APIs abordadas nesta página.