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

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-файлов формата циферблата, содержащих безвредные файлы метаданных и другие артефакты, которые могут быть приняты в 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, проверка Watch Face Push на предмет правильности оформления и производительности каждого циферблата является обязанностью приложения Marketplace.

Google Play использует следующие проверки для проверки качества каждого циферблата, использующего 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-alpha06.jar \
        --apk_path=<your watch face>.apk \
        --package_name=<your marketplace package name>
    

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

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

Использование библиотечного валидатора

  1. Включите репозиторий 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:1.0.0-alpha06")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator-android:1.0.0-alpha06")
    
    
  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-файлов формата Watch Face
    2. Каждый из них содержит только один циферблат на основе формата 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 , приложение для телефона может обнаружить отсутствие приложения для часов и наоборот. После этого можно запустить намерение в Play Store для установки отсутствующего форм-фактора.
    2. Управление состоянием : с помощью DataClient или MessageClient можно синхронизировать телефон с состоянием часов, например, гарантируя, что телефон знает, какой циферблат установлен.
    3. Передача APK : с помощью ChannelClient или MessageClient можно отправлять APK с телефона на часы.
    4. Удаленный вызов : с помощью Messageclient телефон может дать часам команду вызвать API Watch Face Push, например, для установки циферблата.

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