Создайте службу циферблата

Циферблат — это услуга , включенная в приложение Wear OS . Когда пользователь выбирает доступный циферблат, он отображается и вызываются методы обратного вызова службы.

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

На этой странице описано, как настроить проект Wear OS для включения циферблатов и как реализовать службу циферблата.

Создание проекта циферблата

Примечание. Мы рекомендуем использовать Android Studio для разработки Wear OS, поскольку она обеспечивает настройку проекта, включение библиотек и удобство упаковки.

Выполните следующие шаги, чтобы создать проект в Android Studio для циферблата:

  1. Нажмите Файл > Создать > Новый проект .
  2. В окне «Выбор шаблона проекта» выберите вкладку «Износ» , затем выберите «Циферблат» из списка параметров и нажмите «Далее» .
  3. В окне «Настройка проекта» примите значения по умолчанию и нажмите « Готово» .

Android Studio создает проект с модулем app для службы циферблата.

Зависимости

Android Studio автоматически добавляет необходимые зависимости в ваши файлы build.gradle . В зависимости включена библиотека циферблатов AndroidX ; дополнительные сведения об этой библиотеке см. в примере кода на GitHub.

Справочник по API библиотеки поддержки носимых устройств

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

Объявить разрешения

Для циферблата требуется разрешение WAKE_LOCK . Добавьте следующее разрешение в файлы манифеста приложения Wear OS и приложения для мобильного телефона в элементе manifest :

<manifest ...>
    <uses-permission
        android:name="android.permission.WAKE_LOCK" />

    <!-- Required for complications to receive complication data and open the provider chooser. -->
    <uses-permission
        android:name="com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA"/>
    ...
</manifest>

Поддержка прямой загрузки

Перед разблокировкой пользователем необходимо сделать циферблат доступным, следуя инструкциям по прямой загрузке :

  1. Установите для атрибута android:directBootAware значение true для вашей службы в манифесте.
  2. Ваш циферблат должен хранить информацию в зашифрованном хранилище устройства .

Реализация службы и методов обратного вызова

Циферблаты в Wear OS реализованы как WatchFaceService . Для реализации WatchFaceService необходимо создать три объекта: UserStyleSchema , ComplicationSlotsManager и WatchFace .

Эти три объекта определяются путем переопределения трех абстрактных методов из WatchFaceService , как показано в следующем примере:

Котлин

class CustomWatchFaceService : WatchFaceService() {

    /**
     * The specification of settings the watch face supports.
     * This is similar to a database schema.
     */
    override fun createUserStyleSchema(): UserStyleSchema = // ...

    /**
     * The complication slot configuration for the watchface.
     */
    override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager = // ...

    /**
     * The watch face itself, which includes the renderer for drawing.
     */
    override suspend fun createWatchFace(
        surfaceHolder: SurfaceHolder,
        watchState: WatchState,
        complicationSlotsManager: ComplicationSlotsManager,
        currentUserStyleRepository: CurrentUserStyleRepository
    ): WatchFace = // ...

}

Зарегистрируйте службу циферблата

После реализации службы циферблата зарегистрируйте реализацию в файле манифеста носимого приложения. Когда пользователи устанавливают это приложение, система использует информацию об услуге, чтобы сделать циферблат доступным в сопутствующем приложении Wear OS и в средстве выбора циферблата на носимом устройстве.

В следующем примере показано, как зарегистрировать реализацию циферблата в элементе <application> :

<service
    android:name=".AnalogWatchFaceService"
    android:label="@string/analog_name"
    android:permission="android.permission.BIND_WALLPAPER" >
    <meta-data
        android:name="android.service.wallpaper"
        android:resource="@xml/watch_face" />
    <meta-data
        android:name="com.google.android.wearable.watchface.preview_circular"
        android:resource="@drawable/preview_analog_circular" />
    <intent-filter>
        <action android:name="android.service.wallpaper.WallpaperService" />
        <category
            android:name=
            "com.google.android.wearable.watchface.category.WATCH_FACE" />
    </intent-filter>
</service>

Приложение-компаньон Wear OS by Google и средство выбора циферблата на носимом устройстве используют изображение предварительного просмотра, определенное записью метаданных com.google.android.wearable.watchface.preview_circular , когда представляют пользователям все циферблаты, установленные на устройстве. Чтобы получить этот рисунок, запустите циферблат на своем устройстве Wear OS или в экземпляре эмулятора и сделайте снимок экрана . На устройствах Wear с экранами HDPI изображение предварительного просмотра обычно имеет размер 320x320 пикселей.

Запись метаданных android.service.wallpaper указывает файл ресурсов watch_face.xml , который содержит элемент wallpaper , как показано в следующем примере:

<?xml version="1.0" encoding="UTF-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />

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

Обратитесь к следующим соответствующим ресурсам: