Die Wearable Data Layer API, die Teil der Google Play-Dienste ist, bietet einen Kommunikationskanal zwischen Wearables (z. B. Smartwatches) und verbundenen Mobilgeräten (in der Regel Smartphones). So können Daten zwischen den Geräten synchronisiert und übertragen werden.
Hinweis:Diese API ist nur auf Wear OS-Smartwatches und gekoppelten Android-Geräten verfügbar. Bei Wear OS-Smartwatches, die mit iOS-Smartphones gekoppelt sind, können Apps andere cloudbasierte APIs abfragen, wenn eine Internetverbindung besteht. Weitere Informationen zu diesen anderen APIs finden Sie unter Netzwerkzugriff und Synchronisierung auf Wear OS.
Achtung:Da die Data Layer APIs für die Kommunikation zwischen Smartphones und Wearables entwickelt wurden, sind sie die einzigen APIs, die Sie verwenden können, um die Kommunikation zwischen diesen Geräten einzurichten. Versuchen Sie beispielsweise nicht, Low-Level-Sockets zu öffnen, um einen Kommunikationskanal zu erstellen.
Häufige Anwendungsfälle
Verwenden Sie die Data Layer API, wenn die Interaktion ausschließlich zwischen der Smartwatch und dem Smartphone erfolgt. Beispiel:
- Fernbedienung: Die Smartwatch fungiert als Fernbedienung für das Smartphone, z.B. zur Steuerung eines Musikplayers, zum Durchblättern einer Präsentation oder als Kameraauslöser.
- Starten von Handheld-Apps: Die Funktion „Auf dem Smartphone öffnen“.
- Authentifizierungs-Bridging: Senden eines Sitzungstokens vom Smartphone an die Smartwatch während der Ersteinrichtung.
In vielen gängigen Szenarien sollten Sie stattdessen Ihre vorhandene Cloud-Infrastruktur verwenden, z. B. in folgenden Fällen:
- Daten speichern: Trainings, Notizen.
- Inhalte werden abgerufen: Eine Liste der bisherigen Trainings wird geladen, Musik wird heruntergeladen, Wetterdaten werden abgerufen.
- Synchronisierungsstatus: Wenn der Nutzer sein Profilbild im Web ändert, wird die Smartwatch über die Cloud aktualisiert und nicht durch Abfragen des Smartphones.
Verwenden Sie für diese Szenarien Ihre eigenen vorhandenen Endpunkte und Ihre Infrastruktur anstelle der Data Layer API.
Kommunikationsoptionen
Die Daten werden auf eine der folgenden Arten übertragen:
- Direkt, wenn eine Bluetooth-Verbindung zwischen dem Wear OS-Gerät und einem anderen Gerät besteht.
- Über ein verfügbares Netzwerk wie LTE oder WLAN, wobei ein Netzwerk-Knoten auf den Google-Servern als Vermittler dient.
Alle Data Layer-Clients können Daten entweder über Bluetooth oder über die Cloud austauschen, je nachdem, welche Verbindungen für die Geräte verfügbar sind. Es ist davon auszugehen, dass Daten, die über die Datenschicht übertragen werden, irgendwann auf Google-eigenen Servern gespeichert werden.
Bluetooth
Wenn Geräte über Bluetooth verbunden sind, wird diese Verbindung von Data Layer verwendet. Zwischen den Geräten wird ein einzelner verschlüsselter Kanal verwendet, der von den Google Play-Diensten verwaltet wird und auf der standardmäßigen Bluetooth-Verschlüsselung basiert.
Cloud
Daten werden automatisch über Google Cloud weitergeleitet, wenn Bluetooth nicht verfügbar ist. Alle über Google Cloud übertragenen Daten sind End-to-End-verschlüsselt.
Sicherheit der Kommunikation
Die Google Play-Dienste erzwingen die folgenden Einschränkungen, um eine sicherere Kommunikation zwischen der auf einem Wear OS-Gerät installierten App und derselben App auf einem in der Nähe befindlichen Mobilgerät zu ermöglichen:
- Der Paketname muss auf allen Geräten übereinstimmen.
- Die Signatur des Pakets muss auf allen Geräten übereinstimmen.
Unabhängig vom Verbindungstyp haben keine anderen Apps Zugriff auf die Daten.
Einrichten
Die Wearable Data Layer API hat die folgenden Abhängigkeiten:
- Die aktuelle Version der Google Play-Dienste.
- Ein Wear OS-Gerät oder ein Wear OS-Emulator.
Fügen Sie die folgende Abhängigkeit in die Datei „build.gradle“ Ihres Wear-Moduls ein:
dependencies {
...
implementation("com.google.android.gms:play-services-wearable:19.0.0")
}
Erleichterung des ersten Kopplungsvorgangs
Horologist bietet mehrere Hilfsbibliotheken zusätzlich zu den Plattform-APIs. Sie enthält eine Data Layer-Bibliothek, mit der eine Verbindung zwischen einem Mobilgerät und einem Wear OS-Gerät hergestellt werden kann. Außerdem bietet sie praktische APIs für folgende Aufgaben:
- Installieren Sie die App auf dem anderen Gerät.
- Starten Sie die App auf dem anderen Gerät.
- Eine bestimmte Aktivität auf dem anderen Gerät starten
- Starten Sie die Companion-App.
Auf die Datenschicht zugreifen
Wenn Sie die Data Layer API aufrufen möchten, verwenden Sie die Klasse Wearable, um Instanzen der verschiedenen Clientklassen wie DataClient und MessageClient abzurufen.
Weitere Informationen finden Sie im DataLayer-Beispiel.
Minimalen Client verwenden
Im folgenden Beispielcode sehen Sie, wie Sie einen Client erstellen:
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 }
Der Kontext kann ein beliebiger gültiger Android-Kontext sein. Wenn Sie die API im Rahmen eines Activity verwenden, nutzen Sie die Methode getDataClient() der Klasse Wearable. So können bestimmte Interaktionen als Dialogfelder statt als Benachrichtigungen angezeigt werden, z. B. wenn der Nutzer aufgefordert wird, seine Version der Google Play-Dienste zu aktualisieren.
Standardmäßig werden Callbacks an Listener im Haupt-UI-Thread der App ausgeführt. Wenn Sie möchten, dass Rückrufe in einem anderen Thread erfolgen, verwenden Sie ein WearableOptions-Objekt, um einen benutzerdefinierten Looper anzugeben.
Weitere Informationen finden Sie in der Referenz zu WearableOptions.Builder.
Clientinstanzen nach Bedarf neu erstellen
Wearable-API-Clients wie DataClient und MessageClient sind kostengünstig zu erstellen. Anstatt die Clients beizubehalten, sollten Sie sie bei Bedarf mit dem Stil neu erstellen, der für Ihre App geeignet ist.
Der Clientstatus, z. B. die Menge der registrierten Listener, wird für alle Clients freigegeben und bleibt erhalten, wenn die Google Play-Dienste aktualisiert werden, während eine App ausgeführt wird.