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. ConChannelClient
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 oggettiDataItem
.ChannelClient
risparmia spazio su disco suDataClient
, 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.
- Trasferisci i file di dati tra due o più dispositivi connessi quando internet non è disponibile senza la sincronizzazione automatica fornita quando utilizzi oggetti
- Sincronizzare i dati
- Un
DataClient
espone un'API per i componenti in lettura o scrittura suDataItem
oAsset
. - 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 diWearableListenerService
, 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 diWearableListenerService
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 | Sì | No | Sì |
Può inviare messaggi a nodi attualmente non connessi | Sì | 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:
- Scambio diretto di dati quando viene stabilita una connessione Bluetooth tra lo smartwatch e un altro dispositivo.
- Scambia dati tramite una rete disponibile, come LTE o Wi-Fi.
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.