App Wear OS autonome e non autonome

Consigliamo che le app Wear OS funzionino indipendentemente dallo smartphone, in modo che gli utenti possano completare attività su un orologio senza accedere a un telefono Android o iOS. Se l'app dell'orologio richiede l'interazione con il telefono, devi contrassegnarla come non autonoma e adottare le misure necessarie per assicurarti che l'utente abbia a disposizione l'app per telefono.

Pianifica la tua app

Puoi usare Android App Bundle per generare automaticamente Android Package Kit (APK) ottimizzati per la configurazione del dispositivo di ogni utente nella stessa scheda dell'applicazione. In questo modo gli utenti possono scaricare solo il codice e le risorse necessarie per eseguire la tua app.

Per informazioni su come configurare la tua app per la distribuzione tramite Google Play Store, consulta l'articolo Pacchettizzare e distribuire app per Wear OS e la guida introduttiva a utilizzare gli Android App Bundle.

In genere, il livello API minimo per un'app Wear OS è il livello API 25 (Wear OS 2.0). Il livello API target deve essere il livello API 28 o superiore. Per maggiori informazioni, consulta la pagina Soddisfare il requisito relativo ai livelli API target di Google Play. Imposta targetSdkVersion sul livello API 30 (Wear OS 3) per assicurarti che la tua app funzioni correttamente sulla versione più recente della piattaforma.

Per informazioni sulle richieste di rete e sull'accesso alla rete a larghezza di banda elevata, consulta la pagina relativa all' accesso e alla sincronizzazione della rete su Wear OS.

Definire un'app come app per Wear OS

Devi definire il tag <uses-feature> nel file manifest Android della tua app. Per indicare che si tratta di un'app dell'orologio, aggiungi una voce simile alla seguente:

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

Identificare un'app come autonoma o non autonoma

Un'app dell'orologio è considerata autonoma o non autonoma:

  • Indipendente: un'app completamente indipendente che non richiede un'app per smartphone per le funzionalità principali, inclusa l'autenticazione. Se disponibile, un'app per telefono offre solo funzionalità facoltative.
  • Non autonoma: un'app dipendente che richiede un'app su uno smartphone o un altro dispositivo per le funzionalità di base, inclusa l'autenticazione.

Nella tua app per Wear OS, imposta il valore dell'elemento meta-data com.google.android.wearable.standalone nel file manifest di Android per dichiarare se la tua app è autonoma o non autonoma.

Se l'app dell'orologio è un'app autonoma e completamente indipendente, indicalo al Google Play Store impostando il valore com.google.android.wearable.standalone su true:

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

Se la tua app dell'orologio non è autonoma e dipende da un'altra app per le funzionalità principali, imposta il valore di com.google.android.wearable.standalone su false. Ciò significa che l'app dell'orologio richiede un altro dispositivo, ma non influisce sulla promozione dell'app sul Google Play Store.

Nota: anche se il valore di com.google.android.wearable.standalone è false, l'app dell'orologio può essere installata prima dell'installazione dell'app del telefono. Pertanto, se l'app dell'orologio rileva che un telefono associato non dispone dell'app per telefono necessaria, come descritto in questa pagina, chiedi all'utente di installare l'app Telefono.

Archiviazione di codice e dati condivisi

Il codice può essere condiviso tra un'app per Wear OS e un'app per smartphone. Ad esempio, il codice comune per il networking può essere in una libreria condivisa.

Facoltativamente, il codice specifico di un fattore di forma può essere inserito in un modulo separato.

Puoi utilizzare le API di archiviazione di Android standard per archiviare i dati localmente, come faresti su un telefono. Ad esempio, puoi utilizzare le API SharedPreferences o la libreria di persistenza Stanza.

Rileva la tua app su un altro dispositivo

L'app dell'orologio e l'app per smartphone corrispondente possono rilevare ciascuna se l'altra app è disponibile.

Le app per telefono e smartwatch possono utilizzare CapabilityClient per pubblicizzare la loro presenza su un dispositivo accoppiato. Possono farlo in modo statico o dinamico.

Quando un'app si trova su un nodo nella rete Wear OS di un utente, ad esempio su un telefono, un orologio accoppiato o nel cloud, CapabilityClient consente ad altre app di rilevarla. Per maggiori informazioni, consulta Funzionalità pubblicitarie.

Se una delle tue app non riesce a rilevare l'altra, puoi chiedere all'utente di aprire la scheda del Play Store sul dispositivo interessato. Si tratta di una soluzione per le app per orologi che richiedono la presenza dell'app per smartphone complementare per funzionare correttamente.

Devi controllare se il Play Store è disponibile sul dispositivo perché non tutti i telefoni, ad esempio gli iPhone, supportano il Play Store.

Le seguenti sezioni descrivono le best practice relative a due scenari:

  • L'app autonoma dell'orologio richiede l'app del telefono.
  • L'app del telefono richiede l'app autonoma dell'orologio.

Puoi anche esaminare l' app di esempio su GitHub che dimostra questa funzionalità. Per ulteriori informazioni sulle classi descritte nella sezione seguente, consulta il riferimento sull'API Wear OS. Questo riferimento include anche informazioni sulla classe PhoneTypeHelper, che contiene un metodo getPhoneDeviceType() che consente alla tua app Wear OS di controllare se un telefono accoppiato è un dispositivo Android o iOS.

Specifica i nomi delle funzionalità per il rilevamento delle app

Per l'app corrispondente a ogni tipo di dispositivo, smartwatch o telefono, specifica una stringa univoca per il nome della funzionalità nel file res/values/wear.xml.

Ad esempio, nel modulo per dispositivi mobili, il file wear.xml potrebbe includere quanto segue:

<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>

Nel modulo Wear OS, il file wear.xml include un valore diverso per il nome della funzionalità, ad esempio il seguente:

<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>

Per maggiori informazioni, consulta la sezione Funzionalità pubblicitarie.

Rilevamento delle app e apertura di un URL da uno smartwatch

L'app dell'orologio può rilevare se il telefono associato di un utente dispone dell'app per smartphone. Segui questi passaggi:

  1. Utilizza l'CapabilityClient per verificare se l'app del telefono è installata sul telefono accoppiato. Per maggiori informazioni, consulta l' app di esempio su GitHub.
  2. Se l'app per telefono non è installata sullo smartphone, usa il metodo PhoneDeviceType.getPhoneDeviceType() per controllare il tipo di telefono. Per informazioni dettagliate, consulta la sezione seguente.
  3. Se viene restituito PhoneDeviceType.DEVICE_TYPE_ANDROID, significa che il telefono è un telefono Android. Chiama RemoteActivityHelper.startRemoteActivity() sul dispositivo Wear OS per aprire il Play Store sullo smartphone. Utilizza l'URI di mercato per l'app per telefono, che potrebbe essere diverso dall'URI dell'app Wear. Ad esempio, utilizza un URI di mercato come: market://details?id=com.example.android.wearable.wear.finddevices.
  4. Se viene restituito PhoneDeviceType.DEVICE_TYPE_IOS, significa che il telefono è un telefono iOS senza Play Store. Apri l'App Store sull'iPhone chiamando RemoteActivityHelper.startRemoteActivity() sul dispositivo Wear OS. Puoi specificare l'URL iTunes della tua app, ad esempio https://itunes.apple.com/us/app/yourappname.

    Da Wear OS, non puoi determinare in modo programmatico se la tua app per smartphone è installata su un dispositivo iOS. Come best practice, fornisci all'utente un meccanismo per attivare manualmente l'apertura dell'App Store.

Nota: utilizza l'API RemoteActivityHelper descritta in precedenza per specificare che qualsiasi URL possa essere aperto sullo smartphone dallo smartwatch e che non sono necessarie app per smartphone.

Dettagli per il rilevamento del tipo di telefono accoppiato

Ecco uno snippet che utilizza il metodo getPhoneDeviceType() per controllare il tipo di telefono a cui è accoppiato l'orologio:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

Il valore restituito dal metodo getPhoneDeviceType() è uno dei seguenti:

Valore restituito Descrizione
DEVICE_TYPE_ANDROID Il telefono associato è un dispositivo Android.
DEVICE_TYPE_IOS Il telefono associato è un dispositivo iOS.
DEVICE_TYPE_UNKNOWN Il telefono associato è un dispositivo sconosciuto.
DEVICE_TYPE_ERROR Si è verificato un errore durante la determinazione del tipo di telefono accoppiato; fai un altro controllo in un secondo momento.

Rilevamento delle app a partire da uno smartphone Android

Il tuo smartphone Android può rilevare se i dispositivi Wear OS di un utente hanno la tua app dell'orologio. Segui questi passaggi:

  1. Con NodeClient, trova tutti gli orologi connessi al telefono dell'utente. Per maggiori informazioni, consulta l' app di esempio su GitHub.
  2. Utilizzando CapabilityClient, controlla su quale smartwatch dell'utente è installata la tua app.
  3. Se la tua app non è installata su tutti gli orologi dell'utente, consenti all'utente di aprire il Play Store sui restanti dispositivi Wear OS dal telefono utilizzando il metodo RemoteActivityHelper.startRemoteActivity(). Utilizza l'URI di mercato per l'app Wear OS, che potrebbe essere diverso dall'URI dell'app per telefono. Ad esempio, utilizza un URI di mercato come: market://details?id=com.example.android.wearable.wear.finddevices.

Dati sulla posizione per smartwatch accoppiati ad iPhone

Per orologi accoppiati con iPhone, utilizza il Fused Location Provider (FLP) per ottenere dati sulla posizione sull'orologio. Per maggiori informazioni, consulta la pagina Rilevare la posizione su Wear OS.

Se il telefono associato è disponibile, FLP lo utilizza per i dati sulla posizione.

Ottenere solo i dati necessari

In genere, quando ottieni dati da internet, ottieni solo i dati necessari. In caso contrario, potresti introdurre latenza e utilizzo della memoria e della batteria non necessari.

Quando uno smartwatch è connesso tramite una connessione Bluetooth LE, l'app potrebbe avere accesso a una larghezza di banda di soli 4 kilobyte al secondo, a seconda dello smartwatch. Pertanto, consigliamo di seguire questi passaggi:

  • Controlla le richieste e le risposte di rete per verificare la presenza di dati aggiuntivi necessari solo per un'app per smartphone.
  • Riduci le immagini di grandi dimensioni prima di inviarle tramite una rete a uno smartwatch.

Per i casi in cui è necessaria una rete a larghezza di banda elevata, vedi Accesso di rete a larghezza di banda elevata.

Altri esempi di codice

L'esempio WearVerifyRemoteApp mostra ulteriormente l'utilizzo delle API illustrate in questa pagina.