Надеть циферблат часов
Примечание: Формат циферблата Watch Face Format необходим для установки циферблатов на устройства с предустановленной Wear OS 5 или более поздней версии, а также для всех новых циферблатов, опубликованных в Google Play.
Начиная с января 2026 года, формат Watch Face Format станет обязательным для установки циферблатов на все устройства Wear OS.
Подробнее об изменениях, затрагивающих пользовательский интерфейс, можно узнать в этой статье Справочного центра .
| Последнее обновление | Стабильный релиз | Предварительная версия для выпуска | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 17 декабря 2025 г. | 1.2.1 | - | 1.3.0-beta01 | - |
Объявление зависимостей
Чтобы добавить зависимость от Wear, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Котлин
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
классный
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Котлин
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Для получения более подробной информации см. документацию по системе отслеживания ошибок .
Версия 1.3
Версия 1.3.0-beta01
17 декабря 2025 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит следующие коммиты .
Новые функции
- Добавлена поддержка статических данных предварительного просмотра виджетов, позволяющая поставщику виджетов указывать статические данные предварительного просмотра в своем манифесте. Подробнее см.
androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser. - В класс
ComplicationTextFormattingдобавлена поддержка максимально краткого форматирования данных и времени, что полезно для виджетов, где пространство ограничено.
Изменения в API
- Ранее экспериментальное свойство
Renderer.watchfaceColorsтеперь является закрытым. Однако для этого свойства по-прежнему существуют публичные методы доступа. ( Ifdf60 , b/409363281 )
Исправлены ошибки
- Для использования проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздняя версия. ( I48968 , b/407632515 )
Версия 1.3.0-alpha07
23 апреля 2025 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha07 . Версия 1.3.0-alpha07 содержит следующие коммиты .
Новые функции
- Возможность задавать схему UserStyle для циферблата часов существует уже некоторое время, а также можно задать
ColorUserStyleSettingв формате XML.
Изменения в API
- Для использования проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздняя версия. ( Idb6b5 )
- Добавлен API Watch Face Push, который позволяет приложению Wear OS программно устанавливать циферблат на часы.
Исправлены ошибки
- Пользователям, использующим версию 1.3.0-alpha06, рекомендуется обновиться, поскольку в следующей версии WearOS исправлена ошибка, приводившая к сбою
ComplicationDataSourceUpdateRequester.
Версия 1.3.0-alpha06
26 марта 2025 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha06 . Версия 1.3.0-alpha06 содержит следующие коммиты .
Новые функции
- API-интерфейсы циферблатов Wear Watchface (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava и watchface-style) устарели в пользу формата Wear Watchface Format и в конечном итоге будут удалены из AndroidX. API-интерфейсы виджетов не устарели и останутся. ( Ice960 )
- Теперь API для виджетов могут напрямую взаимодействовать с
WearSDK, что более эффективно благодаря меньшему количеству межпроцессных соединений.
Версия 1.3.0-alpha05
15 января 2025 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha05 . Версия 1.3.0-alpha05 содержит следующие коммиты .
Новые функции
Обычно циферблаты позволяют пользователю выбирать цвета с помощью ListUserStyle . Хотя это и работает, это влечет за собой отправку значков по Bluetooth в сопутствующий редактор, что неэффективно, поэтому мы ввели ColorUserStyleSetting где полезная нагрузка представляет собой список из одного или нескольких цветов для каждого стиля, что имеет значительно более компактный формат передачи.
Мы добавили функцию, ориентированную на OEM-производителей, которая позволяет поставщикам виджетов добавлять дополнительные элементы в ComplicationData для использования с циферблатами OEM-производителей.
Изменения в API
- Классы
UserStyleSettingиUserStyleOptionтеперь имеют конструкторы, что является рекомендуемым способом их создания. ( Iacd03 ) - Поддержка передачи дополнительных параметров в
ComplicationData. Это предназначено для использования производителями оборудования, которые контролируют как поставщика дополнительных параметров, так и принимающий циферблат. Для установки дополнительного параметра требуется привилегированное разрешениеcom.google.android.wearable.permission.COMPLICATION_EXTRAS. ( I4e3b2 ) - Обычно на циферблатах часов пользователь может выбирать цвета с помощью
ListUserStyle, где для каждогоListOptionотображается значок. Поскольку схемыUserStyleпередаются по Bluetooth, важно минимизировать размер схемы, что может стать проблемой, если предлагается множество вариантов цветов из-за большого количества значков. Чтобы решить эту проблему, мы добавилиColorUserStyleSetting, где параметр содержит список цветов вместо значка, что значительно компактнее. ( Ib542e ) - Для использования
ColorUserStyleSettingиColorOptionтребуется API 34. ( I8771d )
Исправлены ошибки
- В этой библиотеке теперь используются аннотации JSpecify, определяющие наличие нулевого значения , которые относятся к использованию типов. Разработчикам Kotlin следует использовать следующий аргумент компилятора для обеспечения корректного использования:
-Xjspecify-annotations=strict(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). ( Ifd363 , b/326456246 )
Версия 1.3.0-alpha04
18 сентября 2024 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha04 . Версия 1.3.0-alpha04 содержит следующие коммиты .
Новые функции
- Добавлена поддержка отложенной загрузки значков в
UserStyleSettingsиUserStyleOptions, что повышает производительность при загрузке циферблатов. ( Iaf43d ) - Добавлена опция для создания обновленного скриншота при каждом изменении конфигурации системы (например, при изменении локали) с помощью новой функции
Watchface.setUpdateScreenshotOnConfigurationChange. По умолчанию эта настройка отключена. ( I765a1 )
Исправлены ошибки
- Удалено ручное описание доступа к новым API платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или более поздней версии (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или более поздней версии (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется обновиться до D8 версии 8.1 или более поздней. Подробнее см. в этой статье . ( Ia60e0 , b/345472586 )
Версия 1.3.0-alpha03
17 апреля 2024 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha03 . Версия 1.3.0-alpha03 содержит следующие коммиты .
Изменения в API
- Мы добавили
EditorSession#setOverrideComplications, который временно устанавливаетComplicationDataбазового экземпляра циферблата во время редактирования. Если виджеты меняются нечасто, это эффективнее, чем передавать переопределения черезEditorSession#renderWatchFaceToBitmap. ( I19384 )
Исправлены ошибки
- Ранее
selectComplicationDataForInstantвызывалtoApiComplicationDataдля всех временных шкал, что означало, что последующая проверка равенства ссылок === всегда завершалась неудачей. Это означало, что виджеты перезагружались каждый кадр, что приводило к разрядке батареи. ( 717406 )
Версия 1.3.0-alpha02
3 апреля 2024 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha02 . Версия 1.3.0-alpha02 содержит следующие коммиты .
Новые функции
- Теперь мы используем равенство ссылок для сравнения best и
selectedDataпоскольку оператор равенства является ресурсоемким. ( 446b00 )
Изменения в API
- Мы добавили динамический API без резервного варианта для
GoalProgressComplicationData. ( c33264 )
Версия 1.3.0-alpha01
7 февраля 2024 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.3.0-alpha01 . Версия 1.3.0-alpha01 содержит следующие коммиты.
Новые функции
-
WatchFaceServicesможно инициализировать одновременно, поэтому они должны быть без состояния. Для поддержки этого мы добавилиStatefulWatchFaceServiceв котором определяемый пользователем дополнительный объект, созданный с помощьюcreateExtra()передается во все переопределения, вызываемые во время инициализации. -
GlesRenderer2теперь есть перегрузка конструктора, которая позволяет указать список атрибутов для последовательной проверки с помощьюeglChooseConfig.
Изменения в API
- Теперь
StatefulWatchFaceServiceподдерживает переопределение методаgetComplicationSlotInflationFactoryв который передаются определяемые пользователем дополнительные данные, созданные методомcreateExtra(). ( I82d9f ) - Некоторые циферблаты нуждаются в совместном использовании вспомогательных данных, созданных во время
createUserStyleSchema, с другими методами инициализации. Поскольку лучшей альтернативы не было, разработчики обычно делали своиWatchFaceServicesсостоятельными. Это опасно, поскольку можно одновременно создавать несколько экземпляров, что может привести к ошибкам. Для решения этой проблемы мы ввелиStatefulWatchFaceServiceиStatefulWatchFaceRuntimeService, где определяемый пользователем тип создается методомcreateExtra()и передается в различные методы создания в качестве параметра. ( If8a99 ) - Мы добавили
getUserStyleFlavorsвInteractiveWatchFaceClient, что представляет интерес прежде всего для производителей оборудования. ( I0f5d8 ) -
GlesRenderer2теперь есть перегрузка конструктора, которая позволяет указать список атрибутов для последовательной проверки с помощьюeglChooseConfig. Это, например, позволяет сначала попробовать конфигурацию с сглаживанием, а затем, при необходимости, вернуться к конфигурации без него. ( I1ba74 ) - Начиная с Android U, в WearOS будет добавлена поддержка
SystemDataSources.DATA_SOURCE_HEART_RATE. Гарантируется поддержка толькоSHORT_TEXTдля этого виджета, но рекомендуется, чтобыComplicationSlotтакже принималSMALL_IMAGEпоскольку производители могут предпочесть использовать ярлык для своего приложения «Здоровье» вместо текущего значения. ( I34223 ) - Мы добавили
METADATA_KEY_CONFIG_RESTORE_SUPPORTEDкоторый, начиная с Android U, управляет тем, что происходит при восстановлении системы из резервной копии источника данных для виджета сMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION. По умолчанию система предполагает, что служба источника данных виджета поддерживает резервное копирование любых конфигурационных данных, но если это не так, она может добавить параметр метаданныхMETADATA_KEY_DATA_SOURCE_CONFIG_ACTIONв значение false, что пометит слот виджета как не настроенный. ( I6c505 )
Версия 1.2
Версия 1.2.1
24 января 2024 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.1 . Версия 1.2.1 содержит следующие коммиты.
Исправлены ошибки
- Исправлена ошибка, приводившая к сбою на Samsung Galaxy Watch 4, 5 и 6. ( 43f0b0 )
Версия 1.2.0
29 ноября 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0 . Версия 1.2.0 содержит следующие коммиты.
Важные изменения по сравнению с версией 1.1.0
- Мы добавили поддержку новых типов виджетов, доступных для использования начиная с Android T:
-
GoalProgressComplicationDataпохож наRangedValueComplicationDataза исключением того, что он предназначен для отслеживания прогресса в достижении цели, где min по умолчанию равен нулю, а значение может быть большеtargetValue. -
WeightedElementsComplicationData— это массив элементов (пары веса и цвета), а также необязательный текст/заголовок/изображение. Они могут отображаться в виде круговой диаграммы, где цвета должны быть значимыми в контексте, поскольку обычно в описании нет места для отображения подписей.
-
- Мы добавили поддержку необязательных
ColorRangesвRangedValueComplicationData. Обычно виджеты отображаются цветами, выбранными циферблатом, но иногдаComplicationDataSourceлучше использовать для установки цветов, например, когда они имеют определенное семантическое значение. Например, красный — синий для отображения температуры. - Теперь почти все типы
ComplicationDataподдерживаютSmallImages. - Мы добавили
ComplicationDisplayPolicy, в которомDO_NOT_SHOW_WHEN_DEVICE_LOCKEDуказывает совместимому циферблату не отображать виджет, когда устройство заблокировано. - Начиная с Android T, производители устройств смогут определять, исходит ли запрос на добавление виджета от циферблата из списка, определенного метаданными
android.support.wearable.complications.SAFE_WATCH_FACESв манифесте поставщика, с помощьюComplicationRequest#isForSafeWatchFace. Поставщику потребуется разрешениеcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE, чтобы получить что-либо, кроме TargetWatchFaceSafety.UNKNOWN. - Функция
UserStyleFlavorsперестала быть экспериментальной.
Версия 1.2.0-rc01
18 октября 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-rc01 . Версия 1.2.0-rc01 содержит следующие коммиты.
Версия 1.2.0-beta02
6 сентября 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-beta02 . Версия 1.2.0-beta02 содержит следующие коммиты.
Новые функции
-
SuspendingComplicationDataSourceService#onDestroyтеперь открыта. Обратите внимание, что поддержка системного отображения погоды по умолчанию была удалена.
Изменения в API
- Отменить "Предоставить новый источник данных для анализа погодных условий". ( I6f335 )
Версия 1.2.0-beta01
23 августа 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-beta01 . Версия 1.2.0-beta01 содержит следующие коммиты.
Новые функции
- Начиная с Android T, WearOS теперь будет поддерживать стандартное отображение погоды в качестве виджета системы.
Изменения в API
- Добавить резервный вариант системы прогнозирования погоды по умолчанию для сложных ситуаций. ( Ia0994 )
- Этот патч добавляет
WatchFaceRuntimeServiceиWatchFaceControlClient.createWatchFaceRuntimeControlClient, а также обертки Guava. Они добавляют поддержку сред выполнения для циферблатов, которые представляют собой особый тип циферблатов, загружающих свое определение из другого пакета. В настоящее время WearOS поддерживает только среду выполнения для формата циферблатов Android . ( I2799f ) - Этот патч является продолжением aosp/2636578, где мы переименовываем определения целочисленных типов, поэтому любой код, зависящий от
WatchFaceType,CanvasType,TapTypeилиComplicationsSlotBoundsType, не требует изменений. ( I4098b ) - Обновлены API-файлы для аннотирования подавления совместимости. ( I8e87a , b/287516207 )
- Этот патч делает доступными константы
WatchFaceTypeвWatchFaceTypes, константыCanvasTypeвCanvasTypes, константыTapTypeвTapTypesи константыComplicationsSlotBoundsTypeвComplicationsSlotBoundsType. ( I3b85a , b/288750666 ) -
WatchFace.OverlayStyleиспользуется очень редко и плохо поддерживается производителями оборудования, поэтому мы прекращаем её поддержку с намерением удалить её позже. ( I7344a )
Версия 1.2.0-alpha09
21 июня 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha09 . Версия 1.2.0-alpha09 содержит следующие коммиты.
Новые функции
-
RangedValueComplicationData.Builderтеперь принимаетDynamicFloat, а также доступен новый классDynamicComplicationTextв качестве подклассаComplicationText. Оба класса могут использовать динамические выражения, а также привязки к платформе, обновляемые с частотой 1 Гц на поддерживаемых устройствах Wear 4.
Изменения в API
- Добавлены динамические типы для ежедневного расстояния, ежедневного количества калорий и ежедневного количества пройденных этажей. Ключи для источников информации о здоровье платформы теперь находятся в файле
PlatformHealthSources.Keys( Ib7637 ). - Реализуйте
PlatformDataProviderдля предоставления данных о частоте сердечных сокращений и количестве шагов за день. ИнтерфейсSensorGatewayудален из публичного API. ( I55b84 ) - Переименуйте
StateEntryValueвDynamicDataValueи обновите API состояния, чтобы использоватьDynamicDataKey. ( If1c01 ) - Добавить
AppDataKeyдля доступа к состоянию, полученному в результате отправки приложения; добавитьPlatformDataKeyдля доступа к данным платформы; добавить поддержку пространств имен вStateStore. ( I7985e ) - Методы
enable/disablePlatformSourceбыли удалены изDynamicTypeEvaluator. Ответственность за обновления должна лежать на вызывающей стороне. ( I78c6d ) - Разрешить ограничение размера связанных типов данных. ( IE2966 )
Версия 1.2.0-alpha08
19 апреля 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha08 . Версия 1.2.0-alpha08 содержит следующие коммиты.
Новые функции
- Начиная с Android T, поставщики виджетов с привилегированным разрешением
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEмогут регистрировать метаданныеandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, которые переопределяютandroid.support.wearable.complications.SUPPORTED_TYPESдля безопасных циферблатов. Это означает, что поставщик виджетов может выбирать, какие типы данных предоставлять для доверенных и недоверенных циферблатов.
Изменения в API
- Передача аннотации `
@Deprecatedкласса на свойство ( I882d1 , b/271441831 ) - Имя параметра значения для
Enum.valueOfизменилось ( Ia9b89 ) - Дополнительные исключения, выброшенные из enum valueOf ( I818fe )
- Мы заменили
renderWatchFaceToSurfaceнаcreateRemoteWatchFaceView, который построен на основе SurfaceControlViewHost и позволяет вызывающей стороне встраивать представление с циферблата часов, которое отображается, когда клиент вызываетRemoteWatchFaceViewHost#renderWatchFace. ( Ib311d ) - Мы добавили
renderWatchFaceToSurfaceвInteractiveWatchFaceClient,HeadlessWatchFaceClientиEditorSession. Как правило, это обеспечивает более высокую производительность, чем рендеринг в растровое изображение. ( Ieacad ) -
ObservableStateStoreбыл переименован вStateStore. ( Ieb0e2 ) - Добавлен
DynamicTypeEvaluator.Builderвместо аргументов конструктора, что позволяет использовать больше необязательных аргументов, включаяObservableStateStore, который теперь по умолчанию принимает пустое значение. ( I6f832 ) - Изменен порядок параметров в
DynamicTypeEvaluator. ( Ic1ba4 ) - В методы
DynamicTypeEvaluator.bindдобавлен исполнитель. ( I346ab ) - Мы добавили метод
startEvaluationк классуBoundDynamicType, чтобы запускать вычисление после привязки динамического типа. ( I19908 ) - Поставщики виджетов с привилегированным разрешением
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEмогут зарегистрировать метаданныеandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, которые переопределяютandroid.support.wearable.complications.SUPPORTED_TYPESдля безопасных циферблатов. ( Id1c73 ) - Мы переименовали
CustomValueUserStyleSettings2вLargeCustomValueUserStyleSettings. ( Ic17ac )
Исправлены ошибки
-
DynamicTypeValueReceiver#onPreUpdateбыл удален. ( I2dc35 )
Версия 1.2.0-alpha07
22 февраля 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha07 . Версия 1.2.0-alpha07 содержит следующие коммиты.
Новые функции
Начиная с Android T, производители устройств смогут определять, исходит ли запрос на добавление виджета от циферблата из списка, определенного метаданными
android.support.wearable.complications.SAFE_WATCH_FACESв манифесте поставщика, с помощьюComplicationRequest#isForSafeWatchFace. Поставщику потребуется разрешениеcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE, чтобы получить что-либо, кромеTargetWatchFaceSafety.UNKNOWN.Также в Android T доступна функция
CustomValueUserStyleSetting2, которая может вмещать до 12,5 КБ данных. Предыдущий лимит дляCustomValueUserStyleSettingсоставлял 1 КБ. Несмотря на увеличение лимитов размера, разработчикам циферблатов рекомендуется сохранять небольшой объем данных, поскольку настройки передаются по Bluetooth во время редактирования, а пропускная способность Bluetooth ограничена.
Изменения в API
- Мы добавили необязательный параметр
eglContextAttribListвGlesRendererиGlesRenderer2, который позволяет установить значениеEGL14.EGL_CONTEXT_CLIENT_VERSION, передаваемое вEGL14.eglCreateContext. ( I2a83e ) - Мы перенесли библиотеки для создания циферблатов часов в
androidx.core.util.Consumerвместоjava.util.function.Consumer. ( I273f5 ) - Дополнительные исключения, возникающие при доступе к свойствам KT ( Iff9d9 )
- Мы добавили
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported, чтобы клиент мог определить, нужно ли ему эмулировать поддержку старых циферблатов. ( I24c89 ) - Мы решили, что
isForSafeWatchFaceдолжен быть трехсостоятельнымIntDef( Ief2f7 ). - Для Android T мы ввели
ComplicationRequest.isForSafeWatchFace, предназначенный для использования OEM-производителями, и он требует разрешенияcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. Для источников данных в образе системы это вернет true, если запрашиваемый циферблат находится в списке безопасных циферблатов, указанных источником данных в его манифесте. ( I0cbb6 ) - Для Android T мы добавили
CustomValueUserStyleSetting2, который может вмещать до 12,5 КБ. Предыдущий лимит дляCustomValueUserStyleSettingсоставлял 1 КБ. ( I0b100 )
Версия 1.2.0-alpha06
25 января 2023 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha06 . Версия 1.2.0-alpha06 содержит следующие коммиты.
Новые функции
- Работа над добавлением поддержки привязок платформы для виджетов продолжается, пока это не готово к использованию, но следите за обновлениями!
- Мы добавили поддержку XML
ComplicationSlotдля новых типов осложнений: GOAL_PROGRESS и WEIGHTED_ELEMENTS.
Исправлены ошибки
- Исправлена ошибка, из-за которой редактор циферблатов некорректно загружался на устройства Samsung. ( 3b5987 )
- Исправлена ошибка, из-за которой иногда виджеты отображались некорректно при переключении между циферблатами с несколькими избранными. ( b38ece )
- Исправлена ошибка сериализации с perOptionScreenReaderNames, которая приводила к сбоям в работе циферблатов. ( e9f466 )
Версия 1.2.0-alpha05
7 декабря 2022 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha05 . Версия 1.2.0-alpha05 содержит следующие коммиты.
Новые функции
Некоторое время назад мы добавили поддержку иерархических
UserStyleSettings, и начиная с Android T теперь можно иметь более однойComplicationSlotsUserStyleSettingв иерархии. В зависимости от выбранных пользователем настроек стиля будет активна только одна настройка стиляComplicationSlotsUserStyleSetting.Мы улучшаем поддержку программ чтения с экрана для
ListOptionиComplicationSlotsOption, добавляя полеscreenReaderNameОбратите внимание, что до Android T это поле игнорировалось вспомогательными редакторами.
Изменения в API
- Мы добавили новое необязательное поле
screenReaderNameвListOptionиComplicationSlotsOptionдля использования редакторами — оно будет игнорироваться вспомогательными редакторами на устройствах до Android T ( I75326 ). - Начиная с Android T, теперь поддерживается несколько
ComplicationSlotsUserStyleSettingsв иерархии стилей, при условии, что одновременно может быть активен не более одного из них. Мы добавили вспомогательную функциюfindComplicationSlotsOptionForUserStyleвUserStyleSchema, которая поможет найти активныйComplicationSlotsOptionесли таковой имеется. ( Ic2b06 ) -
RangedValuesTypesбыли добавлены в сопутствующий объектRangedValueComplicationDataи переименованы вTYPE_UNDEFINED,TYPE_RATING, а также добавлен новыйTYPE_PERCENTAGE. ( I55d02 ) - Мы переименовали экспериментальный объект
DynamicFloatвFloatExpressionи пометили его как@hide. ( Idf4f1 ) - Добавление аннотации
@JvmDefaultWithCompatibility( I8f206 )
Версия 1.2.0-alpha04
9 ноября 2022 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha04 . Версия 1.2.0-alpha04 содержит следующие коммиты.
Новые функции
- Для Android T мы добавили поддержку двух новых типов виджетов:
GoalProgressComplicationDataиWeightedElementsComplicationData. -
GoalProgressComplicationDataпохож наRangedValueComplicationData, но его значение может выходить за пределы целевого значения (дляRangedValueComplicationDataзначение ограничено диапазоном [мин..макс.]), что имеет последствия для визуального дизайна и может не подойти для всех циферблатов. -
GoalProgressComplicationDataдобавляет поддержку круговых диаграмм и аналогичных детализации простых данных. - Мы добавили опциональную поддержку
ColorRampsдляRangedValueComplicationData. - Для Android T мы добавили
ComplicationPersistencePolicyиsetCachePolicyвComplicationData, что в настоящее время позволяет поставщику контролировать, сохраняется ли оглавление или нет (т.е. кэшируется ли оно после перезагрузки). Большинству оглавлений не потребуется устанавливать управление кэшированием, но это может исправить частные случаи с устаревшими данными для некоторых оглавлений, которые часто обновляются (например, оглавления с данными о здоровье). Мы также добавилиComplicationDisplayPolicyгдеDO_NOT_SHOW_WHEN_DEVICE_LOCKEDуказывает совместимому циферблату не отображать оглавление, когда устройство заблокировано. ( Ic9574 )
Изменения в API
-
GoalProgressComplicationData,WeightedElementsComplicationDataиColorRampбольше не являются экспериментальными. ( Ica9e2 ) -
ComplicationPersistencePolicyиComplicationDisplayPolicyтеперь корректно помечены как T API. ( I31d88 ) - Устаревший конструктор
ComplicationSlotOverlayтеперь имеетDeprecationLevel.WARNING, позволяющий снова вызывать его из Java. ( Ib308c ) - Мы исправили некоторые проблемы совместимости с Java для
ComplicationRequestListener,CanvasComplication,ComplicationTapFilterиInteractiveWatchFaceClient, аннотировав их с помощью@JvmDefaultWithCompatibility( Id94fc ). - Мы удалили экспериментальные
ProtoLayoutComplicationDataиListComplicationData. Описание их предназначения для разработчиков было неясным, мы надеемся вернуться к этому вопросу в будущем. ( I9df05 ) - Мы вернули
ValueTypeвRangedValueComplicationData.WeightedElementsComplicationDataтеперь поддерживает цвет фона. Мы удалилиDiscreteRangedValueComplicationDataпоскольку его функциональность является подмножествомWeightedElementsComplicationData. ( I6446c )
Исправлены ошибки
- Включите
isForScreenShotв код equals и hash. Убедитесь, чтоonRenderParametersChangedполучает корректное значениеisForScreenshot( I04a41 ). - Исправлены утечки памяти
WatchFaceControlServiceиз безголовых клиентов. ( e90e00 )
Версия 1.2.0-alpha03
5 октября 2022 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha03 . Версия 1.2.0-alpha03 содержит следующие коммиты.
Новые функции
- Новых функций нет, но мы исправили несколько ошибок в редакторе циферблатов.
Изменения в API
- Устаревший класс
UserStyleSchema.userStyleSettings, посколькуrootUserStyleSettingsстановятся неэкспериментальными ( IE96E3 ) - Переместить
rootUserStyleSettingsиз экспериментальной папки ( I8d6b3 ) - Мы пометили
WatchFaceColorsкак экспериментальную функцию, поскольку она поддерживается не всеми системами ( I6d75d ). - Добавьте
DisconnectReasonsв публичный API, чтобы он работал сIntDef. ( I791f8 )
Исправлены ошибки
- Закройте все открытые редакторы на часах, если
SysUIзавершает работу. ЕслиSysUIзавершает работу, а редактор циферблата на часах не закрывается, циферблат может остаться в несогласованном состоянии, поскольку система полагается наSysUIдля сохранения любых изменений стиля пользователя. ( ba762a) - Исправлена утечка памяти в
ComplicationDataSourceInfoRetriever, где продолжение сопрограммы Kotlin выступало в качестве корневого элемента сборщика мусора и сохраняло активность редактора. ( 33ee06 )
Версия 1.2.0-alpha02
21 сентября 2022 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит следующие коммиты.
Новые функции
Некоторые циферблаты имеют настройки, не связанные с
UserStyle, которые влияют на их визуальное отображение (например, выбор фонового изображения). Мы добавилиRenderer.sendPreviewImageNeedsUpdateRequest, который позволяет циферблату запрашивать обновленное изображение предварительного просмотра. Обратите внимание, что для работы этой функции требуется соответствующее обновление системы.Мы также добавили API для отображения цветов циферблатов в системе, которая может выбирать цветовую палитру на основе этих данных. Обратите внимание , что эта функция будет экспериментальной и появится в последующем обновлении.
Практически все типы
ComplicationDataтеперь поддерживаютSmallImages.
Изменения в API
- Менеджер обоев иногда может отключаться от движка и создавать другой. Мы добавили целочисленный метод
DisconnectReasonи расширилиClientDisconnectListenerновым методом, который включаетDisconnectReason, позволяя слушателю отслеживать отключения движка. ( I45cce ) - Добавлены два необязательных параметра
nameResourceIdиscreenReaderResourceIdв конструкторComplicationSlotOverlay( I157e8 ). - Мы добавили обертку Guava для новой перегрузки метода
getOrCreateInteractiveWatchFaceClientс обработчикомPreviewImageUpdateRequestedListener. ( Ic31f0 ) - Мы добавили
Renderer.sendPreviewImageNeedsUpdateRequest, что полезно для циферблатов, имеющих состояние внеUserStyleSchema, влияющее на их внешний вид (например, циферблат с выбираемым фоновым изображением). На стороне клиента мы добавилиPreviewImageUpdateRequestedListenerв качестве необязательного параметра дляgetOrCreateInteractiveWatchFaceClient, чтобы отслеживать эти запросы. ( Iff44a ) - Мы упростили API для отображения
WatchFaceColors. Теперь есть простое свойствоwatchFaceColorsв Renderer, которое может устанавливать циферблат часов; его следует обновлять по мере необходимости в ответ на любые изменения стиля. Вместо использованияWallpaperManagerдля отслеживания изменений цвета мы добавилиOnWatchFaceColorsListenerвInteractiveWatchFaceClient. ( I490bc ) - Мы добавили класс
WatchFaceColors, который хранит три наиболее часто используемых цвета циферблата, а также добавили открытые методыwatchfaceColorsиnotifyWatchFaceColorsChangedв класс Renderer, которые позволяют системе получать цвета циферблата черезWallpaperManager.getWallpaperColors. ( I3d611 ) - Теперь
ShortTextComplicationData,RangedValueComplicationData,NoPermissionComplicationData(а также экспериментальныеDiscreteRangedValueComplicationData,GoalProgressComplicationDataиWeightedElementsComplicationData) поддерживаютSmallImages. Если циферблат выбирает отображение виджета с несколькими цветами, теперь у него есть возможность использовать многоцветноеSmallImageтогда как ранее ему приходилось использовать монохромное изображение. ( I257df ) - Преобразовать
PreviewImageUpdateRequestedListenerвConsumer<>( Ia875d ) - Замените пользовательский тип Single Abstract Method (SAM)
OnWatchfaceColorsListenerна универсальный тип Java SAM (Consumer) ( I0c489 ) - Мы объявили устаревшими старые методы
getOrCreateInteractiveWatchFaceClientиlistenableGetOrCreateInteractiveWatchFaceClient, которые не указываютPreviewImageUpdateRequestedListener. ( Iec502 )
Исправлены ошибки
-
DisconnectReason.BINDER_DIEDбыл переименован вDisconnectReason.ENGINE_DIED. ( I4eb0e )
Версия 1.2.0-alpha01
10 августа 2022 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.2.0-alpha01 . Версия 1.2.0-alpha01 содержит следующие коммиты.
Новые функции
- Мы добавили экспериментальную поддержку различных новых форматов виджетов. Эта область находится в стадии активной разработки; эти новые форматы могут быть изменены без предварительного уведомления, и в настоящее время
CanvasComplicationDrawableне поддерживает рендеринг. - Мы также добавили необязательные поля к слотам для виджетов, что упрощает нажатие на небольшие виджеты.
Изменения в API
- Экспериментальный класс
BoundingArcтеперь является неизменяемым. ( If624a ) - Небольшие сложные элементы могут быть сложны для нажатия. Чтобы упростить эту задачу, мы добавили поддержку полей, которые увеличивают область, доступную для нажатия, без влияния на отрисовку. Если не указано иное (в коде или XML), поля
ComplciationSlotsимеют нулевой размер. ( I14089 ) - Изменена сигнатура функции
getComplicationSlotInflationFactory(CurrentUserStyleRepository)для возврата ненулевого экземпляра фабрики. Ранее возврат null приводил к ошибке, поэтому это просто делает контракт API более понятным. ( I0fcc0 ) - Мы добавили аргумент
currentUserStyleRepositoryв методWatchFaceService.getComplicationSlotInflationFactory, чтобы обеспечить согласованность сcreateComplicationSlotsManager. ( I2ddd2 ) - Функция
UserStyleFlavorsперестала быть экспериментальной. ( I69cdc ) - Мы удалили экспериментальный
ValueTypeизRangedValueComplicationDataи вместо него ввели экспериментальныйDiscreteRangedValueComplicationData, который похож наRangedValueComplicationDataза исключением диапазона и значения целых чисел. Мы также ввели экспериментальныйGoalProgressComplicationData, который похож наRangedValueComplicationDataза исключением того, что он предназначен для отслеживания прогресса в достижении цели, где min неявно равен нулю, а значение может быть большеtargetValue. Обратите внимание, что для всех вариантовRangedValueнеобходимо указать хотя бы один из параметров monochromeImage, text или title. ( I9590c ) - Мы удалили
boundsWithMarginsизComplicationSlotState, потому что системное программное обеспечение не имеет для него применения. ( I42e26 ) - Мы добавили экспериментальную поддержку
WeightedElementsComplicationData, которая представляет собой массив элементов (пары веса и цвета) вместе с необязательным текстом/заголовком/изображением. Они могут отображаться в виде круговой диаграммы, где цвета должны быть значимыми в контексте, поскольку обычно в описании нет места для отображения подписей. ( I87eea ) - Экспериментальные
ColorRampsопционально используемыеRangedValueComplicationDataиGoalProgressComplicationDataтеперь позволяют задавать последовательность до семи цветов и флаг, указывающий, должны ли цвета плавно переходить друг в друга или же должны отображаться сплошные цветовые шаги одинакового размера. ( I9f5bf ) -
RangedValueComplicationData.drawSegmentedизменено наvalueTypeкоторое представляет собой целое число с соответствующимValueType IntDef, придающим семантическое значение диапазону и которое может использоваться средством отрисовки виджета для влияния на стиль. ( I0616b ) - Мы добавили экспериментальную поддержку необязательных
ColorRangesвRangedValueComplicationData. Обычно виджеты отображаются цветами, выбранными циферблатом, но иногдаComplicationDataSourceлучше использовать для установки цветов, например, когда они имеют определенное семантическое значение. Например, от красного к синему для температуры. ( I5153a ) - Мы добавили экспериментальную подсказку
drawSegmentedвRangedValueComplicationData. Она указывает рендерерам рисовать индикатор диапазона значений сегментами, где 1 сегмент = 1 единица. ( I7d7c1 )
Исправлены ошибки
- Мы добавили возможность задавать границы
ComplicationSlotBoundsотносительно предопределенной системы координат экрана. ( I0985d )
Версия 1.1
Версия 1.1.1
10 августа 2022 г.
Выпущена версия androidx.wear.watchface:watchface-*:1.1.1 . Версия 1.1.1 содержит следующие коммиты.
- Это релиз с исправлениями ошибок, и пользователям версии 1.1.0 настоятельно рекомендуется обновиться до этой.
Исправлены ошибки
Watch face initialization is asynchronous and if a complication is received before the watch face is ready it gets put on the
pendingInitialComplicationslist and is applied later. UnfortunatelypendingInitialComplicationswas applied too soon which meant there was a window of time during watch face initialization where complications would still get put onpendingInitialComplicationsand be ignored. This has now been fixed. In addition This patch fixes a bug whereComplicationRendererwas wrongly trying to load placeholders asynchronously, which failed leading to the compilation graphic never updating. Finally this patch fixes a hopefully theoretical bug where multiplependingInitialComplicationsneed to be merged. ( 0d03ba3 )Fix potential deadlock in
InteractiveInstanceManagerwheregetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstancewas holding the lock longer than necessary. Usually we'd expectengine.setUserStyleto be quick but if for some reason it's not then we could end up with a deadlock/ANR. This patch moves unnecessary work out of the lock, removing the potential for a deadlock.( 5a2adca )Fix several issues that retained
WatchFaceService. The WakeLock can sometimes retain theWatchFaceService, adding arelease()call fixes this. Also theStateFlowscan retainWatchFaceService, canceling the underlyingCoroutineScopesfixes that.( fd48138 )Add timeouts to
awaitDeferredWatchFace* and fixwatchfaceOverlayStyleNullPointerException. In normal circumstances this shouldn't timeout including after fresh install andDirectBootscenarios where the CPU load is high. We've also fixed a NPE ifgetWatchfaceOverlayStyleis called afterclose().( a4c3a5a )
Версия 1.1.0
15 июня 2022 г.
androidx.wear.watchface:watchface-*:1.1.0 is released. Version 1.1.0 contains these commits.
Important changes since 1.0.0
Improved Editing:
- We added support for hierarchical schemas, which allows a hierarchy of styles to be scribed by editor UIs. You can now specify separate icons for use by on watch face and companion editors.
- There is opt-in support for multiple instances of a watch face, each instance has a unique ID available across all API surfaces.
- You can now specify human readable names for
ComplicationSlotsfor use in editors. - Experimental support for styling “flavors”, a curated selection of styles which will be visible from the companion editor.
- When editing two instances of the watchface are loaded, it's now possible for watchface instances to share resources, saving memory
- When picking a complication in the on watch face editor, the current provider is now preselected.
Improved Complications:
- You can now specify the
ComplicationTypefor the primary and secondary data sources, giving developers more flexibility for the out of box experience. - We added
ComplicationDataTimelinewhich provides a sequence of time-gated data to be delivered to the watch face which can be cached and updated automatically. For example, today's weather forecast at various times or multiple upcoming calendar events. - The
ComponentNameof the complication provider is part of theComplicationData. - Complications are now cached which provides a better experience when switching between watch faces.
Другие изменения:
- The
UserStyleSchemaandComplicationSlotscan now be defined in XML. This simplifies watch face construction and allows for faster metadata queries from the system. - Watch faces can now influence the colors used for rendering the system overlay.
Version 1.1.0-rc01
18 мая 2022 г.
androidx.wear.watchface:watchface-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.
Новые функции
- We've made some usability tweaks to watchface XML support, making it easier to specify
ComplicationSlotBoundsand supporting references. Experimentation with edge complicationBoundingArccontinues, plumbing it through todrawHighlightalthough it's not recommended for use at that time.
Изменения в API
- We've added an experimental overload of
drawHighlightwhich accepts aBoundingArcparameter. ( I705f8 ) - Watch face XML now supports resource references. It lets you use the same constants both in XML and your code. ( I3ef61 )
- We've added the ability to define
ComplicationSlotBoundsincenter_x,center_y,size_x,size_yform. Now it is also possible to use different units (ie dp) using resource references. ( Iace98 )
Исправлены ошибки
- Fix
runBlockingWithTracingwhich was running tasks on the wrong context.( 4f595fe ) - Make
BaseEditorSession.closesynchronous. The problem withBaseEditorSession.closebeing asynchronous is that we release theComplicationDataSourceInfoRetrievertoo late leading to warning spam in logcat. This was probably harmless but logcat spam is distracting and should be avoided.( 35a5308 )
Version 1.1.0-beta02
11 мая 2022 г.
androidx.wear.watchface:watchface-*:1.1.0-beta02 is released. Version 1.1.0-beta02 contains these commits.
Новые функции
- We've added experimental support for new
ComplicationDatatypes, these are not yet ready for use but watch this space.
Изменения в API
- We've added
BoundingArc, an experimental class that describes the geometry of an edge complication slot. This has been added toComplicationSlotand plumbed through toComplicationSlotStateandWatchFaceMetadataClient. ( I61a40 ) - We've added the ability to inherit settings in
UserStyleSettingXML. It lets you reduce verbosity and share a setting between watchfaces. ( Ief841 ) - We have added two new experimental types of
ComplicationData:ListComplicationData&ProtoLayoutComplicationData. Currently there's no rendering support for either of these types and WearOS doesn't currently recognize these types if added to aComplicationDataSource'smanifest. ( I1811c )
Исправлены ошибки
- Fix serialization of
TimeLineEntrytype. We were not serializing theTimeLineEntrytype which meant cachedTimeLineEntriesof type NoData would be incorrectly interpreted as having the parent complication's type leading to NPEs when non-existent required fields were accessed. ( 55ffdf5 ) - Fix a bug where
setComplicationDatadropped timeline fields( fb392f5 ) - Fixes a bug where very occasionally
runBlockingWithTracingwould lead to an NPE( 12ca62e ) - Fixes a bug where we sometimes get
ClassNotFoundException: android.support.wearable.complications.ComplicationTextwhen receiving a complication.( 217942d9 ) - Fixes a bug in
GlesRenderer.backgroundThreadInitInternalwhere it was only callingonBackgroundThreadGlContextCreatedifEGL14.eglCreateContextwas called. Fixes another bug where there was a visual glitch in the screenshot caused byverticalFlip.( c674ad2 ) - Fix
WatchFaceServiceXML version check, it was loading from the wrong package.( dfa06f3 ) - Placeholder wire format now uses an inner bundle. We don't want placeholders to break existing watchfaces which might use the hidden inner aswcComplicationData. Previously the wire format of a
NoDataComplicationdata stored the placeholder in the usual fields (problematic because old watch faces would render the placeholder string which isn't intended), instead we now use an inner bundle to fully isolate this.( d5e7bd2 )
Version 1.1.0-beta01
20 апреля 2022 г.
androidx.wear.watchface:watchface-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.
Изменения в API
- Now
WatchFaceMetadataClientmethods (getUserStyleSchema,getComplicationSlotMetadataMap,getUserStyleFlavors) andHeadlessWatchFaceClient.getUserStyleFlavorsthrow unchecked RuntimeException instead ofWatchFaceException. ( I0718a ) -
WatchFaceMetadataClient.WatchFaceExceptionhas been moved out of the class to allow it to be reused. ( I4e869 )
Исправлены ошибки
-
WatchFaceMetadataClientwill no longer crash when sent partialComplicationSlotBounds.( Iaafd )
Version 1.1.0-alpha05
April 6, 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha05 is released. Version 1.1.0-alpha05 contains these commits.
Новые функции
- You can now tell which data source sent a
ComplicationDataby inspectingComplicationData.dataSource, some watch faces may use this to customize complication display. ( I44a73 )
Изменения в API
-
Renderer.CanvasRendererandRenderer.GlesRendererhave been deprecated in favor ofRenderer.CanvasRenderer2andRenderer.GlesRenderer2which supportSharedAssetswhich are passed to the render methods. For java interop we've introducedListenableCanvasRenderer2andListenableGlesRenderer2. ( I31ffa ) - Added
@WatchFaceFlavorsExperimentalability to define flavors - preconfigured list of styled watchfaces ( I04dd0 ) -
Renderer.sharedAssetsis now a StateFlow and we've removed the unusedRenderer.SharedAssetsFactory( I12ac5 ) -
UserStyleSchema.userStyleSettingsis not deprecated anymore ( Iba7e3 ) - We've added
HeadlessWatchFaceClient.getUserStyleSchemaDigestHashwhich allows aHeadlessWatchFaceClientto avoid the relatively low overhead of passing the schema over AIDL before computing the digest hash. ( I33597 ) - We've added
isUserStyleSchemaStatictoWatchFaceMetadataClientwhich is true if and only if theUserStyleSchemacan be relied on not to change unless the watch face APK is updated. ( I45a3f ) - We have added
getDigestHashtoUserStyleSchemawhich computes a digest hash of the schema. This can be used to efficiently determine if theUserStyleSchemahas changed. ( I2063d ) -
METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTEDrenamed toMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED( I9ba5d ) -
UserStyleSetting.OnWatchEditorDatahas been renamed toUserStyleSetting.WatchFaceEditorData, it contains data that's used purely by the on watch face editor. ( If3afb )
Version 1.1.0-alpha04
March 9, 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.
Изменения в API
- Up to date
ComplicationDatamay not always be available (eg expired cached ComplicationData) so we've extendedNoDataComplicationwith an optional placeholder ComplicationData and addedComplicationText.PLACEHOLDER,MonochromaticImage.PLACEHOLDER,SmallImage.PLACEHOLDER,PhotoImage.PLACEHOLDERwhich are only allowed to be used inside the context of aNoDataComplicationDataplaceholder. If selected these placeholders are suggested to be rendered with gray boxes/arcs. ( I6285d ) - We've added
ComplicationData.getNextChangeInstantwhich tells you the next Instant after the reference Instant at which any field of the complication may change. This is used internally to schedule frames for complication updates. Eg if a watch face normally updates once per minute, setting the stop watch complication will cause it to update once per second. ( I7ceb2 ) -
EditorSession.watchFaceIdcan now be used on all API levels. In addition its value will now always be consistent withWatchState.watchFaceInstanceId. ( I323b9 ) - The
getPendingIntentForTouchEventAPI is no longer necessary since the underlying issue has been fixed in the framework, so all the related APIs have been removed. Watchfaces do not need to do anything special forPendingIntentsto fire, even if the home button has recently been pressed. ( I1f2e8 ) - We've added
RendererParameters.isForScreenShotwhich will be true if the render is for a screen shot. Some watch faces with animations need to know this in order to make adjustments to ensure the best results. ( I96d99 ) - We've added
WatchFaceExceptionReasontoWatchFaceExceptionto give some context to what went wrong. ( I01d15 ) -
ComplicationDataSourceService.onImmediateComplicationRequesthas been removed, insteadComplicationRequest.immediateResponseRequiredhas been added to signal that the provider needs to respond quickly (ideally responding in < 100ms). Note this functionality is guarded behind the privilegedcom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATEpermission. ( Ie6b23 ) - Updated nullability in core and appcompat to match Tiramisu DP2 ( I0cbb7 )
Исправлены ошибки
- Now watchface app crashes with an exception if the schema validation fails ( Ia400f )
Version 1.1.0-alpha03
9 февраля 2022 г.
androidx.wear.watchface:watchface-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.
Изменения в API
- We've added experimental support for hierarchical style schemas. We've added a new property to
androidx.wear.watchface.style.UserStyleSetting.Option, childSettings which is initially only used byListOption. This allows a hierarchy of styles to be described for use by Editor UIs, the underlying UserStyle is unchanged and is still aMap<String, ByteArray>. ( Iaf6f4 ) - We've added
WatchFace.OverlayStylewhich allows the watch face to configure the rendering of the system status overlay. ( I8520d ) - We've introduced
clearWithBackgroundTintBeforeRenderingHighlightLayera new optional constructor parameter forCanvasRenderer(default is false), if set to true then the canvas will be cleared with the background tint color. ( Ie01e5 ) - Added
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTEDmetadata key which allows complication data sources to indicate they can provide a default value without any configuration ( Icc0d4 ) - It's common when editing a watch face for there to be both an interactive and a headless instance. To help save memory we've introduced
Renderer.SharedAssetswhich allows a watch face renderer to share immutable data (eg textures and shaders) between instances.GlesRenderer.setEglConfigandGlesRenderer.setEglDisplayare deprecated, it was never intended for these to be settable, and doing so would have led to undefined behavior. ( I0d9e7 ) - We've added
setNameResourceId&setScreenReaderNameResourceId(which reference string resources) toComplicationSlot.Builderand corresponding getters inandroidx.wear.watchface.client.ComplicationSlotState. This allows the system to fetch the names of ComplicationSlots for use in editors and screen readers. ( If6c6a ) -
WatchfaceMetadataClient.getUserStyleSchemaandgetComplicationSlotMetadataMapnow throwWatchFaceExceptioninstead ofRemoteException. ( I86f11 ) -
onSynchronousComplicationRequestand related functions inComplicationDataSourceServicehave been renamed toonImmediateComplicationRequestetc... ( I87ba0 ) - Watch face editors have much less screen real estate than companion editors, therefore it makes sense to support different icons for on watch face editors. This patch adds
OnWatchEditorData(currently containing just an icon) to all UserStyleSettings and where appropriate their Option classes. ( If1886 ) - We've added
@JvmOverloadsto ListenableGlesRenderer's constructor for better java interop. ( I2974a )
Исправлены ошибки
-
ListenableGlesRenderer's constructor is now correctly marked as@Throws(GlesException::class), and it is now possible to extend this class in java. ( Iac6d0 ) - Fixes bug with
PhotoImageComplicationDatatapAction not being correctly handled ( I1cc30 )
Version 1.1.0-alpha02
12 января 2022 г.
androidx.wear.watchface:watchface-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.
Новые функции
- To aid debugging and testing,
ComplicationDataand related subclasses now have overridden hashcode, equals and toString methods making them easier to work with.
Изменения в API
-
WatchfaceMetadataClientmethods once again throwRemoteExceptionswhere appropriate, making it easier for client code to catch errors from the watch face. ( I78785 ) -
ComplicationDataand sub classes now have hashcode, equals and toString. ( I24bc6 )
Version 1.1.0-alpha01
15 декабря 2021 г.
androidx.wear.watchface:watchface-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.
Новые функции
The
UserStyleSchemaandComplicationSlotscan now be defined in XML. This simplifies watch face construction. In addition,WatchFaceMetadataClientqueries are faster because it doesn't need to bind to the service to get the metadata. TheWatchFaceMetadataClientandListenableWatchFaceMetadataClientare no longer experimental and will become part of the stable api. The system will be able to optionally support multiple instances of a watch face, each with distinct user defined styling options. These will be visible in the watch face picker. To opt into this a watch face must include the following meta data tag in its manifest.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />Some watch faces have state that's not captured in the
UserStyle, to support this and multiple instances, the watch face's instance ID is now available viaWatchState.watchFaceInstanceId.ComplicationDatais now being cached to allow complications to be displayed immediately upon loading. SometimesComplicationDatais cached in memory by the system and sometimes it is serialized by the watch face libraries. When serialized any associated tapAction will be lost, if this happensComplicationData.tapActionLostDueToSerializationwill returntrueand the watch face should render the complication differently (eg grayed out or semi-transparent) to signal that it can't be tapped. The system will send updatedComplicationDatawith atapActionas soon as possible.Some
ComplicationDatashouldn't be cached for a long time, to support this we've added a more general featureComplicationDataTimeline. This can be used to provide a sequence of time-gatedComplicationDatato be delivered to the watch face which can be cached and updated automatically. For example, today's weather forecast at various times or multiple upcoming calendar events.ComplicationRequestListenerhas been extended with a new methodonComplicationDataTimelinewhich you can use to return this data.DefaultComplicationDataSourcePolicyhas been extended so you can specify theComplicationTypefor the primary and secondary data sources.We've added support for synchronous complication providers where the complication is updated at a higher frequency than normal, up to once per second when the watch face is visible and non-ambient. Note: synchronous complication providers may have limited usage due to memory pressure concerns.
The
PendingIntentTapListenerchanges are likely to be reverted because we solved the underlying problem (it's not possible for the watch face to launch activities for 5 seconds after pressing the home button) in the framework instead.
Изменения в API
-
ComplicationData.isCachedhas been changed totapActionLostDueToSerializationwhich is more useful when determining if the complication slot should be rendered differently to signal that it can't be tapped. ( I6de2f ) - Added
ComplicationDataTimelinetowear-complication-data-source. This can be used to provide a sequence of time-gatedComplicationDatato be delivered to the watch face which can be cached and updated automatically. For example, today's weather forecast at various times or multiple upcoming calendar events.ComplicationRequestListenerhas been extended with a new methodonComplicationDataTimelinewhich you can use to return this data. There's a new kotlin wrapperSuspendingTimelineComplicationDataSourceServicefor suspending data source services. ( Idecdc ) - Added
PendingIntentTapListenerandWatchFaceControlClient.getPendingIntentForTouchEvent. This can help watch faces that need to launch intents in response to taps to work around a problem where the framework blocks launching new activities for 5 seconds after pressing the home button. ( I98074 ) - Introduced a per-watchface
ComplicationDatacache. The purpose of this is to allow the watch face to display last known complication data values upon loading until the system has had a chance to update them. There is a new API methodWatchFaceControlClient.hasComplicationCacheintended for OEMs. This may influence the system's strategy for sending complications to a watch face. In addition,ComplicationDatahas anisCachedproperty and it is recommended that cached complications are rendered differently because thetapActioncan not be cached and will benullin a cached complication. ( I404b0 ) - The watch face's instance ID is now available via
WatchState.watchFaceInstanceId. Most watch faces won't need to use this, but if there's a per-watch face state that's not stored in the Schema then this is the key to use to identify the watch face instance. To help support this you can now provide an ID when callingWatchFaceControlClient.createHeadlessWatchFaceClient. ( I1ff98 ) - Extended
DefaultComplicationDataSourcePolicywith the ability to set the defaultComplicationTypesfor the primary, secondary provider and for the fallback system provider.ComplicationSlot.defaultDataSourceTypeis now deprecated. ( If0ce3 ) -
ComplicationSlot.configExtrasis now mutable and can be updated before callingEditorSession.openComplicationDataSourceChooser(). ( I6f852 ) - Added
WatchFace.setComplicationDeniedDialogIntentandsetComplicationRationaleDialogIntent. These intents are launched to to show a rationale dialog before requesting complication permissions, and another dialog explaining that complication permission is needed when trying to edit a complication when permissions have been denied (the provider chooser will fail to open so the dialog is needed). ( I3a29c ) - The
UserStyleSchemaandComplicationSlotscan now be defined in XML. This simplifies watch face construction and makesWatchFaceMetadataClientqueries faster as they do not need to bind to the service to get the metadata. ( I85bfa ) - Added
InteractiveWatchFaceClient.supportsPendingIntentForTouchEventso a client can determine if a watch face supportsgetPendingIntentForTouchEvent. ( I0b917 ) -
WatchFaceMetadataClientandListenableWatchFaceMetadataClientare no longer experimental. They can be used to efficiently obtain watch face metadata, where possible without opening a binder to the watch face. ( Ibb827 ) - Added support for synchronous complication providers where the complication is updated at a higher frequency than normal, up to once per second when the watch face is visible and non-ambient. To use this the provider must include a new
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDSmetadata tag in its manifest and overrideonSynchronousComplicationRequest. Depending on the nature of the data source, it may also need to overrideonStartSynchronousComplicationRequestsandonStopInteractiveComplicationRequeststo get notifications of when the complication enters and exits interactive mode. ( I8fe9d )
Версия 1.0
Версия 1.0.1
9 февраля 2022 г.
androidx.wear.watchface:watchface-*:1.0.1 is released. Version 1.0.1 contains these commits.
Исправлены ошибки
- Fixes bug with
PhotoImageComplicationDatatapAction not being correctly handled ( I1cc30 )
Версия 1.0.0
1 декабря 2021 г.
androidx.wear.watchface:watchface-*:1.0.0 is released. Version 1.0.0 contains these commits.
Major Features of 1.0.0
The androidx.wear.watchface package is the new recommended library for developing WearOS watch faces. It has a number of new features over the old Wearable Support Library.
- User styling (eg to change the color palette, the style of the watch hands, the look of the hour marks etc) is directly supported by the library (see
androidx.wear.watchface.style). It's now much easier to develop an on watch face editor using androidx.wear.watchface.editor and your watch face can be edited from the system companion app without you needing to write any extra code. - Best practices baked in. The library automatically generated screen reader content labels for complications (you can also add your own ones), and the framerate automatically drops when the battery is low and not charging to improve battery life.
- Less code is needed to develop a watch face, especially for complications where a lot of the boilerplate has moved into the library.
Исправлены ошибки
- Fix
EditorSession.userStyle.compareAndSet( I6f676 ) - Fix very short watch face delays ( Iffb97 )
- Dispatch
InteractiveWatchFaceImpl.onDestroyon the UI thread ( I83340 ) - Fix several problems with broadcast receivers ( I7d25f )
Version 1.0.0-rc01
3 ноября 2021 г.
androidx.wear.watchface:watchface-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.
Исправлены ошибки
Fix dump() (called by adb shell dumpsys) which got broken by flow migrations. ( 087cf9e )
Ensure proper ordering of writeDirectBootPrefs. We want writeDirectBootPrefs to always run after initStyleAndComplications or we risk delaying UI thread init.( 37650ac )
Ensure Renderer.onDestroy is called. In the scenario where the renderer has been created but WF init has not completed and Engine.onDestroy is called, we need to call Renderer.onDestroy. ( f9952dc )
Optimization/fix to isBatteryLowAndNotCharging. This patch moves the initial setup of isBatteryLowAndNotCharging earlier which means it can be done in parallel with createWatchFace. In addition we now listen to ACTION_POWER_DISCONNECTED. ( ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive to be false after close ( ab9774e )
Версия 1.0.0-beta01
27 октября 2021 г.
androidx.wear.watchface:watchface-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
Version 1.0.0-alpha24
October 13, 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha24 is released. Version 1.0.0-alpha24 contains these commits.
Изменения в API
- Classes in package
androidx.wear.watchface.complicationshave been moved into a newwear:watchface:watchface-complicationsproject. Note this means you can't include this library as well as any previous alpha version ofwear:watchface:watchface-complications-databecause you'll get errors about duplicate classes. ( I97195 ) - Renderer.dump has been renamed to Renderer.onDump and has been annotated with @UiThread. ( I44845 )
-
InteractiveWatchFaceClient.addWatchFaceReadyListenerhas been renamed toaddOnWatchFaceReadyListenerandremoveWatchFaceReadyListenerhas been renamed toremoveOnWatchFaceReadyListener. ( I48fea ) - EditorSession
getComplicationsPreviewDataandgetComplicationsDataSourceInfoare no longer suspend functions, instead they areStateFlow<>properties whose value is initially null. In ListenableEditorSessiongetListenableComplicationPreviewDataandgetListenableComplicationsProviderInfohave been removed in favor of the newStateFlow<>objects from the base class. If you need to listen to changes in java code, consider usingandroidx.lifecycle.FlowLiveDataConversions.asLiveDatato convert toLiveData<>. ( Ic5483 )
Version 1.0.0-alpha23
29 сентября 2021 г.
androidx.wear.watchface:watchface-*:1.0.0-alpha23 is released. Version 1.0.0-alpha23 contains these commits.
Новые функции
The watchface library is now a single library group, and as a result the libraries have moved and you will need to update your gradle imports as follows:
| Старый | Новый |
|---|---|
androidx.wear:wear-complications-data | androidx.wear.watchface:watchface-complications-data |
androidx.wear:wear-complications-data-source | androidx.wear.watchface:watchface-complications-data-source |
androidx.wear:wear-watchface | androidx.wear.watchface:watchface |
androidx.wear:wear-watchface-complications-rendering | androidx.wear.watchface:watchface-complications-rendering |
androidx.wear:wear-watchface-client | androidx.wear.watchface:watchface-client |
androidx.wear:wear-watchface-client-guava | androidx.wear.watchface:watchface-client-guava |
androidx.wear:wear-watchface-data | androidx.wear.watchface:watchface-data |
androidx.wear:wear-watchface-editor | androidx.wear.watchface:watchface-editor |
androidx.wear:wear-watchface-editor-guava | androidx.wear.watchface:watchface-editor-guava |
androidx.wear:wear-watchface-guava | androidx.wear.watchface:watchface-guava |
androidx.wear:wear-watchface-style | androidx.wear.watchface:watchface-style |
Изменения в API
- Migrate the separate
androidx.wearWatchface and complications libraries intoandroidx.wear.watchfacelibrary group. ( b25f3c0 ) - Added EditorRequest.canWatchFaceSupportHeadlessEditing to let a client know if a watchface editor supports headless editing. Note there will be some false negatives with this because support was added in asop/1756809 however it will return the correct value for all future watchfaces. ( ca55590 )
- Renderer now has a dump() method which can be overridden to add custom data to the information generated by ABD shell dumpsys activity service WatchFaceService. ( 95235f9 )
- InteractiveWatchFaceClient.addWatchFaceReadyListener now specifies the executor first. ( 563ac2f )
- StateFlowCompatHelper has been removed. asLiveData (androidx.lifecycle.asLiveData) should be used instead. ( bd35d3 )
- CurrentUserStyleRepository.userStyle is no longer mutable. ( I44889 )
- WatchFaceReadyListener has been renamed to OnWatchFaceReadyListener. ( Ic12a9 )
Исправлены ошибки
- InteractiveInstanceManager.deleteInstance to call onDestroy This is needed to ensure InteractiveWatchFaceImpl gets garbage collected.( fce4af8 , b/199485839 )