Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Interfejsy API warstwy danych Wear OS obejmują kilka różnych typów klientów, które są przydatne w przypadku różnych typów danych i różnych warunków łączności.
Na tej stronie znajdziesz opisy poszczególnych typów klientów oraz tabelę porównującą ich możliwości. Na podstawie tych informacji możesz wybrać zestaw typów klientów, który najlepiej sprawdzi się w przypadku Twojej aplikacji.
Każdy DataItem to jednostka informacji, która jest przesyłana i synchronizowana na wszystkich urządzeniach użytkownika znajdujących się w pobliżu. DataItem jest przechowywany na stałe, a urządzenie może odczytać jego zawartość do momentu usunięcia elementu danych.
Asset jest przeznaczony do przesyłania większych ilości danych, takich jak obrazy lub pliki multimedialne.
Wysyłanie wiadomości do klienta
Obiekt MessageClient może wysyłać wiadomości i sprawdzi się w przypadku wywołań zdalnych (RPC), np. gdy używasz urządzenia z Wear OS do sterowania wersją aplikacji zainstalowaną na urządzeniu przenośnym.
Komunikaty są przydatne w przypadku żądań jednokierunkowych z użyciem sendMessage() lub modelu komunikacji z modelem żądanie–odpowiedź z użyciem sendRequest(). W przeciwieństwie do klientów danych klienci wiadomości muszą mieć węzły połączone z siecią, aby móc wysyłać wiadomości.
Metoda sendMessage() stara się przekazać dane do węzła zdalnego, ale nie zawiera żadnego wbudowanego mechanizmu ponownego próby. Jeśli urządzenie docelowe rozłączy się przed rozpoczęciem przesyłania przez sieć, metoda zwróci wartość TARGET_NODE_NOT_CONNECTED.
Klient kanału
Obiekt ChannelClient zapewnia komunikację zorientowaną na strumienie między urządzeniami. Kanał to dwukierunkowy kanał komunikacji między dwoma węzłami, który jest przydatny w takich przypadkach jak:
Przesyłać pliki danych między co najmniej 2 połączonymi urządzeniami, gdy internet jest niedostępny. ChannelClient pozwala zaoszczędzić miejsce na dysku w porównaniu z opcją DataClient, która tworzy kopię komponentów na urządzeniu lokalnym przed zsynchronizowaniem z połączonymi urządzeniami.
Wysyłanie pliku, który jest za duży do wysłania za pomocą MessageClient.
Przesyłanie danych strumieniowych, takich jak dane głosowe z mikrofonu.
Po otwarciu kanału możesz wysyłać i odbierać dane w ciągłym strumieniu bajtów, a nie w osobnych jednostkach DataItem, których wymagają klienci danych.
Ty odpowiadasz za zarządzanie przepływem danych i zachowywanie ich spójności.
Klienci kanałów nie oferują takiego samego poziomu automatycznej synchronizacji danych jak klienci danych.
Porównanie klientów
Tabela poniżej zawiera porównanie możliwości różnych klientów:
Preferowany jest Bluetooth. Dane są kopiowane do chmury; jeśli Bluetooth jest dostępny, kopia zapasowa jest tworzona asynchronicznie
Tak, zarówno odczyt, jak i zapis
Wiadomość do klienta
Brak trwałości i ponownego próbowania
Nie
Preferowany jest Bluetooth, ale można użyć Wi-Fi, jeśli jest to jedyny dostępny typ połączenia
Nie
Channel client
Brak trwałości (orientacja na połączenie)
Tak
Preferowany jest Bluetooth, ale można użyć Wi-Fi, jeśli jest to jedyny dostępny typ połączenia
Nie
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-30 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-08-30 UTC."],[],[],null,["The Wear OS data layer APIs consist of several different types of clients, which\nare useful for different types of data and during different connectivity\nconditions.\n\nThis page introduces each client type, and it includes a table that compares the\ncapabilities of the different clients. Using this information, you can select\nthe set of client types that works best for your app.\n\nData client\n\nA [`DataClient`](https://developers.google.com/android/reference/com/google/android/gms/wearable/DataClient) object lets you read or write to a [`DataItem`](https://developers.google.com/android/reference/com/google/android/gms/wearable/DataItem) or\n[`Asset`](https://developers.google.com/android/reference/com/google/android/gms/wearable/Asset):\n\n- Each `DataItem` is a unit of information that's broadcast and synchronized\n across all nearby devices that a user owns. A `DataItem` is stored persistently,\n and your device can read its contents until the data item is deleted.\n\n- An `Asset` is meant for larger data payloads, such as images or media files.\n\nMessage client\n\nA [`MessageClient`](https://developers.google.com/android/reference/com/google/android/gms/wearable/MessageClient) object can send messages and is good for remote procedure\ncalls (RPC), such as using a Wear OS device to control the version of your app\nthat's installed on a handheld device.\n\nMessages are great for one-way requests using `sendMessage()`, or for a\nrequest-and-response communication model using `sendRequest()`. Unlike with data\nclients, message clients need the nodes to be connected to the network in order\nto send messages.\n\nThe `sendMessage()` method is a best effort to deliver to the remote node, and\nit doesn't contain any built-in retry mechanism. If the target device\ndisconnects before the network transfer starts, the method returns\n`TARGET_NODE_NOT_CONNECTED`.\n| **Note:** To help preserve power, consider sending messages only to nearby devices.\n\nChannel client\n\nA [`ChannelClient`](https://developers.google.com/android/reference/com/google/android/gms/wearable/ChannelClient) object provides stream-oriented communication between\ndevices. A *channel* is a bidirectional communication pipe between two nodes,\nwhich is useful for use cases such as the following:\n\n- Transfer data files between two or more connected devices when the internet isn't available. `ChannelClient` saves disk space over `DataClient`, which creates a copy of the assets on the local device before synchronizing with connected devices.\n- Reliably send a file that's too large to send using a `MessageClient`.\n- Transfer streamed data, such as voice data from the microphone.\n\nAfter you open a channel, you can send and receive data in a continuous byte\nstream, rather than the discrete `DataItem` units that data clients require.\n\nYou're responsible for managing the data flow and keeping data consistent.\nChannel clients don't offer the same level of automatic data synchronization\nthat data clients do.\n\nClient comparison\n\nThe following table compares the capabilities of the different clients:\n\n| Client type | Data persistence | Supports data larger than 100 KB? | Network to use | Works offline? |\n|--------------------|--------------------------------------|--------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|------------------------------|\n| **Data client** | Data is persisted indefinitely | Yes (use [`Asset`](https://developers.google.com/android/reference/com/google/android/gms/wearable/Asset) objects) | Bluetooth preferred. Data is backed up to the cloud; if Bluetooth is available, this backup is done asynchronously | Yes, for both read and write |\n| **Message client** | No persistence and no retry | No | Bluetooth preferred, but can use Wi-Fi if it's the only type of connection available | No |\n| **Channel client** | No persistence (connection-oriented) | Yes | Bluetooth preferred, but can use Wi-Fi if it's the only type of connection available | No |"]]