Носить циферблат
Примечание: Формат циферблата необходим для установки циферблатов на устройства с предустановленной Wear OS 5 или более поздней версии, а также для всех новых циферблатов, публикуемых в Google Play.
Начиная с января 2026 года для установки циферблатов на все устройства Wear OS потребуется формат Watch Face Format.
Подробнее об изменениях, с которыми столкнутся пользователи, можно узнать в этой статье Справочного центра .
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-релиз | Альфа-релиз | 
|---|---|---|---|---|
| 23 апреля 2025 г. | 1.2.1 | - | - | 1.3.0-альфа07 | 
Объявление зависимостей
Чтобы добавить зависимость от 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 лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Более подробную информацию смотрите в документации Issue Tracker .
Версия 1.3
Версия 1.3.0-альфа07
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, рекомендуется выполнить обновление, поскольку ошибка сбоя 
ComplicationDataSourceUpdateRequesterв следующей версии WearOS была исправлена. 
Версия 1.3.0-альфа06
26 марта 2025 г.
 Выпущен androidx.wear.watchface:watchface-*:1.3.0-alpha06 . Версия 1.3.0-alpha06 содержит эти коммиты .
Новые возможности
- API циферблатов Wear (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava и watchface-style) были упразднены в пользу формата Wear Watchface и в конечном итоге будут удалены из AndroidX. API complication не устарели и останутся. ( Ice960 )
 -  API-интерфейсы дополнений теперь могут напрямую взаимодействовать с 
WearSDK, что повышает эффективность за счет меньшего количества межпроцессных соединений. 
Версия 1.3.0-альфа05
15 января 2025 г.
 Выпущен androidx.wear.watchface:watchface-*:1.3.0-alpha05 . Версия 1.3.0-alpha05 содержит эти коммиты .
Новые возможности
 Обычно циферблаты позволяют пользователю выбирать цвета с помощью ListUserStyle . Хотя это работает, это влечет за собой отправку значков по Bluetooth в сопутствующий редактор, что неэффективно, поэтому мы ввели ColorUserStyleSetting , где полезная нагрузка представляет собой список из одного или нескольких цветов на стиль, который имеет значительно более компактный формат провода.
Мы добавили функцию OEM-циферблата, которая позволяет поставщикам OEM-усложнений добавлять дополнения в ComplicationData для использования в OEM-циферблатах часов.
Изменения API
-  Классы 
UserStyleSettingиUserStyleOptionтеперь имеют конструкторы, что является рекомендуемым способом их создания. ( Iacd03 ) -  Поддержка передачи дополнений в 
ComplicationData. Это предназначено для использования OEM-производителями, где они контролируют как поставщика дополнений, так и принимающий циферблат. Для установки дополнений требуется привилегированное разрешениеcom.google.android.wearable.permission.COMPLICATION_EXTRAS. ( I4e3b2 ) -  Циферблаты обычно позволяют пользователю выбирать цвета с помощью 
ListUserStyle, со значком для каждогоListOption. Поскольку схемыUserStyleотправляются по Bluetooth, важно сохранить небольшой размер схемы, что может стать проблемой, если из-за всех этих значков задано много десятков вариантов цвета. Чтобы помочь с этим, мы добавилиColorUserStyleSetting, где опция содержит список цветов вместо значка, что гораздо компактнее. ( Ib542e ) -  Для использования 
ColorUserStyleSettingиColorOptionтребуется API 34. ( I8771d ) 
Исправление ошибок
-  Эта библиотека теперь использует аннотации nullness JSpecify , которые являются type-use. Разработчики Kotlin должны использовать следующий аргумент компилятора для обеспечения правильного использования: 
-Xjspecify-annotations=strict(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). ( Ifd363 , b/326456246 ) 
Версия 1.3.0-альфа04
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-альфа03
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-альфа02
3 апреля 2024 г.
 Выпущен androidx.wear.watchface:watchface-*:1.3.0-alpha02 . Версия 1.3.0-alpha02 содержит эти коммиты .
Новые возможности
-  Теперь мы используем ссылочное равенство для сравнения best и 
selectedData, поскольку оператор equals является затратным. ( 446b00 ) 
Изменения API
-  Мы добавили динамический API без отката для 
GoalProgressComplicationData. ( c33264 ) 
Версия 1.3.0-альфа01
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()и передается различным методам create в качестве параметра. ( If8a99 ) -  Мы добавили 
getUserStyleFlavorsвInteractiveWatchFaceClient, что представляет интерес в первую очередь для OEM-производителей. ( I0f5d8 ) -  
GlesRenderer2теперь имеет перегрузку конструктора, которая позволяет вам указать список атрибутов для проверки по очереди с помощьюeglChooseConfig. Это, например, позволяет вам сначала попробовать конфигурацию со сглаживанием и вернуться к конфигурации без него, если это необходимо. ( I1ba74 ) -  Начиная с Android U, поддержка 
SystemDataSources.DATA_SOURCE_HEART_RATEбудет добавлена в WearOS. Это усложнение гарантированно поддерживает только усложненияSHORT_TEXT, но рекомендуется, чтобыComplicationSlotпринимал такжеSMALL_IMAGE, поскольку OEM-производители могут выбрать предоставление ярлыка для своего приложения для здоровья вместо текущего значения. ( 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, который состоит из массива Elements (пар веса и цвета) вместе с необязательным текстом/заголовком/изображением. Они могут отображаться в виде круговой диаграммы, где цвета должны быть осмысленными с учетом контекста, поскольку в усложнении обычно нет места для отображения меток. 
 -  
 -  Мы добавили поддержку необязательных 
ColorRangesвRangedValueComplicationData. Обычно усложнения отображаются в цветах, выбранных циферблатом, но иногдаComplicationDataSourceлучше всего подходит для установки цветов, например, когда они имеют определенное семантическое значение. Например, от красного к синему для температуры. -  Почти каждый тип 
ComplicationDataтеперь поддерживаетSmallImages. -  Мы добавили 
ComplicationDisplayPolicy, гдеDO_NOT_SHOW_WHEN_DEVICE_LOCKEDпредписывает совместимому циферблату не отображать расширение, когда устройство заблокировано. -  Начиная с Android T, OEM-производители смогут определить, исходит ли запрос на усложнение от циферблата из списка, определенного метаданными 
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 Watch Face . ( I2799f ) -  Этот патч является продолжением aosp/2636578 , в котором мы переименовываем int defs, поэтому любой код, зависящий от 
WatchFaceType,CanvasType,TapTypeилиComplicationsSlotBoundsTypeне требует изменений. ( I4098b ) - Обновлены файлы API для аннотации подавления совместимости. ( I8e87a , b/287516207 )
 -  Этот патч раскрывает константы 
WatchFaceTypeвWatchFaceTypes, константыCanvasTypeвCanvasTypes, константыTapTypeвTapTypesи константыComplicationsSlotBoundsTypeвComplicationsSlotBoundsType. ( I3b85a , b/288750666 ) -  
WatchFace.OverlayStyleиспользуется очень редко и не поддерживается OEM-производителями, поэтому мы отказываемся от него и собираемся удалить его позже. ( I7344a ) 
Версия 1.2.0-альфа09
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-альфа08
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 ) -  Executor был добавлен в методы 
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-альфа07
22 февраля 2023 г.
 Выпущен androidx.wear.watchface:watchface-*:1.2.0-alpha07 . Версия 1.2.0-alpha07 содержит эти коммиты.
Новые возможности
Начиная с Android T, OEM-производители смогут определить, исходит ли запрос на усложнение от циферблата из списка, определенного метаданными
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-альфа06
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-альфа05
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-альфа04
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 и хэш-код. Убедитесь, чтоonRenderParametersChangedполучает правильное значениеisForScreenshot( I04a41 ) -  Исправлены утечки 
WatchFaceControlServiceиз headless-клиентов. ( e90e00 ) 
Версия 1.2.0-альфа03
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 действовало как корень gc и сохраняло активность редактора. ( 33ee06 ) 
Версия 1.2.0-альфа02
21 сентября 2022 г.
 Выпущен androidx.wear.watchface:watchface-*:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит эти коммиты.
Новые возможности
Некоторые циферблаты имеют конфигурацию вне
UserStyle, которая влияет на них визуально (например, выбор фонового фото). Мы добавилиRenderer.sendPreviewImageNeedsUpdateRequest, который позволяет циферблату запрашивать обновленное изображение предварительного просмотра. Обратите внимание, что для работы требуется соответствующее обновление системы.Мы также добавили API для циферблатов, чтобы предоставить их цвета системе, которая может выбрать свою цветовую палитру на основе этого. Обратите внимание , что это было сделано экспериментально в следующем патче.
Почти каждый тип
ComplicationDataтеперь поддерживаетSmallImages.
Изменения API
-  Менеджер обоев иногда может отсоединиться от движка и сделать другой. Мы добавили 
DisconnectReasonint def и расширили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-альфа01
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, которая состоит из массива Elements (пар веса и цвета) вместе с необязательным текстом/заголовком/изображением. Они могут отображаться в виде круговой диаграммы, где цвета должны быть осмысленными с учетом контекста, поскольку в усложнении обычно нет места для отображения меток. ( I87eea ) -  Экспериментальные 
ColorRampsопционально используемыеRangedValueComplicationDataиGoalProgressComplicationDataтеперь позволяют вам указать последовательность из семи цветов и флаг, указывающий, должны ли цвета плавно меняться или должны отображаться сплошные шаги цвета одинакового размера. ( I9f5bf ) -  
RangedValueComplicationData.drawSegmentedбыл изменен наvalueType, который представляет собой int с соответствующим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 настоятельно рекомендуется выполнить обновление.
 
Исправление ошибок
Смотреть инициализацию лица асинхронно, и если осложнение получено до того, как лицо будет готово, оно будет помещено в список
pendingInitialComplicationsи применяется позже. К сожалению, применялись применениеpendingInitialComplicationsслишком рано, что означало, что во время инициализации лица с инициализацией часов было время, где осложнения все еще будут подвергатьсяpendingInitialComplicationsи игнорируются. Это было исправлено. Кроме того, этот патч исправляет ошибку, в которойComplicationRendererне ошибался, пытаясь загрузить заполнители асинхронно, что не удалось, что привело к тому, что компиляционная графика никогда не обновляется. Наконец, этот патч исправит надежду теоретической ошибкой, в которой необходимо объединить множественныеpendingInitialComplications. ( 0d03ba3 )Исправить потенциальный тупик в
InteractiveInstanceManager, гдеgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstanceдержал замок дольше, чем необходимо. Обычно мы ожидаем, чтоengine.setUserStyleбудет быстрым, но если по какой -то причине это не так, то мы могли бы получить тупик/ANR. Этот патч выходит из замка ненужной работы, удаляя потенциал для тупика. ( 5A2ADCA )Исправьте несколько проблем, которые сохранили
WatchFaceService. Wakelock иногда может сохранитьWatchFaceService, добавляя это исправлениеrelease(). Кроме того,StateFlowsмогут сохранитьWatchFaceService, отменив базовыеCoroutineScopesкоторые исправляют это. ( FD48138 )Добавьте тайм -ауты, чтобы
awaitDeferredWatchFace* и исправитьwatchfaceOverlayStyleNullPointerException. В обычных обстоятельствах это не должно тайм -аут, в том числе после свежей установки и сценариевDirectBoot, где загрузка процессора высока. Мы также исправили NPE, еслиgetWatchfaceOverlayStyleназывается послеclose(). ( A4C3A5A )
Версия 1.1.0
15 июня 2022 года
 androidx.wear.watchface:watchface-*:1.1.0 выпускается. Версия 1.1.0 содержит эти коммиты.
Важные изменения с 1.0.0
Улучшено редактирование:
- Мы добавили поддержку иерархических схем, которые позволяют писать иерархию стилей редактором UIS. Теперь вы можете указать отдельные значки для использования на стороне и редакторах компаньонов.
 - Существует поддержка для нескольких случаев часового лица, каждый экземпляр имеет уникальный идентификатор, доступный на всех поверхностях API.
 -  Теперь вы можете указать человеческие читаемые имена для 
ComplicationSlotsдля использования в редакторах. - Экспериментальная поддержка стиля «аромата», курируемого выбора стилей, которые будут видны от редактора компаньона.
 - При редактировании двух экземпляров watchface загружены, теперь это возможно для обмена ресурсами, сохраняя память
 - При выборе осложнений в редакторе ON Watch Face, нынешний поставщик теперь предварительно избран.
 
Улучшенные осложнения:
-  Теперь вы можете указать 
ComplicationTypeдля первичных и вторичных источников данных, предоставляя разработчикам большую гибкость для опыта вне коробки. -  Мы добавили 
ComplicationDataTimeline, которая предоставляет последовательность данных, затрачиваемых на время, которые должны быть доставлены на лицо часов, которые можно автоматически кэшировать и обновлять. Например, сегодняшний прогноз погоды в разное время или несколько предстоящих календарных мероприятий. -  
ComponentNameпоставщика осложнений является частьюComplicationData. - Сложность теперь кэшируется, что обеспечивает лучший опыт при переключении между лицами для часов.
 
Другие изменения:
-  
UserStyleSchemaиComplicationSlotsтеперь могут быть определены в XML. Это упрощает конструкцию лица и позволяет более быстрые запросы метаданных из системы. - Часым лица теперь могут влиять на цвета, используемые для рендеринга наложения системы.
 
Версия 1.1.0-RC01
18 мая 2022 года
 androidx.wear.watchface:watchface-*:1.1.0-rc01 выпускается. Версия 1.1.0-RC01 содержит эти коммиты.
Новые возможности
-  Мы внесли несколько настроек использования для поддержки xml WatchFace, что облегчает указание 
ComplicationSlotBoundsи поддерживающих ссылок. Экспериментирование с краевым осложнениемBoundingArcпродолжается, сгибая его доdrawHighlightхотя в то время это не рекомендуется для использования. 
API меняется
-  Мы добавили экспериментальную перегрузку 
drawHighlight, которая принимает параметрBoundingArc. ( I705f8 ) - Смотреть лицо XML теперь поддерживает ссылки на ресурсы. Он позволяет использовать одну и ту же константу как в XML, так и в вашем коде. ( I3ef61 )
 -  Мы добавили способность определять 
ComplicationSlotBoundsвcenter_x,center_y,size_x,size_yFORM. Теперь также возможно использовать различные единицы (т.е. DP), используя ссылки на ресурсы. ( IACE98 ) 
Исправления ошибок
-  Исправлена 
runBlockingWithTracing, которая выполняла задачи в неправильном контексте. ( 4F595FE ) -  Сделайте 
BaseEditorSession.closeSynchronous. Проблема сBaseEditorSession.close. Клоуз асинхронна заключается в том, что мы выпускаемComplicationDataSourceInfoRetrieverслишком поздно, что приводит к предупреждению спама в LogCat. Это было, вероятно, безвредно, но спам Logcat отвлекает и следует избегать. ( 35A5308 ) 
Версия 1.1.0-бета02
11 мая 2022 г.
 androidx.wear.watchface:watchface-*:1.1.0-beta02 выпускается. Версия 1.1.0-beta02 содержит эти коммиты.
Новые возможности
-  Мы добавили экспериментальную поддержку для новых типов 
ComplicationData, они еще не готовы к использованию, но смотрите это пространство. 
API меняется
-  Мы добавили 
BoundingArc, экспериментальный класс, который описывает геометрию слота с осложнением края. Это было добавлено кComplicationSlotи складывалосьWatchFaceMetadataClientComplicationSlotState( I61a40 ) -  Мы добавили возможность наследовать настройки в 
UserStyleSettingXML. Это позволяет уменьшить многословие и разделить настройку между сторожевыми площадками. ( IEF841 ) -  Мы добавили два новых экспериментальных типа 
ComplicationData. В настоящее время нет никакой поддержкиListComplicationDataдля любого из этих типов, и WoroS в настоящее время не распознает эти типыComplicationDataSource'sProtoLayoutComplicationData( I1811c ) 
Исправления ошибок
-  Исправлена сериализация типа 
TimeLineEntry. Мы не сериализовали типTimeLineEntry, который означал, что кэшированныеTimeLineEntriesтипа Nodata были бы неправильно интерпретированы как наличие типа родительского осложнения, ведущего к NPE, когда доступ к не существующим полям. ( 55ffdf5 ) -  Исправить ошибку, где 
setComplicationDataсбросил поля временной шкалы ( FB392F5 ) -  Исправляет ошибку, в которой очень время 
runBlockingWithTracingприведет к NPE ( 12CA62E ) -  Исправляет ошибку, в которой мы иногда получаем 
ClassNotFoundException: android.support.wearable.complications.ComplicationTextпри получении осложнения. ( 217942d9 ) -  Исправляет ошибку в 
GlesRenderer.backgroundThreadInitInternal, где она называлась толькоonBackgroundThreadGlContextCreated, если был вызванEGL14.eglCreateContext. Исправляет еще одну ошибку, в которой был визуальный сбой на скриншоте, вызванномverticalFlip. ( C674AD2 ) -  Исправить проверку версии xml 
WatchFaceService, он загружался из неправильного пакета. ( DFA06F3 ) -  Формат заполнителя теперь использует внутренний пакет. Мы не хотим, чтобы заполнители разбивали существующие часовые места, которые могут использовать скрытую внутреннюю AswccomplicationData. Ранее формат провода данных 
NoDataComplication, хранящихся за заполнителем в обычных полях (проблематично, потому что старые лиц с часами будут делать строку заполнителя, которая не предназначена), вместо этого мы теперь используем внутренний пакет для полного изолята. ( D5E7BD2 ). 
Версия 1.1.0-бета01
20 апреля 2022 года
 androidx.wear.watchface:watchface-*:1.1.0-beta01 выпускается. Версия 1.1.0-beta01 содержит эти коммиты.
API меняется
-  Теперь методы 
WatchFaceMetadataClient(getUserStyleSchema,getComplicationSlotMetadataMap,getUserStyleFlavors) иHeadlessWatchFaceClient.getUserStyleFlavorsбросают без контроля RuntimeException вместоWatchFaceException. ( I0718a ) -  
WatchFaceMetadataClient.WatchFaceExceptionбыл выведен из класса, чтобы позволить его повторно использовать. ( I4e869 ) 
Исправления ошибок
-  
WatchFaceMetadataClientбольше не будет разбиться , когда отправляют частичныеComplicationSlotBounds. 
Версия 1.1.0-Alpha05
6 апреля 2022 года
 androidx.wear.watchface:watchface-*:1.1.0-alpha05 выпускается. Версия 1.1.0-Alpha05 содержит эти коммиты.
Новые возможности
-  Теперь вы можете сказать, какой источник данных послал 
ComplicationData, осмотревComplicationData.dataSource, некоторые часы могут использовать это для настройки дисплея осложнений. ( I44a73 ) 
API меняется
-  
Renderer.CanvasRendererиRenderer.GlesRendererбыли устарели в пользуRenderer.CanvasRenderer2Для Java Interop мыListenableGlesRenderer2ListenableCanvasRenderer2иRenderer.GlesRenderer2. ( I31ffaSharedAssets -  Добавлено 
@WatchFaceFlavorsExperimentalспособность определять ароматы - предварительно сконфигурированный список стилизированных часов ( I04DD0 ) -  
Renderer.sharedAssetsв настоящее время является Stateflow, и мы удалили неиспользованныйRenderer.SharedAssetsFactory( i12ac5 ) -  
UserStyleSchema.userStyleSettingsбольше не устарел ( IBA7E3 ) -  Мы добавили 
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, который позволяетHeadlessWatchFaceClientWwatchfaceclient избегать относительно низких накладных расходов прохождения схемы по AIDL перед вычислением хэша дигеста. ( I33597 ) -  Мы добавили 
isUserStyleSchemaStaticвWatchFaceMetadataClient, что является правдой, если и только тогда, на что можно полагатьсяUserStyleSchema, чтобы не измениться, если не обновляется APK для часов. ( I45a3f ) -  Мы добавили 
getDigestHashвUserStyleSchema, который вычисляет хэш схемы. Это может быть использовано для эффективного определения, изменилась лиUserStyleSchema. ( I2063d ) -  
METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTEDпереименован вMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED( i9ba5d ) -  
UserStyleSetting.OnWatchEditorDataбыла переименована вUserStyleSetting.WatchFaceEditorDataсборник. ( If3afb ) 
Версия 1.1.0-Alpha04
9 марта 2022 года
 androidx.wear.watchface:watchface-*:1.1.0-alpha04 выпускается. Версия 1.1.0-Alpha04 содержит эти коммиты.
API меняется
-  В настоящее время 
ComplicationDataне всегда может быть доступно (например, кэшированное осложнение), поэтому мы расширилиNoDataComplicationс дополнительным заполнителем осложнением и добавленнымComplicationText.PLACEHOLDERДержатель,MonochromaticImage.PLACEHOLDER. Местоположение,SmallImage.PLACEHOLDER,PhotoImage.PLACEHOLDER, который разрешается использовать только в контекстеNoDataComplicationData-EplectionAt.PloctionAt.PloctionAt.PloctionAta. Если выбраны эти заполнители, предполагается отображаться с серыми коробками/дугами. ( I6285d ) -  Мы добавили 
ComplicationData.getNextChangeInstant, который сообщает вам следующий момент после эталонного момента, в котором может измениться любое поле осложнений. Это используется внутренне для планирования кадров для обновлений осложнений. Например, если лицо часов обычно обновляет один раз в минуту, установление осложнения Stop Watch приведет к обновлению его обновления один раз в секунду. ( I7ceb2 ) -  
EditorSession.watchFaceIdтеперь может использоваться на всех уровнях API. Кроме того, его значение теперь всегда будет соответствоватьWatchState.watchFaceInstanceId. ( I323b9 ) -  API 
getPendingIntentForTouchEventбольше не является необходимым, поскольку основная проблема была исправлена в рамках, поэтому все связанные API были удалены. Часы не нужно делать что -то особенное дляPendingIntents, даже если кнопка «Домой» недавно была нажата. ( I1f2e8 ) -  Мы добавили 
RendererParameters.isForScreenShot, что будет правдой, если рендерин для снимка экрана. Некоторые смотрят лица с анимацией, чтобы знать это, чтобы внести коррективы, чтобы обеспечить наилучшие результаты. ( I96d99 ) -  Мы добавили 
WatchFaceExceptionReasonвWatchFaceException, чтобы дать некоторый контекст тому, что пошло не так. ( I01d15 ) -  
ComplicationDataSourceService.onImmediateComplicationRequestбыл удален, вместо этого было добавлено,ComplicationRequest.immediateResponseRequiredдля сигнала добавлено, что поставщик должен быстро реагировать (в идеале реагировать на <100 мс). Примечание. Эта функциональность охраняется за привилегированнымcom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATEразрешение. ( IE6B23 ) - Обновленная нулясь в Core и AppCompat в соответствии с тирамису DP2 ( I0CB7 )
 
Исправления ошибок
- Теперь приложение Watchface срабатывает исключение, если проверка схемы не удается ( IA400F )
 
Версия 1.1.0-Alpha03
9 февраля 2022 года
 androidx.wear.watchface:watchface-*:1.1.0-alpha03 выпускается. Версия 1.1.0-Alpha03 содержит эти коммиты.
API меняется
-  Мы добавили экспериментальную поддержку для иерархических схем стиля. Мы добавили новое свойство в 
androidx.wear.watchface.style.UserStyleSetting.Option, ChildSettings, которые изначально используются только вListOption. Это позволяет описать иерархию стилей для использования редактором UIS, базовый пользовательский тип не изменился и до сих пор остаетсяMap<String, ByteArray>. ( IAF6F4 ) -  Мы добавили 
WatchFace.OverlayStyle, который позволяет сторожевой поверхности настраивать рендеринг наложения состояния системы. ( 18520d ) -  Мы представили 
clearWithBackgroundTintBeforeRenderingHighlightLayerНовый необязательный параметр конструктора дляCanvasRenderer(по умолчанию неверно), если установить True, то холст будет очищен с помощью фонового цвета оттенка. ( IE01E5 ) -  Добавлено 
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTEDMetadata, что позволяет источникам осложнений данных указать, что они могут обеспечить значение по умолчанию без какой -либо конфигурации ( ICC0D4 ) -  Это часто при редактировании часового лица, чтобы быть как интерактивным, так и безголовым экземпляром. Чтобы помочь сохранить память, мы ввели 
Renderer.SharedAssets, который позволяет рендерингу с лицами по обмену обменными данными (например, текстурами и шейдерами) между экземплярами.GlesRenderer.setEglConfigиGlesRenderer.setEglDisplayустарели, для этого никогда не было предназначено для установки, и это привело бы к неопределенному поведению. ( I0d9e7 ) -  Мы добавили 
setNameResourceId&setScreenReaderNameResourceId(какие эталонные строковые ресурсыandroidx.wear.watchface.client.ComplicationSlotStateкComplicationSlot.Builder. Это позволяет системе извлекать имена сложностей для использования в редакторах и считывателях экрана. ( If6c6a ) -  
WatchfaceMetadataClient.getUserStyleSchemaиgetComplicationSlotMetadataMapтеперь бросаютWatchFaceExceptionвместоRemoteException. ( I86f11 ) -  
onSynchronousComplicationRequestи связанные с ним функции вComplicationDataSourceServiceбыли переименованы вonImmediateComplicationRequestи т. Д. ( I87BA0 ) -  Наблюдая за редакторами лица гораздо меньше экрана, чем редакторы компаньонов, поэтому имеет смысл поддерживать различные значки для Entry Face Editors. Этот патч добавляет 
OnWatchEditorData(в настоящее время содержит только значок) ко всем пользователям и при необходимости их классов опций. ( IF1886 ) -  Мы добавили 
@JvmOverloadsв конструктор прослушиваемого glesrenderer для лучшего java interop. ( I2974a ) 
Исправления ошибок
-  Конструктор 
ListenableGlesRendererтеперь правильно обозначен как@Throws(GlesException::class), и теперь можно расширить этот класс в Java. ( IAC6D0 ) -  Исправляет ошибку с помощью 
PhotoImageComplicationDataTapaction неправильно обрабатывается ( I1CC30 ) 
Версия 1.1.0-Alpha02
12 января 2022 года
 androidx.wear.watchface:watchface-*:1.1.0-alpha02 выпускается. Версия 1.1.0-Alpha02 содержит эти коммиты.
Новые возможности
-  Чтобы помочь отладке и тестированию, 
ComplicationDataи соответствующие подклассы теперь имеют переоцененные методы хешкода, равные и товарные, облегчающие их работу. 
API меняется
-  
WatchfaceMetadataClientМетоды еще раз бросаютRemoteExceptions, где это уместно, облегчая для клиента код, чтобы улавливать ошибки с часового лица. ( I78785 ) -  
ComplicationDataи подклассные классы теперь имеют хэшкод, равные и тослинг. ( I24bc6 ) 
Версия 1.1.0-Alpha01
15 декабря 2021 года
 androidx.wear.watchface:watchface-*:1.1.0-alpha01 выпускается. Версия 1.1.0-Alpha01 содержит эти коммиты.
Новые возможности
UserStyleSchemaиComplicationSlotsтеперь могут быть определены в XML. Это упрощает строительство лица. Кроме того, запросыWatchFaceMetadataClientбыстрее, потому что ему не нужно связывать службу, чтобы получить метаданные.WatchFaceMetadataClientиListenableWatchFaceMetadataClientбольше не экспериментальны и станут частью стабильного API. Система сможет необязательно поддерживать несколько экземпляров часового лица, каждая из которых с различными пользовательскими параметрами. Они будут видны в сборщике лица. Чтобы выбрать это, часы должны включать в себя следующую мета -данных в его манифесте.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />Некоторые часы имеют состояние, которое не отражено в
UserStyle, для поддержки этого и нескольких случаев, идентификатор экземпляра лица Watch Face теперь доступен черезWatchState.watchFaceInstanceId.ComplicationData, в настоящее время кэшируется, чтобы осложнения были отображаются сразу после загрузки. ИногдаComplicationDataк кэшируется в памяти системой, а иногда он сериализуется библиотеками лиц. Когда сериализуется какое-либо связанное сопутствующее плату, если это произойдет,ComplicationData.tapActionLostDueToSerialization. Система отправитtrueComplicationDataс помощьюtapActionкак можно скорее.Некоторые
ComplicationDataне следует кэшировать в течение длительного времени, чтобы поддержать это, мы добавили более общееComplicationDataTimelineфункции. Это может быть использовано для обеспечения последовательностиComplicationDataзатрачиваемого по времени, для доставки на лицо часов, которую можно автоматически кэшировать и обновлять. Например, сегодняшний прогноз погоды в разное время или несколько предстоящих календарных мероприятий.ComplicationRequestListenerбыл расширен с помощью нового методаonComplicationDataTimeline, который вы можете использовать для возврата этих данных.DefaultComplicationDataSourcePolicyбыл расширен, поэтому вы можете указатьComplicationTypeдля первичных и вторичных источников данных.Мы добавили поддержку поставщиков синхронных осложнений, где осложнение обновляется с более высокой частотой, чем обычно, до одного раза в секунду, когда видно и не амбиционное лицо. Примечание. Поставщики синхронных осложнений могут иметь ограниченное использование из -за проблем с давлением памяти.
Изменения
PendingIntentTapListener, вероятно, будут возвращены, потому что мы решили основную проблему (часы невозможно запустить мероприятия в течение 5 секунд после нажатия кнопки «Домой») в фреймворке.
API меняется
-  
ComplicationData.isCachedбыл изменен наtapActionLostDueToSerialization, которая более полезна при определении того, следует ли по -разному отображаться слот осложнений, чтобы сигнализировать о том, что его нельзя нажать. ( I6de2f ) -  Добавлено 
ComplicationDataTimeline. Это может быть использовано для обеспечения последовательностиComplicationDataзатрачиваемого по времениwear-complication-data-sourceдля доставки на лицо часов, которую можно автоматически кэшировать и обновлять. Например, сегодняшний прогноз погоды в разное время или несколько предстоящих календарных мероприятий.ComplicationRequestListenerбыл расширен с помощью нового методаonComplicationDataTimeline, который вы можете использовать для возврата этих данных. Есть новая обертка Kotlin,SuspendingTimelineComplicationDataSourceServiceдля приостановки услуг источника данных. ( IDECDC ) -  Добавлены 
PendingIntentTapListenerиWatchFaceControlClient.getPendingIntentForTouchEvent. Это может помочь наблюдать за лицами, которые необходимо запустить намерения в ответ на Taps, чтобы обойти проблему, когда фреймворки блокируют новые действия в течение 5 секунд после нажатия кнопки «Домой». ( I98074 ) -  Введен кэш 
ComplicationDataна просмотр. Цель этого состоит в том, чтобы позволить часовой поверхности отображать последние известные значения данных осложнений при загрузке до тех пор, пока у системы не будет возможности их обновить. Существует новый метод APIWatchFaceControlClient.hasComplicationCache, предназначенный для OEM -производителей. Это может повлиять на стратегию системы посылать осложнения на лицо. Кроме того,ComplicationDataобладаетisCachedсвойством, и рекомендуется, чтобы кэшированные осложнения были представлены по -разному, потому чтоtapActionне может быть кэширована и будетnullв кэшированном осложнении. ( I404b0 ) -  Идентификатор экземпляра часового лица теперь доступен через 
WatchState.watchFaceInstanceId. Большинству часов для часов не нужно использовать это, но если есть состояние лица, которое не хранится в схеме, то это ключ для идентификации экземпляра лица. Чтобы поддержать это, теперь вы можете предоставить идентификатор при вызовеWatchFaceControlClient.createHeadlessWatchFaceClient. ( I1ff98 ) -  Расширенная 
DefaultComplicationDataSourcePolicyс возможностью установитьComplicationTypesпо умолчанию для первичного, вторичного поставщика и поставщика запасной системы.ComplicationSlot.defaultDataSourceType. ( If0ce3 ) -  
ComplicationSlot.configExtras.EditorSession.openComplicationDataSourceChooser()I6f852 ) -  Добавлен 
WatchFace.setComplicationDeniedDialogIntentиsetComplicationRationaleDialogIntent. Эти намерения запускаются, чтобы показать диалог обоснования, прежде чем запросить разрешения на осложнения, и еще один диалог, объясняющий, что разрешение на осложнение необходимо при попытке отредактировать осложнение, когда были отказаны в разрешениях (выбор поставщика не может открыться, поэтому диалог необходим). ( I3a29c ) -  
UserStyleSchemaиComplicationSlotsтеперь могут быть определены в XML. Это упрощает строительство лица и делает запросыWatchFaceMetadataClientбыстрее, поскольку им не нужно связывать службу, чтобы получить метаданные. ( I85BFA ) -  Добавлен 
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent, чтобы клиент мог определить, поддерживает ли часыgetPendingIntentForTouchEvent. ( I0b917 ) -  
WatchFaceMetadataClientиListenableWatchFaceMetadataClientбольше не экспериментальны. Они могут быть использованы для эффективного получения метаданных лица, где это возможно, не открывая переплет на лицо. ( IBB827 ) -  Добавлена поддержка поставщиков синхронных осложнений, где осложнение обновляется на более высокой частоте, чем обычно, до одного раза в секунду, когда лицо часового лица видно и не амбициозно. Чтобы использовать это, поставщик должен включить новый 
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDSMetadata Metadata в его манифесте и переоцениваетonSynchronousComplicationRequest. В зависимости от характера источника данных, ему также может потребоваться переопределитьonStartSynchronousComplicationRequestsиonStopInteractiveComplicationRequests, чтобы получить уведомления о том, когда осложнение входит и выходит из интерактивного режима. ( I8fe9d ) 
Версия 1.0
Версия 1.0.1
9 февраля 2022 года
 androidx.wear.watchface:watchface-*:1.0.1 выпускается. Версия 1.0.1 содержит эти коммиты.
Исправления ошибок
-  Исправляет ошибку с помощью 
PhotoImageComplicationDataTapaction неправильно обрабатывается ( I1CC30 ) 
Версия 1.0.0
1 декабря 2021 года
 androidx.wear.watchface:watchface-*:1.0.0 выпускается. Версия 1.0.0 содержит эти коммиты.
Основные особенности 1.0.0
 Пакет androidx.wear.watchface - это новая рекомендуемая библиотека для разработки лиц Wearos Watch. Он имеет ряд новых функций над старой носимой библиотекой поддержки.
-  Стиль пользователя (например, чтобы изменить цветовую палитру, стиль рук часов, внешний вид часовых отметок и т. Д.) Прямо поддерживается библиотекой (см. 
androidx.wear.watchface.style). Теперь гораздо проще разработать редактор ON Watch Face с использованием Androidx.wear.watchface.editor, и ваше лицо для часов можно отредактировать из приложения Companion System без необходимости написать дополнительный код. - Лучшие практики запекаются. Библиотека автоматически сгенерировала метки контента считывателя экрана для осложнений (вы также можете добавить свои собственные), и кадрирование автоматически падает, когда батарея низкая и не заряжается для улучшения времени батареи.
 - Для разработки часового лица требуется меньше кода, особенно для осложнений, когда большая часть шаблона перешла в библиотеку.
 
Исправления ошибок
-  Fix 
EditorSession.userStyle.compareAndSet( i6f676 ) - Исправьте очень короткие задержки для лица ( IFFB97 )
 -  Dispatch 
InteractiveWatchFaceImpl.onDestroyв потоке пользовательского интерфейса ( I83340 ) - Исправьте несколько проблем с приемниками вещания ( i7d25f )
 
Версия 1.0.0-RC01
3 ноября 2021 года
 androidx.wear.watchface:watchface-*:1.0.0-rc01 выпускается. Версия 1.0.0-RC01 содержит эти коммиты.
Исправления ошибок
Fix Dump () (называется ADB Shell Dampsys), которые были разбиты миграциями потока. ( 087cf9e )
Убедитесь, что надлежащий заказ wriedirectbootprefs. Мы хотим, чтобы wriTedirectbootprefs всегда работали после initstylaindcomplications или мы рискуем задержать поток пользовательского интерфейса ( 37650AC )
Убедитесь, что renderer.ondestroy называется. В сценарии, в котором был создан рендерера, но WF init не завершен и двигатель. ( F9952DC )
Оптимизация/исправление на iSbatterylowandNot зарядку. Этот патч перемещает первоначальную настройку IsbatterylowandNoTcaring ранее, что означает, что его можно сделать параллельно с CreateWatchface. Кроме того, теперь мы слушаем action_power_disconnected. ( DDFFD80
InteractiveWatchfaceClientImpl.isconnectionalive быть ложным после закрытия ( AB9774E )
Версия 1.0.0-бета01
27 октября 2021 года
 androidx.wear.watchface:watchface-*:1.0.0-beta01 выпускается. Версия 1.0.0-BETA01 содержит эти коммиты.
Версия 1.0.0-Alpha24
13 октября 2021 года
 androidx.wear.watchface:watchface-*:1.0.0-alpha24 выпускается. Версия 1.0.0-Alpha24 содержит эти коммиты.
API меняется
-  Занятия в пакете 
androidx.wear.watchface.complicationsбыли перемещены в новый проектwear:watchface:watchface-complications. Примечание это означает, что вы не можете включить эту библиотеку, а также любую предыдущую альфа-версиюwear:watchface:watchface-complications-dataпотому что вы получите ошибки в дублирующих классах. ( I97195 ) - Renderer.dump был переименован в рендерер. Andump и был аннотирован с @uithread. ( I44845 )
 -  
InteractiveWatchFaceClient.addWatchFaceReadyListenerбыл переименован вaddOnWatchFaceReadyListener, иremoveWatchFaceReadyListenerбыл переименован вremoveOnWatchFaceReadyListener. ( I48fea ) -  Editorsessession 
getComplicationsPreviewDataиgetComplicationsDataSourceInfoбольше не приостанавливают функции, вместо этого они являются свойствамиStateFlow<>значение которого изначально является нулевым. В прослушиванииgetListenableComplicationPreviewDataиgetListenableComplicationsProviderInfoбыли удалены в пользу новых объектовStateFlow<>из базового класса. Если вам нужно прослушать изменения в коде Java, рассмотрите возможность использованияandroidx.lifecycle.FlowLiveDataConversions.asLiveDataдля преобразования вLiveData<>. ( IC5483 ) 
Версия 1.0.0-Alpha23
29 сентября 2021 года
 androidx.wear.watchface:watchface-*:1.0.0-alpha23 выпускается. Версия 1.0.0-Alpha23 содержит эти коммиты.
Новые возможности
Библиотека Watchface теперь является отдельной библиотечной группой, и в результате библиотеки переместились, и вам нужно будет обновить свой импорт Gradle следующим образом:
| Старый | Новый | 
|---|---|
 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 меняется
-  Перенесите отдельные библиотеки 
androidx.wearWatchface и осложнений в группу библиотекиandroidx.wear.watchface. ( B25F3C0 ) - Добавлен EditorRequest.CanWatchfacesUpporTheadlessEditing, чтобы клиент знал, поддерживает ли редактор Watchface редактирование без головы. Обратите внимание, что с этим будут некоторые ложные негативы, потому что поддержка была добавлена в ASOP/1756809, однако она вернет правильное значение для всех будущих часов. ( CA55590 )
 - У Renderer теперь есть метод дампа (), который может быть переопределен, чтобы добавить пользовательские данные в информацию, генерируемую ABD Shell Dampsys Service Service Service Service. ( 95235F9 )
 - InteractiveWatchfaceclient.AddwatchfaCeReadeDyListener теперь сначала указывает исполнителя. ( 563AC2F )
 - StateFlowCompathelper был удален. Asilivedata (androidx.lifecycle.aslivedata) следует использовать вместо этого. ( BD35D3 )
 - CurrentUserStyLeRePository.UsersTyle больше не изменяется. ( I44889 )
 - WatchfacereadyListener был переименован в OnwatchfacereadyListener. ( IC12A9 )
 
Исправления ошибок
- InteractiveInstanceManager.DeleteInstance для вызова Ondestroy Это необходимо для обеспечения того, чтобы InteractiveWatchfaceImpl собрал мусор. ( FCE4AF8 , B/199485839 )