Inviare e sincronizzare dati su Wear OS

Con Wear OS by Google, un orologio offre diverse modalità di invio e sincronizzazione dei dati. Ti consigliamo di inviare e sincronizzare i dati direttamente dalla rete, in quanto ciò consente all'app di essere considerata un'app autonoma.

Invia e sincronizza i dati direttamente dalla rete

Crea app per Wear OS in modo che comunicano direttamente con la rete. Puoi utilizzare le stesse API che utilizzi per lo sviluppo per dispositivi mobili, ma tieni presente alcune differenze specifiche per Wear-OS.

Invia e sincronizza i dati con l'API Wearable Data Layer

L'API Wearable Data Layer, che fa parte di Google Play Services, fornisce un canale di comunicazione facoltativo per le app.

Questa API è disponibile soltanto sugli orologi Wear OS e sui dispositivi Android accoppiati. Per gli smartwatch Wear OS accoppiati a smartphone iOS, le app possono richiedere altre API basate su cloud se è disponibile una connessione a internet.

L'API Wearable Data Layer ha le seguenti dipendenze:

  • La versione più recente di Google Play Services.
  • Un emulatore di Wear OS o di un dispositivo Wear OS.

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

  dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:18.1.0'
  }
  

Consigliamo alle app indossabili di inviare e sincronizzare dati direttamente da una rete o da un telefono connesso. Tuttavia, se vuoi comunicare direttamente tra i dispositivi in un formato di tipo RPC o se non puoi connetterti direttamente a una rete per i dati, puoi utilizzare l'API Wearable Data Layer nei seguenti modi.

Pubblicizzare ed eseguire query sulle funzionalità remote
L' CapabilityClient fornisce informazioni su quali nodi della rete Wear OS supportano le funzionalità delle app personalizzate. I nodi rappresentano i dispositivi mobili e indossabili che sono connessi alla rete. Una funzionalità è una funzionalità che un'app definisce al momento della creazione o configura in modo dinamico in fase di runtime.
Ad esempio, un'app mobile per Android potrebbe pubblicizzare il supporto del controllo remoto della riproduzione video. Quando la versione indossabile dell'app è installata, può usare CapabilityClient per verificare se la versione mobile dell'app è installata e supporta questa funzionalità. In caso affermativo, l'app indossabile può mostrare il pulsante di riproduzione/pausa per controllare il video sull'altro dispositivo tramite un messaggio.
Questa opzione può funzionare anche nella direzione opposta, poiché supporta le funzionalità di elenco delle app per dispositivi indossabili.
Inviare messaggi
L' MessageClient può inviare messaggi ed è ideale per le chiamate di procedura remota (RPC), come il controllo di un media player di un palmare dal dispositivo indossabile o l'avvio di un intent sul dispositivo indossabile dal dispositivo stesso. I messaggi sono perfetti anche per le richieste unidirezionali o per un modello di comunicazione di richiesta o risposta.
Se i dispositivi portatili e indossabili sono connessi, il sistema mette in coda il messaggio per la consegna e restituisce un codice risultato riuscito. Se i dispositivi non sono connessi, viene restituito un errore. Un codice risultato riuscito non indica che il messaggio è stato recapitato correttamente, poiché i dispositivi potrebbero disconnettersi dopo aver ricevuto il codice risultato.
Trasferire dati
L' ChannelClient può trasferire dati da un dispositivo portatile a un dispositivo indossabile. Con ChannelClient puoi:
  • Trasferisci i file di dati tra due o più dispositivi connessi quando internet non è disponibile senza la sincronizzazione automatica fornita quando utilizzi oggetti Asset collegati a oggetti DataItem. ChannelClient risparmia spazio su disco su DataClient, creando una copia degli asset sul dispositivo locale prima della sincronizzazione con i dispositivi connessi.
  • Invia in modo affidabile un file troppo grande per poter essere inviato usando MessageClient.
  • Trasferisci i dati trasmessi in streaming, ad esempio i dati vocali dal microfono.
Sincronizzare i dati
Un DataClient espone un'API per i componenti in lettura o scrittura su DataItem o Asset.
Un DataItem viene sincronizzato su tutti i dispositivi in una rete Wear OS. È possibile impostare elementi di dati quando non sei connesso ad alcun nodo. Questi elementi di dati vengono sincronizzati quando i nodi tornano online.
Gli elementi di dati sono privati per l'applicazione che li ha creati e sono accessibili solo da tale applicazione su altri nodi. Generalmente hanno dimensioni ridotte. Utilizza Assets per il trasferimento di oggetti di dati più grandi e più permanenti, come le immagini.
Wear OS supporta più indossabili connessi a un dispositivo portatile. Ad esempio, quando l'utente salva una nota su un palmare, questa viene visualizzata automaticamente su tutti i dispositivi Wear OS dell'utente. Per facilitare la sincronizzazione dei dati tra i dispositivi, i server di Google ospitano un nodo cloud nella rete dei dispositivi. Il sistema sincronizza i dati con i dispositivi connessi direttamente, il nodo cloud e con i dispositivi indossabili connessi al nodo cloud tramite Wi-Fi.

Avviso: gli elementi vengono trasferiti a tutti i dispositivi Wear OS disponibili, anche quelli su cui non è installata la tua app. Se sincronizzi una grande quantità di dati, valuta se un'app "ricevitore" è installata e online per evitare di sprecare risorse sia su dispositivi portatili che su dispositivi Wear OS.

Ascoltare eventi importanti del livello dati (per i servizi)
L'estensione di WearableListenerService ti consente di rimanere in ascolto di eventi importanti del livello dati in un servizio. Il sistema gestisce il ciclo di vita di WearableListenerService, associandosi al servizio quando deve inviare elementi di dati o messaggi e svincolando il servizio quando non è necessario alcun lavoro.
Ascoltare eventi importanti del livello dati (per le attività in primo piano)
L'implementazione di OnDataChangedListener in un'attività ti consente di rimanere in ascolto di eventi importanti del livello dati quando un'attività è in primo piano. L'utilizzo di questa opzione al posto di WearableListenerService ti consente di rimanere in ascolto delle modifiche solo quando l'utente sta utilizzando attivamente la tua app.

Avviso: poiché queste API sono progettate per la comunicazione tra dispositivi portatili e indossabili, si tratta delle uniche API che puoi utilizzare per configurare la comunicazione tra questi dispositivi. Ad esempio, non provare ad aprire socket di basso livello per creare un canale di comunicazione.

Confronto tra clienti

La tabella seguente mostra i diversi requisiti e casi d'uso per ciascun client.

Client di dati Client di messaggistica Client del canale
Dimensione dei dati superiore a 100 kB No
Può inviare messaggi a nodi attualmente non connessi No No
Modello di comunicazione Risorsa basata sulla rete condivisa Trasmissione 1:1 del messaggio (con risposta) Streaming 1:1

Connettività

Il livello dati offre due opzioni di comunicazione:

  1. Scambio diretto di dati quando viene stabilita una connessione Bluetooth tra lo smartwatch e un altro dispositivo.
  2. Scambia dati tramite una rete disponibile, come LTE o Wi-Fi.
Figura 1. Una rete di esempio di nodi con dispositivi portatili e portatili.

Tutti i client del livello dati possono scambiare dati tramite Bluetooth o Google Cloud Sync, a seconda delle connessioni disponibili per i dispositivi. Il servizio di sincronizzazione cloud è il meccanismo di Google per la comunicazione e lo scambio di dati tra dispositivi indossabili e telefoni quando il Bluetooth non è disponibile.

Sicurezza

Entrambe le opzioni di comunicazione, Bluetooth e Cloud Sync Service, sono protette con crittografia end-to-end.

Google Play Services applica le seguenti limitazioni per garantire che la comunicazione tra il telefono e l'orologio sia sicura e da app a app.

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

Bluetooth

Quando i dispositivi sono connessi tramite Bluetooth, il livello dati utilizza questa connessione. Quando si utilizza il Bluetooth, esiste un singolo canale criptato tra i dispositivi, con crittografia Bluetooth standard, gestita da Google Play Services.

Nuvola

Supponiamo che i dati trasmessi utilizzando il livello dati possano a un certo punto utilizzare server di proprietà di Google. Ad esempio, DataClient, MessageClient o ChannelClient instradano automaticamente tramite Google Cloud quando il Bluetooth non è disponibile. Tutti i dati trasferiti tramite Google Cloud sono protetti con crittografia end-to-end.

Generazione e archiviazione delle chiavi

I tasti end-to-end per la comunicazione basata su cloud vengono generati dal telefono e vengono scambiati direttamente con lo smartwatch quando i due dispositivi sono connessi tramite Bluetooth. Questo avviene durante la configurazione del dispositivo. I server di proprietà di Google non ricevono queste chiavi in nessun momento.

La comunicazione tramite server di proprietà di Google non può avvenire fino al completamento della generazione delle chiavi end-to-end. Le chiavi sono archiviate nell'archivio file privato di Google Play Services su tutti i dispositivi accoppiati.

Backup del dispositivo

Le chiavi non vengono sottoposte a backup e non possono essere trasferite dal dispositivo. Se sono necessarie nuove chiavi, ad esempio per un nuovo telefono, il sistema genera nuove chiavi e le condivide con i dispositivi che l'utente ha ancora.