Обзор Data Layer API

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

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

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

Внимание! API уровня данных предназначены для обмена данными между мобильными и носимыми устройствами. Для этой цели можно использовать только их. Например, не пытайтесь открыть сокеты низкого уровня, чтобы создать канал связи.

Примеры использования

Используйте Data Layer API, когда взаимодействие происходит строго между часами и телефоном. Пример:

  • Пульт дистанционного управления. Часы используются как пульт для телефона, например для управления проигрывателем, переключения слайдов в презентации или спуска затвора камеры.
  • Запуск приложения на телефоне. Кнопка "Открыть на телефоне".
  • Передача аутентификации. Отправка токена сеанса с телефона на часы во время первоначальной настройки.

Во многих распространенных сценариях следует использовать существующую облачную инфраструктуру, например:

  • Сохранение данных: тренировки, заметки.
  • Получение контента. Загрузка списка прошлых тренировок, скачивание музыки, получение прогноза погоды.
  • Синхронизация. Если пользователь меняет фото профиля в веб-версии, часы обновляют его через облако, а не запрашивают с телефона.

В таких случаях используйте собственные конечные точки и инфраструктуру, а не Data Layer API.

Способы связи

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

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

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

Bluetooth

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

Cloud

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

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

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

  • Название пакета должно быть одинаковым на всех устройствах.
  • Подпись пакета должна совпадать на всех устройствах.

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

Настроить

Wearable Data Layer API имеет следующие зависимости:

Добавьте в файл build.gradle модуля Wear следующую зависимость:

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

Упрощение процесса первоначального подключения

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

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

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

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

Дополнительную информацию можно найти в примере DataLayer.

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

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

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
}

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

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

Дополнительную информацию вы найдете в справочнике по WearableOptions.Builder.

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

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

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