Несколько месяцев назад мы перезапустили Androidify как приложение для создания персонализированных ботов Android. Androidify превращает ваше селфи в забавного робота Android с помощью Gemini и Imagen.
Однако Android работает на устройствах разных типов, включая недавно добавленные XR. Поэтому мы задумались, как перенести Androidify на Wear OS.
Циферблат Androidify
Поскольку роботы Androidify очень персонализированы, естественным местом для их демонстрации является циферблат. Это не только самый часто видимый, но и самый личный раздел, позволяющий вам показать, кто вы есть.
Персонализированный циферблат Androidify, сгенерированный на основе селфи
Теперь в Androidify можно динамически генерировать циферблаты в приложении на телефоне и отправлять их на часы, где они будут автоматически устанавливаться в качестве циферблата. Все это происходит за считанные секунды.
Высокоуровневый дизайн
Полный процесс создания и установки циферблата
Чтобы обеспечить сквозной процесс, необходимо объединить ряд технологий, как показано на этой схеме высокого уровня.
Сначала аватар пользователя объединяется с существующим шаблоном Watch Face Format, который затем упаковывается в APK. Это подтверждено - по причинам, которые будут объяснены! и отправлены на часы.
Когда часы получают циферблат, новый Watch Face Push API (часть Wear OS 6) устанавливает и активирует его.
Давайте рассмотрим подробности.
Создание шаблонов циферблатов
Циферблат создается на основе шаблона, который разрабатывается в Watch Face Designer. Это наш новый плагин Figma, который позволяет создавать циферблаты в формате Watch Face Format прямо в Figma.
Шаблон циферблата 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, так и для создания полнофункциональных маркетплейсов циферблатов.
Возможно, у вас уже есть приложение для телефонов и вы хотите повысить вовлеченность пользователей.
Или вы уже создаете циферблаты и хотите выпустить приложение для их продажи, чтобы сформировать сообщество и галерею?
Ознакомьтесь со следующими ресурсами:
- Watch Face Push
- Watch Face Format. Также обратите внимание на предстоящие изменения правил, касающиеся публикации циферблатов.
- Watch Face Designer
- Репозиторий Androidify на GitHub
- Страница Androidify в Google Play
Также посмотрите видео, в котором мы подробно рассказываем, как перенесли Androidify на Wear OS.
Нам не терпится увидеть, что вы создадите с помощью Watch Face Push.
-
Новости о продуктахСегодня на Саммите для разработчиков Android мы объявляем о широкой доступности многих инструментов и API, которые помогут вам преодолевать повседневные трудности и дадут больше гибкости при создании отличных приложений для Android.
Matthew McCullough • Время на чтение: 4 минуты -
Новости о продуктахAndroid Studio Rabbit 2 теперь стабильна и готова к использованию в рабочей среде. В этом выпуске представлены ключевые функции, которые помогут вам в разработке, например Bring Your Own Agent, новые функции XR Emulator, обновление LeakCanary, новый инструмент управления навыками агента, код-ревью с помощью ИИ и многое другое.
Matthew Warner • Время на чтение: 3 минуты -
Новости о продуктахПриложения, предназначенные для предстоящего выпуска Android, больше не смогут напрямую записывать данные в контакты с помощью разрешения WRITE_CONTACTS.
Roxanna Aliabadi Walker • Время на чтение: 6 минут
Получайте еженедельную рассылку с последними новостями о разработке для Android.