Watch Face Push

В 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.

Ниже приведены основные варианты использования Watch Face Push API.

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

Назначение

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

Что нужно учесть

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

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

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

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

<app name>.watchfacepush.<watchface name>

…где <app name> – название пакета приложения, вызывающего Watch Face Push 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 был корректным и производительным.

При отправке циферблатов выполняется ряд проверок качества:

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

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

Как запустить валидатор

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

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

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

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

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

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

    Если возникает ошибка, в выходных данных указывается, какая именно проверка не пройдена.

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

  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-alpha10")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator:validator-push-android:1.0.0-alpha10")
    
    
  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-файла

Особенно внимательно следите за размером APK для циферблатов Watch Face Push. Скорее всего, он будет передаваться из приложения на телефоне в приложение для часов по Bluetooth, а это может занять много времени.

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

  • Используйте подходящие библиотеки, например pngquant, чтобы уменьшить размер файлов изображений.
    • Как добавить это в процесс создания коллекции циферблатов
    • Убедитесь, что размеры изображения подходят для масштаба, в котором вы его используете.
    • Обрезайте изображения, чтобы удалить фон.
  • Как уменьшить размер файлов шрифтов
    • Например, если вы используете определенный шрифт только для отображения времени в формате HH:MM, вы можете воспользоваться инструментом, например pyftsubset, чтобы ограничить файл шрифта только необходимыми глифами. Это может значительно уменьшить размер полученного файла шрифта и APK. Подробнее о том, как уменьшить размер файла шрифта…

Чтобы уменьшить размер APK-файла, следуйте рекомендациям по оптимизации использования памяти.

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

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

Архитектура

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

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

Подробную информацию можно найти в руководстве по использованию Data Layer API.