Panoramica dell'API Data Layer

Il nodo basato su cloud è controllato da un server di proprietà di Google
Figura 1. Un esempio di rete di nodi con dispositivi portatili e Wear OS.

L'API Wearable Data Layer, che fa parte di Google Play Services, fornisce un canale di comunicazione tra i dispositivi indossabili (come gli smartwatch) e i dispositivi portatili connessi (di solito gli smartphone). È un modo per sincronizzare e trasferire i dati tra i dispositivi.

Nota: questa API è disponibile solo sugli smartwatch Wear OS e sui dispositivi Android accoppiati. Per gli smartwatch Wear OS accoppiati a smartphone iOS, le app possono interrogare altre API basate sul cloud se è disponibile una connessione a internet. Per saperne di più su queste altre API, visita la pagina Accesso alla rete e sincronizzazione su Wear OS.

Attenzione:poiché le API del livello dati sono progettate per la comunicazione tra dispositivi portatili e indossabili, queste sono le uniche API che puoi utilizzare per configurare la comunicazione tra questi dispositivi. Ad esempio, non tentare di aprire socket di basso livello per creare un canale di comunicazione.

Casi d'uso comuni

Utilizza l'API Data Layer quando l'interazione avviene esclusivamente tra lo smartwatch e lo smartphone. Ad esempio:

  • Telecomando: lo smartwatch funge da telecomando per lo smartphone (ad es. controllare un lettore musicale in esecuzione sullo smartphone, scorrere una presentazione, fungere da pulsante di scatto della fotocamera).
  • Avvio app portatile: la funzionalità del pulsante "Apri sullo smartphone".
  • Ponte di autenticazione: invio di un token di sessione dallo smartphone allo smartwatch durante la configurazione iniziale.

Molti scenari comuni dovrebbero invece utilizzare l'infrastruttura cloud esistente, ad esempio:

  • Salvataggio dei dati: allenamenti, note.
  • Recupero dei contenuti: caricamento di un elenco di allenamenti passati, download di musica, recupero delle informazioni meteo.
  • Stato della sincronizzazione: se l'utente modifica la foto del profilo sul web, l'orologio si aggiorna utilizzando il cloud, non interrogando lo smartphone.

Per questi scenari, utilizza la tua infrastruttura e i tuoi endpoint esistenti anziché l'API Data Layer.

Opzioni di comunicazione

I dati vengono trasferiti in uno dei seguenti modi:

  1. Direttamente, quando è stabilita una connessione Bluetooth tra il dispositivo Wear OS e un altro dispositivo.
  2. Tramite una rete disponibile, ad esempio LTE o Wi-Fi, utilizzando un nodo di rete sui server di Google come intermediario.

Tutti i client Data Layer possono scambiare dati tramite Bluetooth o cloud, a seconda delle connessioni disponibili per i dispositivi. Supponi che i dati trasmessi utilizzando il livello dati possano a un certo punto utilizzare server di proprietà di Google.

Bluetooth

Quando i dispositivi sono connessi tramite Bluetooth, Data Layer utilizza questa connessione. Esiste un unico canale criptato tra i dispositivi, che utilizza la crittografia Bluetooth standard, gestita da Google Play Services.

Il cloud

Quando il Bluetooth non è disponibile, i dati vengono indirizzati automaticamente tramite Google Cloud. Tutti i dati trasferiti tramite Google Cloud sono criptati end-to-end.

Sicurezza delle comunicazioni

Google Play Services applica le seguenti limitazioni per fornire una comunicazione più sicura tra l'app installata su un dispositivo Wear OS e la stessa app installata su un dispositivo portatile nelle vicinanze:

  • Il nome del pacchetto deve corrispondere su tutti i dispositivi.
  • La firma del pacchetto deve corrispondere su tutti i dispositivi.

Nessun'altra app ha accesso ai dati, indipendentemente dal tipo di connessione.

Configura

L'API Wearable Data Layer ha le seguenti dipendenze:

Includi la seguente dipendenza nel file build.gradle del modulo Wear:

dependencies {
    ...
    implementation("com.google.android.gms:play-services-wearable:19.0.0")
}

Facilitare la procedura di accoppiamento iniziale

Horologist fornisce diverse librerie di assistenza in aggiunta alle API della piattaforma. Include una libreria del livello dati che aiuta a stabilire una connessione tra un dispositivo mobile e un dispositivo Wear OS. Inoltre, fornisce API pratiche per svolgere le seguenti operazioni:

  • Installa l'app sull'altro dispositivo.
  • Avvia l'app sull'altro dispositivo.
  • Avviare un'attività specifica sull'altro dispositivo.
  • Avvia l'app complementare.

Accedere al data layer

Per chiamare l'API Data Layer, utilizza la classe Wearable per ottenere istanze delle varie classi client, ad esempio DataClient e MessageClient.

Per ulteriori informazioni, consulta l'esempio di DataLayer.

Utilizzare un client minimale

Per creare un client, vedi il seguente esempio di codice:

val dataClient = Wearable.getDataClient(this)

val available = try {
    GoogleApiAvailability.getInstance()
        .checkApiAvailability(client)
        .await()
    true
} catch (e: AvailabilityException) {
    // API is not available in this device.
    false
}

Il contesto può essere qualsiasi contesto Android valido. Se utilizzi l'API nell'ambito di un Activity, utilizza il metodo getDataClient() della classe Wearable. In questo modo, alcune interazioni vengono visualizzate come finestre di dialogo anziché come notifiche, ad esempio quando all'utente viene chiesto di aggiornare la versione di Google Play Services.

Per impostazione predefinita, i callback ai listener vengono eseguiti sul thread principale dell'interfaccia utente dell'app. Per eseguire callback su un thread diverso, utilizza un oggetto WearableOptions per specificare un Looper personalizzato.

Per saperne di più, consulta il riferimento WearableOptions.Builder.

Ricrea le istanze client in base alle necessità

I client API indossabili, come DataClient e MessageClient, sono economici da creare. Quindi, anziché conservare i client, ricreali in base alle tue esigenze, utilizzando lo stile più adatto alla tua app.

Lo stato del client, ad esempio l'insieme di listener registrati, è condiviso tra tutti i client e viene mantenuto se Google Play Services viene aggiornato durante l'esecuzione di un'app.