App Wear OS autonome e non autonome

Consigliamo che le app per 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 la tua app dell'orologio richiede l'interazione con il telefono, devi contrassegnarla come non autonoma e assicurarti che l'utente abbia l'app per smartphone disponibile.

Pianifica la tua app

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

Per informazioni su come configurare l'app per la distribuzione tramite Google Play Store, consulta la pagina relativa all' pacchetto e distribuzione di app per Wear OS e la guida per iniziare a usare gli Android App Bundle.

Per le nuove app, il livello API target deve essere pari o superiore a 30. Per maggiori informazioni, consulta 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 sezione Accesso e 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 telefono per le funzionalità principali, inclusa l'autenticazione. Se disponibile, un'app per telefono fornisce solo funzionalità facoltative.
  • Non autonoma: un'app dipendente che richiede un'app su uno smartphone o su un altro dispositivo per le funzionalità principali, inclusa l'autenticazione.

Nell'app 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 completamente indipendente, indicalo al Google Play Store impostando il valore di 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 per smartphone. Pertanto, se l'app dell'orologio rileva che uno smartphone accoppiato non dispone dell'app per smartphone necessaria, come descritto in questa pagina, chiedi all'utente di installare l'app per telefono.

Archiviazione di codice e dati condivisi

Il codice può essere condiviso tra un'app Wear OS e un'app per telefono. 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 se l'altra app è disponibile.

Le app per smartphone 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 uno smartphone, su un orologio accoppiato o nel cloud, l'CapabilityClient consente ad altre app di rilevarla. Per maggiori informazioni, consulta la pagina Pubblicizzare le funzionalità.

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 dell'orologio che richiedono la presenza dell'app per smartphone complementare per funzionare correttamente.

Devi controllare se il Play Store è disponibile sul dispositivo, poiché 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 per smartphone richiede l'app autonoma dell'orologio.

Puoi anche esaminare l' esempio di supporto Datalayer, che mostra come utilizzare le librerie helper Datalayer, parte di Horologist. Questi aiutanti consentono di monitorare la connessione tra un dispositivo portatile e un dispositivo Wear OS. Per ulteriori informazioni sui corsi descritti nella seguente sezione, consulta la documentazione di riferimento dell'API Wear OS. Questo riferimento include anche informazioni sulla classe PhoneTypeHelper, che contiene un metodo getPhoneDeviceType() che consente all'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 (orologio o smartphone), 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:

<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 Pubblicizzare le funzionalità.

Rilevamento di app e apertura di un URL da uno smartwatch

L'app dell'orologio può rilevare se lo smartphone accoppiato di un utente ha la tua app per telefono. Svolgi i seguenti passaggi:

  1. Usa CapabilityClient per controllare se l'app Telefono è installata sullo smartphone accoppiato. Per maggiori informazioni, consulta l' esempio di helper Datalayer su GitHub.
  2. Se l'app Telefono non è installata sullo smartphone, usa il metodo PhoneDeviceType.getPhoneDeviceType() per controllare il tipo di telefono. Per informazioni dettagliate, consulta la sezione che segue.
  3. Se viene restituito PhoneDeviceType.DEVICE_TYPE_ANDROID, lo smartphone è uno smartphone 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 l'indirizzo PhoneDeviceType.DEVICE_TYPE_IOS, significa che lo smartphone è un telefono iOS senza Play Store disponibile. Apri l'App Store sull'iPhone chiamando il numero 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 telefono è 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 sia aperto sullo smartphone dallo smartwatch e che non è richiesta alcuna app per smartphone.

Dettagli per il rilevamento del tipo di smartphone 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 Description
DEVICE_TYPE_ANDROID Lo smartphone accoppiato è un dispositivo Android.
DEVICE_TYPE_IOS Lo smartphone accoppiato è un dispositivo iOS.
DEVICE_TYPE_UNKNOWN Lo smartphone associato è un dispositivo sconosciuto.
DEVICE_TYPE_ERROR Si è verificato un errore durante la determinazione del tipo di smartphone accoppiato; è necessario effettuare un altro controllo in un secondo momento.

Rilevamento delle app da uno smartphone Android

Il tuo telefono Android può rilevare se nei dispositivi Wear OS di un utente è disponibile l'app dell'orologio. Segui questi passaggi:

  1. Utilizzando NodeClient, trova tutti gli smartwatch connessi al telefono dell'utente. Per maggiori informazioni, consulta l' esempio di helper Datalayer su GitHub.
  2. Utilizzando l'CapabilityClient, controlla su quale orologio 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 dallo smartphone 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 gli smartwatch accoppiati ad iPhone

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

Se lo smartphone accoppiato è disponibile, FLP lo utilizza per i dati sulla posizione.

Ottenere solo i dati necessari

In genere, quando ottieni i dati da internet, ottieni solo i dati necessari. In caso contrario, potresti introdurre latenza, 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 dell'orologio. Pertanto, si consiglia di procedere nel seguente modo:

  • Controlla le richieste e le risposte di rete per verificare la presenza di dati aggiuntivi necessari solo per un'app per telefono.
  • 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, consulta Accesso di rete a larghezza di banda elevata.

Altri esempi di codice

L' esempio di helper Datalayer dimostra ulteriormente l'utilizzo delle API trattate in questa pagina.