Нажмите на циферблат часов

Wear OS 6 представляет новый API, Watch Face Push, который открывает возможности для более сложных сценариев публикации циферблатов.

Определите, когда использовать функцию «Нажатие на циферблат».

Watch Face Push — это API в Wear OS, который позволяет разработчику добавлять, обновлять или удалять циферблаты напрямую. Он не требуется для стандартной разработки циферблатов.

Циферблаты, используемые с Watch Face Push, должны быть созданы с использованием формата Watch Face Format. Это может включать циферблаты, разработанные с помощью Watch Face Designer, Watch Face Studio или любого другого инструмента, создающего циферблаты, использующие формат Watch Face Format.

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

Вариант использования Рекомендуемое решение Сложность
Я хочу создавать индивидуальные циферблаты для часов и публиковать их. Используйте Watch Face Format, напрямую или через такие инструменты, как Watch Face Designer или Watch Face Studio, и опубликуйте их в Google Play. Низкий
Я хочу создать мобильное приложение, которое позволит пользователям выбирать циферблаты из специально подобранной коллекции или создавать и настраивать циферблаты для установки непосредственно на свои часы Wear OS. Создайте приложение для часов и телефона, используя API Watch Face Push на часах. Высокий

Цель

Основной сценарий использования API Watch Face Push — создание приложения -маркетплейса . С помощью этого приложения пользователи могут выбирать циферблаты из тщательно подобранной коллекции на своем телефоне и напрямую управлять установкой этих циферблатов на подключенные часы.

Соображения

Подробную информацию о создании циферблатов см. в руководстве по формату циферблатов : циферблаты, используемые с помощью Watch Face Push, являются обычными циферблатами формата Watch Face Format.

При создании циферблата часов учитывайте следующие моменты.

Названия пакетов

Циферблаты, установленные с помощью функции Watch Face Push, должны соответствовать следующему соглашению:

<app name>.watchfacepush.<watchface name>

... где <app name> — это имя пакета приложения, вызывающего API для отправки уведомлений о состоянии циферблата.

Например, для приложения с именем пакета com.example.mymarketplace допустимыми именами пакетов для циферблатов являются следующие:

  • com.example.mymarketplace.watchfacepush.watchface1
  • com.example.mymarketplace.watchfacepush.watchface2
  • com.example.mymarketplace.watchfacepush.another_watchface

API отклоняет циферблаты, не соответствующие этому соглашению.

Содержимое упаковки

Система строго контролирует содержимое APK-файлов. Технически возможно создавать APK-файлы в формате Watch Face Format, содержащие безобидные файлы метаданных и другие артефакты, которые могут быть приемлемы для Google Play, но не проходят проверку Watch Face Push (см. ниже).

Каждый APK-файл циферблата должен содержать только следующие файлы/пути:

  • /AndroidManifest.xml
  • /resources.arsc
  • /res/**
  • /META-INF/**

Кроме того, файл AndroidManifest.xml должен содержать только следующие теги:

  • <manifest>
  • <uses-feature>
  • <uses-sdk>
  • <application>
  • <property>
  • <meta-data>

Наконец, в пакете должно быть указано значение minSdk не менее 33 , а тег <application> должен содержать атрибут android:hasCode="false" .

Проверка

В отличие от обычных циферблатов, распространяемых через Google Play, приложение Marketplace отвечает за проверку корректности и производительности каждого циферблата Watch Face Push.

Для проверки качества каждого циферблата Watch Face Push использует следующие методы валидации:

  1. Все циферблаты, установленные или обновленные через API Watch Face Push, должны пройти проверку инструментом Watch Face Push.
  2. Для генерации токенов валидации , используемых с API, используйте только официальный инструмент валидации.
  3. Инструмент проверки должен быть обновлен до последней версии на момент запуска проверки.
  4. Нет необходимости повторно проверять APK-файл, который не изменился. Токены не истекают, даже если версия используемого инструмента проверки устарела.

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

Запустите валидатор

Валидатор доступен в трех формах:

  • Инструмент командной строки
  • Библиотека для использования с JVM
  • Библиотека для использования на Android.

Использование валидатора командной строки

  1. Получите валидатор из репозитория Maven компании Google.
  2. Запустите инструмент следующим образом:

    java -jar validator-push-cli-1.0.0-alpha07.jar \
        --apk_path=<your watch face>.apk \
        --package_name=<your marketplace package name>
    

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

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

использование валидатора библиотеки

  1. Включите репозитории Google и Jitpack. Оба необходимы для использования библиотеки валидатора.

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. Добавьте зависимость валидатора в свой проект:

    // For use on JVM
    implementation("com.google.android.wearable.watchface.validator:validator-push:1.0.0-alpha07")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator:validator-push-android:1.0.0-alpha07")
    
    
  3. Запустите валидатор:

val validator = DwfValidatorFactory.create() val result = validator.validate(watchFaceFile, appPackageName) if (result.failures().isEmpty()) { val token = result.validationToken() println("Validation token: $token") // Проверка прошла успешно - продолжаем с токеном // ... } else { // Были ошибки, обрабатываем их соответствующим образом - проверка не удалась. result.failures().forEach { failure -> println("FAILURE: ${failure.name()}: ${failure.failureMessage()}") // ... } }

Пример использования этой библиотеки можно найти в примере на GitHub . Также см. библиотеку Portable Asset Compiler Kit (Pack) , которая полезна для сборки APK-файлов на устройстве и используется с валидатором на базе Android.

размер APK

Будьте особенно осторожны с циферблатами Watch Face Push, чтобы минимизировать размер APK-файла: APK-файл циферблата, скорее всего, будет передаваться из мобильного приложения в приложение для часов по Bluetooth, что может быть медленно.

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

  • Используйте подходящие библиотеки, такие как pngquant , чтобы свести к минимуму размер файлов изображений.
    • Включите это в процесс создания коллекции циферблатов для ваших часов.
    • Убедитесь, что размеры изображения соответствуют масштабу, в котором вы его используете.
    • Кадрирование изображений целесообразно для удаления окружающего фона.
  • Уменьшите размер файлов шрифтов.

Дополнительные рекомендации по минимизации размера APK-файла см. в разделе «Оптимизация использования памяти» .

Подписание APK-файлов

Как и в случае с обычным APK-файлом, вам необходимо подписать все циферблаты. Создайте отдельный ключ, отличный от ключа, используемого в основном приложении, и используйте этот ключ для всех циферблатов.

Архитектура

Рассмотрим четыре основных компонента системы:

  1. Облачное хранилище : В классическом приложении Marketplace вы создаете и храните свои циферблаты в облаке, готовые к использованию пользователями. Циферблаты обладают следующими свойствами:
    1. Они предварительно собраны в виде обычных APK-файлов в формате Watch Face Format.
    2. Каждый APK-файл содержит только один циферблат, основанный на формате Watch Face Format.
    3. Они проходят проверку в процессе подтверждения подлинности Watch Face Push и сохраняются вместе с соответствующим токеном подтверждения.
    4. Ваше мобильное приложение может получать их по мере необходимости.
  2. Мобильное приложение : Мобильное приложение — это основной способ взаимодействия пользователей с вашей системой. Оно позволяет им:
    1. Просматривайте и ищите циферблаты в своем каталоге.
    2. Установить или заменить циферблат на часах
  3. Приложение для Apple Watch : Обычно приложение для Apple Watch не имеет выраженного пользовательского интерфейса. В первую очередь оно служит связующим звеном между мобильным приложением и API для отправки уведомлений о состоянии циферблата, обладая следующими функциями:
    1. Используйте API Watch Face Push для установки/обновления или замены циферблатов.
    2. Запрос необходимых разрешений и отображение уведомления для пользователя.
    3. Предоставление циферблата по умолчанию
    4. Предоставление минимального количества циферблатов.
  4. Взаимодействие телефона и часов : связь между телефоном и приложением на часах имеет решающее значение для успешного функционирования всего устройства. Используйте API уровня данных Wear OS, которые позволяют:
    1. Обнаружение установки : Используя Capabilities и CapabilityClient , мобильное приложение может обнаружить отсутствие приложения для часов , и наоборот. Затем вы можете отправить Intent в Play Store для установки отсутствующего приложения для вашего форм-фактора.
    2. Управление состоянием : Используя DataClient или MessageClient , вы поддерживаете синхронизацию телефона с состоянием часов, например, синхронизируете состояние активного циферблата.
    3. Передача APK-файлов : используя ChannelClient или MessageClient , отправляйте APK-файлы с телефона на часы.
    4. Удаленный вызов : Используя Messageclient , телефон может дать указание часам вызвать API Watch Face Push, например, для установки циферблата.

Для получения более подробной информации обратитесь к руководству по API уровня данных .