Omówienie interfejsu Data Layer API

Węzeł w chmurze jest kontrolowany przez serwer należący do Google.
Rysunek 1. Przykładowa sieć węzłów z urządzeniami przenośnymi i Wear OS.

Interfejs Wearable Data Layer API, który jest częścią Usług Google Play, zapewnia kanał komunikacji między urządzeniami do noszenia (np. inteligentnymi zegarkami) a połączonymi urządzeniami przenośnymi (zwykle smartfonami). Umożliwia synchronizowanie i przesyłanie danych między urządzeniami.

Uwaga: ten interfejs API jest dostępny tylko na zegarkach z Wear OS i sparowanych urządzeniach z Androidem. W przypadku zegarków z Wear OS sparowanych z telefonami z iOS aplikacje mogą wysyłać zapytania do innych interfejsów API opartych na chmurze, jeśli dostępne jest połączenie z internetem. Więcej informacji o tych interfejsach API znajdziesz w artykule Dostęp do sieci i synchronizacja w Wear OS.

Uwaga: interfejsy API warstwy danych są przeznaczone do komunikacji między urządzeniami przenośnymi a urządzeniami do noszenia. Są to jedyne interfejsy API, których możesz używać do konfigurowania komunikacji między tymi urządzeniami. Nie próbuj na przykład otwierać gniazd niskiego poziomu, aby utworzyć kanał komunikacji.

Typowe przypadki użycia

Używaj interfejsu Data Layer API, gdy interakcja odbywa się wyłącznie między zegarkiem a telefonem. Przykłady:

  • Zdalne sterowanie: zegarek działa jako pilot do telefonu (np. steruje odtwarzaczem muzyki uruchomionym na telefonie, przesuwa slajdy prezentacji, działa jako spust migawki aparatu).
  • Uruchamianie aplikacji na urządzeniu przenośnym: funkcja przycisku „Otwórz na telefonie”.
  • Przekazywanie uwierzytelniania: wysyłanie tokena sesji z telefonu do zegarka podczas konfiguracji początkowej.

W wielu typowych scenariuszach należy zamiast tego używać istniejącej infrastruktury w chmurze, na przykład:

  • Zapisywanie danych: treningi, notatki.
  • Pobieranie treści: wczytywanie listy poprzednich treningów, pobieranie muzyki, pobieranie informacji o pogodzie.
  • Synchronizowanie stanu: jeśli użytkownik zmieni zdjęcie profilowe w internecie, zegarek zaktualizuje je za pomocą chmury, a nie przez wysłanie zapytania do telefonu.

W tych scenariuszach zamiast interfejsu Data Layer API używaj własnych istniejących punktów końcowych i infrastruktury.

Opcje komunikacji

Dane są przesyłane w jeden z tych sposobów:

  1. Bezpośrednio, gdy między urządzeniem z Wear OS a innym urządzeniem jest ustanowione połączenie Bluetooth.
  2. Przez dostępną sieć, np. LTE lub Wi-Fi, przy użyciu węzła sieciowego na serwerach Google jako pośrednika.

Wszyscy klienci warstwy danych mogą wymieniać dane przez Bluetooth lub chmurę, w zależności od połączeń dostępnych na urządzeniach. Załóż, że dane przesyłane za pomocą warstwy danych mogą w pewnym momencie korzystać z serwerów należących do Google.

Bluetooth

Gdy urządzenia są połączone przez Bluetooth, warstwa danych używa tego połączenia. Między urządzeniami jest jeden zaszyfrowany kanał, który korzysta ze standardowego szyfrowania Bluetooth i jest zarządzany przez Usługi Google Play.

Chmura

Gdy Bluetooth jest niedostępny, dane są automatycznie kierowane przez Google Cloud. Wszystkie dane przesyłane przez Google Cloud są szyfrowane na całej trasie.

Bezpieczeństwo komunikacji

Usługi Google Play wymuszają te ograniczenia, aby zapewnić bezpieczniejszą komunikację między aplikacją zainstalowaną na urządzeniu z Wear OS a tą samą aplikacją zainstalowaną na pobliskim urządzeniu przenośnym:

  • Nazwa pakietu musi być taka sama na wszystkich urządzeniach.
  • Podpis pakietu musi być taki sam na wszystkich urządzeniach.

Żadne inne aplikacje nie mają dostępu do danych niezależnie od typu połączenia.

Konfiguracja

Interfejs Wearable Data Layer API ma te zależności:

Dodaj tę zależność do pliku build.gradle modułu Wear:

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

Ułatwianie początkowego procesu parowania

Horologist udostępnia kilka bibliotek pomocniczych opartych na interfejsach API platformy. Zawiera bibliotekę warstwy danych, która pomaga nawiązać połączenie między urządzeniem mobilnym a urządzeniem z Wear OS. Dodatkowo udostępnia wygodne interfejsy API, które umożliwiają wykonywanie tych czynności:

  • Instalowanie aplikacji na innym urządzeniu.
  • Uruchamianie aplikacji na innym urządzeniu.
  • Uruchamianie określonej aktywności na innym urządzeniu.
  • Uruchamianie aplikacji towarzyszącej.

Dostęp do warstwy danych

Aby wywołać interfejs Data Layer API, użyj klasy Wearable, aby uzyskać instancje różnych klas klienta, takich jak DataClient i MessageClient.

Więcej informacji znajdziesz w przykładzie DataLayer.

Używanie minimalnego klienta

Aby utworzyć klienta, zapoznaj się z tym przykładowym kodem:

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
}

Kontekst może być dowolnym prawidłowym kontekstem Androida. Jeśli używasz interfejsu API w zakresie Activity, użyj metody getDataClient() klasy Wearable. Dzięki temu niektóre interakcje mogą być wyświetlane jako okna, a nie powiadomienia, np. gdy użytkownik jest proszony o zaktualizowanie wersji Usług Google Play.

Domyślnie wywołania zwrotne do detektorów są wykonywane w głównym wątku UI aplikacji. Aby wywołania zwrotne były wykonywane w innym wątku, użyj obiektu WearableOptions, aby określić niestandardowy Looper.

Więcej informacji znajdziesz w dokumentacji WearableOptions.Builder.

W razie potrzeby ponownie twórz instancje klienta

Klienci Wearable API, tacy jak DataClient i MessageClient, są tanie w tworzeniu. Dlatego zamiast przechowywać klientów, twórz ich ponownie w razie potrzeby, używając stylu odpowiedniego dla Twojej aplikacji.

Stan klienta, np. zestaw zarejestrowanych odbiorników, jest współdzielony przez wszystkich klientów i zachowywany, jeśli Usługi Google Play zostaną zaktualizowane podczas działania aplikacji.