Обзор API уровня данных

Облачный узел контролируется сервером, принадлежащим Google.
Рисунок 1. Пример сети узлов с портативными устройствами и устройствами Wear OS.

API Wearable Data Layer, который является частью сервисов Google Play, обеспечивает канал связи между носимыми устройствами (например, умными часами) и подключенными портативными устройствами (обычно смартфонами). Это способ синхронизации и передачи данных между устройствами.

Примечание. Этот API доступен только на часах Wear OS и сопряженных устройствах Android. Для часов Wear OS, подключенных к телефонам iOS, приложения могут запрашивать другие облачные API, если доступно подключение к Интернету. Для получения дополнительной информации об этих других API посетите раздел Доступ к сети и синхронизация на Wear OS .

Внимание: поскольку API-интерфейсы уровня данных предназначены для связи между портативными и носимыми устройствами, это единственные API-интерфейсы, которые вы можете использовать для настройки связи между этими устройствами. Например, не пытайтесь открывать низкоуровневые сокеты для создания канала связи.

Распространенные случаи использования

API уровня данных особенно полезен для фитнеса и медиа.

Фитнес-приложения

Отправка данных о тренировках из приложения Wear OS в мобильное приложение Приложениям для фитнеса часто приходится записывать данные о тренировках, собранные часами, в мобильное приложение или в Health Connect . Если для передачи данных используется API уровня данных, используйте клиент сообщений для отправки данных о тренировках из приложения Wear OS в мобильное приложение для записи в Health Connect.

Передавайте данные в реальном времени на мобильное устройство во время домашней тренировки.

Обычный сценарий домашней тренировки — это потоковая передача данных о частоте пульса с устройства Wear OS на мобильное устройство и отображение актуальной информации о частоте пульса пользователя на экране мобильного устройства. Для потоковой передачи этих данных используйте клиент канала .

Медиа-приложения

Чтобы управлять медиаплеером посредством действия паузы/возобновления/запуска/завершения с часов на телефон, используйте клиент сообщений .

Варианты связи

Данные передаются одним из следующих способов:

  1. Непосредственно , когда между устройством Wear OS и другим устройством установлено Bluetooth-соединение.
  2. Через доступную сеть , например LTE или Wi-Fi, используя сетевой узел на серверах Google в качестве посредника.

Все клиенты уровня данных могут обмениваться данными либо через Bluetooth, либо через облако, в зависимости от подключений, доступных устройствам. Предположим, что данные, передаваемые с использованием уровня данных, могут в какой-то момент использовать серверы, принадлежащие Google.

Bluetooth

Когда устройства подключаются с помощью Bluetooth, уровень данных использует это соединение. Между устройствами существует единый зашифрованный канал, использующий стандартное шифрование Bluetooth, управляемый сервисами Google Play.

Облако

Данные автоматически передаются через Google Cloud, когда Bluetooth недоступен. Все данные, передаваемые через Google Cloud, полностью зашифрованы.

Безопасность связи

Сервисы Google Play налагают следующие ограничения для обеспечения более безопасной связи между приложением, установленным на устройстве Wear OS, и тем же приложением, установленным на ближайшем портативном устройстве:

  • Имя пакета должно совпадать на всех устройствах.
  • Подпись пакета должна совпадать на всех устройствах.

Никакие другие приложения не имеют доступа к данным независимо от типа подключения.

Настраивать

API уровня данных носимых устройств имеет следующие зависимости:

Включите следующую зависимость в файл build.gradle вашего модуля Wear:

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

Облегчите первоначальный процесс сопряжения

Horologic предоставляет несколько вспомогательных библиотек поверх API-интерфейсов платформы. Он включает в себя библиотеку уровней данных , которая помогает установить соединение между мобильным устройством и устройством Wear OS. Кроме того, он предоставляет удобные API для выполнения следующих действий:

  • Установите приложение на другое устройство.
  • Запустите приложение на другом устройстве.
  • Запустите определенное действие на другом устройстве.
  • Запустите сопутствующее приложение.

Доступ к уровню данных

Чтобы вызвать API уровня данных, используйте класс Wearable , чтобы получить экземпляры различных клиентских классов, таких как DataClient и MessageClient .

Дополнительные сведения см. в примере DataLayer .

Используйте минимальный клиент

Чтобы создать клиент, см. следующий пример кода:

Котлин

val dataClient: DataClient = Wearable.getDataClient(context)

Джава

DataClient dataClient = Wearable.getDataClient(context);

Контекст может быть любым допустимым контекстом Android. Если вы используете API в рамках Activity , используйте метод getDataClient() класса Wearable . Это позволяет определенным взаимодействиям отображаться в виде диалогов, а не в виде уведомлений, например, когда пользователя просят обновить свою версию сервисов Google Play.

По умолчанию обратные вызовы прослушивателям выполняются в основном потоке пользовательского интерфейса приложения. Чтобы обратные вызовы выполнялись в другом потоке, используйте объект WearableOptions , чтобы указать собственный Looper :

Котлин

runBlocking {
    Wearable.getDataClient(context, options)
}

Джава

WearableOptions options = new WearableOptions.Builder().setLooper(myLooper).build();
DataClient dataClient = Wearable.getDataClient(context, options);

Дополнительные сведения см. в справочнике WearableOptions.Builder .

При необходимости воссоздайте экземпляры клиентов.

Клиенты носимых API, такие как DataClient и MessageClient , не требуют больших затрат. Поэтому вместо того, чтобы удерживать клиентов, воссоздайте их по мере необходимости, используя стиль, который подходит вашему приложению.

Состояние клиента, такое как набор зарегистрированных прослушивателей, используется всеми клиентами и сохраняется, если службы Google Play обновляются во время работы приложения.