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

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

Определите, когда следует использовать функцию Watch Face Push

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

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

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

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

Цель

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

Соображения

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

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

Имена пакетов

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

<app name>.watchfacepush.<watchface name>

... где <app name> — имя пакета приложения, вызывающего API Watch Face Push.

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

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

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

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

Система строго контролирует содержимое APK-файлов. Технически возможно создавать APK-файлы в формате Watch Face, содержащие безвредные файлы метаданных и другие артефакты, которые могут быть приняты в 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")
    
        // Validation success - continue with the token
        // ...
    } else {
        // There were failures, handle them accordingly - validation has failed.
        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-файлы формата циферблатов.
    2. Каждый APK содержит только один циферблат на базе формата Watch Face.
    3. Они проверяются с помощью процесса проверки Watch Face Push и сохраняются вместе с соответствующим токеном проверки.
    4. При необходимости их можно будет извлечь из вашего мобильного приложения.
  2. Мобильное приложение : Мобильное приложение — это основной способ взаимодействия пользователей с вашей системой. Оно позволяет им:
    1. Просмотрите и найдите свой каталог циферблатов
    2. Установить или заменить циферблат на часах
  3. Приложение для часов : приложение для часов обычно не имеет полноценного пользовательского интерфейса. Оно, в первую очередь, является связующим звеном между приложением для телефона и API Watch Face Push и обладает следующими функциональными возможностями:
    1. Использование API Watch Face Push для установки/обновления или замены циферблатов
    2. Запрос необходимых разрешений и приглашение пользователя
    3. Предоставление циферблата по умолчанию
    4. Предоставление минимального набора циферблатов
  4. Связь телефона и часов : взаимодействие телефона и приложения для часов имеет решающее значение для успеха всего процесса. Используйте API Wear OS Data Layer, которые позволяют:
    1. Обнаружение установки : с помощью Capabilities и CapabilityClient приложение на телефоне может обнаружить отсутствие приложения на часах , и наоборот. Затем вы можете запустить Intent в Play Store для установки отсутствующего форм-фактора.
    2. Управление состоянием : с помощью DataClient или MessageClient вы синхронизируете состояние телефона с состоянием часов, например, синхронизируя состояние активного циферблата часов.
    3. Передача APK : используя ChannelClient или MessageClient , отправьте APK с телефона на часы.
    4. Удаленный вызов : с помощью Messageclient телефон может дать часам команду вызвать API Watch Face Push, например, для установки циферблата.

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