Новости о продуктах

Androidify на Wear OS с Watch Face Push

Время на чтение: 3 минуты
Посмотреть профиль Гарана Дженкинса
Garan Jenkin Developer Relations Engineer

 

 

Несколько месяцев назад мы перезапустили Androidify как приложение для создания персонализированных ботов Android. Androidify превращает ваше селфи в забавного робота Android с помощью Gemini и Imagen.

Однако Android работает на устройствах разных типов, включая недавно добавленные XR. Поэтому мы задумались, как перенести Androidify на Wear OS.

Циферблат Androidify

Поскольку роботы Androidify очень персонализированы, естественным местом для их демонстрации является циферблат. Это не только самый часто видимый, но и самый личный раздел, позволяющий вам показать, кто вы есть.

demonstration.gif

Персонализированный циферблат Androidify, сгенерированный на основе селфи

Теперь в Androidify можно динамически генерировать циферблаты в приложении на телефоне и отправлять их на часы, где они будут автоматически устанавливаться в качестве циферблата. Все это происходит за считанные секунды.

Высокоуровневый дизайн

image.png

Полный процесс создания и установки циферблата

Чтобы обеспечить сквозной процесс, необходимо объединить ряд технологий, как показано на этой схеме высокого уровня.

Сначала аватар пользователя объединяется с существующим шаблоном Watch Face Format, который затем упаковывается в APK. Это подтверждено - по причинам, которые будут объяснены! и отправлены на часы.

Когда часы получают циферблат, новый Watch Face Push API (часть Wear OS 6) устанавливает и активирует его.

Давайте рассмотрим подробности.

Создание шаблонов циферблатов

Циферблат создается на основе шаблона, который разрабатывается в Watch Face Designer. Это наш новый плагин Figma, который позволяет создавать циферблаты в формате Watch Face Format прямо в Figma.

image.png

Шаблон циферблата Androidify в Watch Face Designer

Плагин позволяет экспортировать циферблат разными способами, в том числе в виде ресурсов в формате Watch Face Format (WFF). Затем их можно легко включить в качестве объектов в приложение Androidify, чтобы динамически создавать готовый циферблат.

Упаковка и проверка

После объединения шаблона и аватара Portable Asset Compiler Kit (Pack) собирает APK.

В Androidify Pack используется как нативная библиотека на телефоне. Подробную информацию о том, как Androidify взаимодействует с библиотекой Pack, можно найти в хранилище GitHub.

Перед передачей APK-файл проверяется валидатором Watch Face Push.

Этот валидатор проверяет, подходит ли APK-файл для установки. В частности, мы проверяем, что APK-файл содержит циферблат, и оцениваем производительность. Если запрос действителен, валидатор создает токен.

Этот токен необходим для установки на часы.

Отправка циферблата

Приложение Androidify на Wear OS использует WearableListenerService для прослушивания событий на уровне данных носимого устройства.

Приложение на телефоне передает циферблат, используя MessageClient для настройки процесса и ChannelClient для потоковой передачи APK-файла.

Установка циферблата на часы

Когда циферблат получен на устройстве Wear OS, приложение Androidify использует новый Watch Face Push API, чтобы установить циферблат:

val wfpManager = 

    WatchFacePushManagerFactory.createWatchFacePushManager(context)

val response = wfpManager.listWatchFaces()



try {

    if (response.remainingSlotCount > 0) {

        wfpManager.addWatchFace(apkFd, token)

    } else {

        val slotId = response.installedWatchFaceDetails.first().slotId

        wfpManager.updateWatchFace(slotId, apkFd, token)

    }

} catch (a: WatchFacePushManager.AddWatchFaceException) {

    return WatchFaceInstallError.WATCH_FACE_INSTALL_ERROR

} catch (u: WatchFacePushManager.UpdateWatchFaceException) {

    return WatchFaceInstallError.WATCH_FACE_INSTALL_ERROR

}

Androidify использует метод addWatchFace или updateWatchFace в зависимости от сценария. Watch Face Push определяет концепцию слотов – сколько циферблатов может быть установлено в приложении в любой момент времени. Для Wear OS 6 это значение равно 1.

В Androidify циферблат устанавливается, если есть свободный слот. Если его нет, то новый циферблат заменяет один из существующих.

Установка активного циферблата

Программная установка циферблата – это отличный шаг, но Androidify стремится к тому, чтобы циферблат также был активным. 

Watch Face Push добавляет новое динамическое разрешение, которое необходимо предоставить, чтобы приложения могли выполнять следующие действия:

com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE

После получения разрешения можно вызвать метод wfpManager.setWatchFaceAsActive(), чтобы установить циферблат в качестве активного.

Однако при этом необходимо учитывать ряд факторов:

  • setWatchFaceAsActive можно использовать только один раз.
  • SET_PUSHED_WATCH_FACE_AS_ACTIVE нельзя запросить повторно, если пользователь отклонил запрос.
  • Возможно, Androidify уже управляет активным циферблатом.

Подробнее о том, как в Androidify реализована логика активации…

Начало работы с Watch Face Push для Wear OS

Watch Face Push – это универсальный API, который подходит как для улучшения Androidify, так и для создания полнофункциональных маркетплейсов циферблатов.

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

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

Ознакомьтесь со следующими ресурсами:

Также посмотрите видео, в котором мы подробно рассказываем, как перенесли Androidify на Wear OS.

Нам не терпится увидеть, что вы создадите с помощью Watch Face Push.

Автор:
Продолжить чтение