Носить циферблат
Примечание. С 10 июля 2024 г. циферблаты должны использовать формат циферблата , чтобы их можно было устанавливать на новые часы, выпускаемые с предустановленной Wear OS 5. Узнайте больше об изменениях, касающихся пользователей, в этой статье Справочного центра .
Кроме того, начиная с начала 2025 года (конкретная дата будет объявлена в четвертом квартале 2024 года) все новые циферблаты, публикуемые в Google Play, должны использовать формат циферблата.
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
18 сентября 2024 г. | 1.2.1 | - | - | 1.3.0-альфа04 |
Объявление зависимостей
Чтобы добавить зависимость от Wear, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
Groovy
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" }
Kotlin
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-альфа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 , б/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
поскольку оператор равенства требует больших затрат. ( 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()
и передается различным методам создания в качестве параметра. ( Если8а99 ) - Мы добавили
getUserStyleFlavors
вInteractiveWatchFaceClient
, что представляет интерес в первую очередь для OEM-производителей. ( I0f5d8 ) -
GlesRenderer2
теперь имеет перегрузку конструктора, которая позволяет вам указать список атрибутов, которые нужно попробовать по очереди с помощьюeglChooseConfig
. Это, например, позволяет вам сначала попробовать конфигурацию со сглаживанием и при необходимости вернуться к конфигурации без него. ( I1ba74 ) - Начиная с Android U, в WearOS будет добавлена поддержка
SystemDataSources.DATA_SOURCE_HEART_RATE
. Это усложнение гарантированно поддерживает только усложнения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
, который состоит из массива элементов (пар веса и цвета) вместе с необязательным текстом/заголовком/изображением. Они могут отображаться в виде круговой диаграммы, где цвета должны быть значимыми с учетом контекста, поскольку обычно в сложности нет места для отображения меток.
-
- Мы добавили поддержку необязательных
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-бета02
6 сентября 2023 г.
Выпущен androidx.wear.watchface:watchface-*:1.2.0-beta02
. Версия 1.2.0-beta02 содержит эти коммиты.
Новые возможности
-
SuspendingComplicationDataSourceService#onDestroy
теперь открыт. Обратите внимание, что поддержка системных погодных осложнений по умолчанию удалена.
Изменения API
- Вернуть «Открыть новый источник данных о погодных осложнениях». ( I6f335 )
Версия 1.2.0-бета01
23 августа 2023 г.
Выпущен androidx.wear.watchface:watchface-*:1.2.0-beta01
. Версия 1.2.0-beta01 содержит эти коммиты.
Новые возможности
- Начиная с Android T, WearOS теперь будет поддерживать погодную систему по умолчанию.
Изменения API
- Добавьте резервную систему погоды по умолчанию на случай осложнений. ( Ia0994 )
- Этот патч добавляет
WatchFaceRuntimeService
иWatchFaceControlClient.createWatchFaceRuntimeControlClient
вместе с оболочками гуавы. Они добавляют поддержку среды выполнения циферблата, которая представляет собой особый вид циферблата, который загружает свое определение из другого пакета. В настоящее время WearOS поддерживает только среду выполнения для формата циферблата Android . ( I2799f ) - Этот патч является продолжением aosp/2636578 , где мы переименовываем int defs, поэтому любой код, зависящий от
WatchFaceType
,CanvasType
,TapType
илиComplicationsSlotBoundsType
не нужно менять. ( I4098b ) - Обновлены файлы API для аннотирования подавления совместимости. ( I8e87a , б / 287516207 )
- Этот патч предоставляет константы
WatchFaceType
вWatchFaceTypes
, константыCanvasType
вCanvasTypes
, константыTapType
вTapTypes
и константыComplicationsSlotBoundsType
вComplicationsSlotBoundsType
. ( I3b85a , б / 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
. ( Если1c01 ) - Добавьте
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 ). - Дополнительные исключения из перечисления valueOf ( I818fe )
- Мы удалили
renderWatchFaceToSurface
в пользуcreateRemoteWatchFaceView
, который построен на основе SurfaceControlViewHost и позволяет вызывающему объекту встроить представление с циферблата, которое отображается, когда клиент вызываетRemoteWatchFaceViewHost#renderWatchFace
. ( Ib311d ) - Мы добавили
renderWatchFaceToSurface
вInteractiveWatchFaceClient
,HeadlessWatchFaceClient
иEditorSession
. Обычно это более производительно, чем рендеринг в растровое изображение. ( Иекад ) -
ObservableStateStore
переименован вStateStore
. ( Ieb0e2 ) - Добавлен
DynamicTypeEvaluator.Builder
вместо аргументов конструктора, чтобы разрешить использование дополнительных аргументов, включаяObservableStateStore
, который теперь по умолчанию имеет пустое хранилище. ( I6f832 ) - Переработан порядок параметров в
DynamicTypeEvaluator
. ( Ic1ba4 ) - К методам
DynamicTypeEvaluator.bind
добавлен Исполнитель. ( I346ab ) - Мы добавили метод
startEvaluation
вBoundDynamicType
, чтобы запускать оценку после привязки динамического типа. ( я19908 ) - Поставщики осложнений с привилегированными полномочиями
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
, чтобы клиент мог определить, должен ли он эмулировать поддержку или нет от имени старых циферблатов. ( я24c89 ) - Мы решили, что
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, которая приводила к сбоям циферблата. ( е9f466 )
Версия 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
в код равенства и хеш-код. Убедитесь, чтоonRenderParametersChanged
получает правильное значениеisForScreenshot
( I04a41 ). - Исправлены утечки
WatchFaceControlService
из безголовых клиентов. ( е90е00 )
Версия 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
- Менеджер обоев иногда может отсоединиться от движка и создать другой. Мы добавили
DisconnectReason
int def и расширилиClientDisconnectListener
новым методом, который включаетDisconnectReason
, позволяющий прослушивателю наблюдать отсоединения механизма. ( I45cce ) - В конструктор
ComplicationSlotOverlay
( I157e8 ) добавлены два дополнительных параметраnameResourceId
иscreenReaderResourceId
- Мы добавили оболочку гуавы для новой перегрузки
getOrCreateInteractiveWatchFaceClient
сPreviewImageUpdateRequestedListener
. ( Ic31f0 ) - Мы добавили
Renderer.sendPreviewImageNeedsUpdateRequest
, который полезен для циферблатов, состояние которых находится за пределамиUserStyleSchema
, что влияет на их внешний вид (например, циферблат с выбираемым фоновым изображением). На стороне клиента мы добавилиPreviewImageUpdateRequestedListener
в качестве необязательного параметраgetOrCreateInteractiveWatchFaceClient
для наблюдения за этими запросами. ( Iff44a ) - Мы упростили API для предоставления
WatchFaceColors
, теперь в Renderer есть простое свойствоwatchFaceColors
, которое может устанавливать циферблат; его следует обновлять по мере необходимости в ответ на любые изменения стиля. Вместо использованияWallpaperManager
для наблюдения за изменениями цвета мы добавилиOnWatchFaceColorsListener
вInteractiveWatchFaceClient
. ( I490bc ) - Мы добавили класс
WatchFaceColors
, который содержит три наиболее заметных цвета циферблата, и добавили открытые методыwatchfaceColors
иnotifyWatchFaceColorsChanged
в Renderer, которые позволяют системе получать цвета циферблата черезWallpaperManager.getWallpaperColors
. ( I3d611 ) -
ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(и экспериментальныеDiscreteRangedValueComplicationData
,GoalProgressComplicationData
иWeightedElementsComplicationData
) теперь поддерживаютSmallImages
. Если циферблат решит отобразить сложность с помощью нескольких цветов, теперь у него есть возможность использовать многоцветноеSmallImage
, тогда как раньше приходилось использовать монохромное изображение. ( I257df ) - Вместо этого выполните рефакторинг
PreviewImageUpdateRequestedListener
, чтобы он былConsumer<>
( Ia875d ) - Замените пользовательский тип единого абстрактного метода (SAM)
OnWatchfaceColorsListener
на общий тип Java SAM (Consumer) ( I0c489 ). - Мы объявили устаревшими методы
getOrCreateInteractiveWatchFaceClient
иlistenableGetOrCreateInteractiveWatchFaceClient
, которые не указываютPreviewImageUpdateRequestedListener
. ( МЭК502 )
Исправления ошибок
-
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
теперь является неизменяемым. ( Если624а ) - Небольшие осложнения могут быть сложными для устранения. Чтобы смягчить эту проблему, мы ввели поддержку полей, которые увеличивают область касания, не влияя на рендеринг. Если не указано иное (в коде или через XML),
ComplciationSlots
имеет поля нулевого размера. ( I14089 ) - Изменена подпись
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
для возврата ненулевого экземпляра фабрики. Раньше при возврате значения null возникала ошибка, так что это просто делает контракт API более понятным. ( I0fcc0 ) - Мы добавили аргумент
currentUserStyleRepository
в методWatchFaceService.getComplicationSlotInflationFactory
, чтобы обеспечить совместимость сcreateComplicationSlotsManager
. ( I2ddd2 ) -
UserStyleFlavors
стали неэкспериментальной функцией. ( I69cdc ) - Мы удалили экспериментальный
ValueType
изRangedValueComplicationData
и вместо этого ввели экспериментальныйDiscreteRangedValueComplicationData
, который похож наRangedValueComplicationData
, за исключением целочисленного диапазона и значения. Мы также представили экспериментальнуюGoalProgressComplicationData
, которая похожа наRangedValueComplicationData
за исключением того, что она предназначена для продвижения к цели, где min неявно равно нулю, а значение может быть больше, чемtargetValue
. Обратите внимание, что для всех вариантовRangedValue
должен быть указан хотя бы один из monoImage, 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 настоятельно рекомендуется выполнить обновление.
Исправления ошибок
Инициализация циферблата является асинхронной, и если усложнение получено до того, как циферблат готов, оно помещается в список
pendingInitialComplications
и применяется позже. К сожалению,pendingInitialComplications
был применен слишком рано, а это означало, что во время инициализации циферблата был период времени, когда осложнения все равно попадали вpendingInitialComplications
и были проигнорированы. Теперь это исправлено. Кроме того, этот патч исправляет ошибку, из-за которойComplicationRenderer
ошибочно пытался асинхронно загрузить заполнители, что не удавалось, что приводило к тому, что графика компиляции никогда не обновлялась. Наконец, этот патч исправляет, надеюсь, теоретическую ошибку, при которой необходимо объединить несколькоpendingInitialComplications
. ( 0d03ba3 )Устраните потенциальную взаимоблокировку в
InteractiveInstanceManager
, когдаgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
удерживал блокировку дольше, чем необходимо. Обычно мы ожидаем, чтоengine.setUserStyle
будет работать быстро, но если по какой-то причине это не так, мы можем получить тупик или ANR. Этот патч удаляет ненужную работу из блокировки, устраняя возможность возникновения взаимоблокировки. ( 5a2adca ).Исправлено несколько проблем, из-за которых сохранялся
WatchFaceService
. WakeLock иногда может сохранятьWatchFaceService
, добавление вызоваrelease()
исправляет это. ТакжеStateFlows
может сохранятьWatchFaceService
, отменяя базовые исправленияCoroutineScopes
( fd48138 ).Добавьте таймауты в
awaitDeferredWatchFace
* и исправьтеwatchfaceOverlayStyle
NullPointerException
. В обычных обстоятельствах тайм-аут не должен превышаться, в том числе после новой установки и в сценарияхDirectBoot
с высокой загрузкой ЦП. Мы также исправили NPE, еслиgetWatchfaceOverlayStyle
вызывается послеclose()
.( a4c3a5a ).
Версия 1.1.0
15 июня 2022 г.
Выпущен androidx.wear.watchface:watchface-*:1.1.0
. Версия 1.1.0 содержит эти коммиты.
Важные изменения с версии 1.0.0
Улучшенное редактирование:
- Мы добавили поддержку иерархических схем, которая позволяет создавать иерархию стилей с помощью пользовательского интерфейса редактора. Теперь вы можете указать отдельные значки для использования в редакторах циферблата и сопутствующих редакторах.
- Существует добровольная поддержка нескольких экземпляров циферблата, каждый экземпляр имеет уникальный идентификатор, доступный на всех поверхностях API.
- Теперь вы можете указать удобочитаемые имена для
ComplicationSlots
для использования в редакторах. - Экспериментальная поддержка стилей «ароматов», тщательно подобранный набор стилей, которые будут видны в сопутствующем редакторе.
- При редактировании двух экземпляров циферблата загружаются экземпляры циферблата теперь могут совместно использовать ресурсы, экономя память.
- При выборе осложнения в редакторе циферблата текущий поставщик теперь выбирается заранее.
Улучшенные осложнения:
- Теперь вы можете указать
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 циферблата, упрощая указание
ComplicationSlotBounds
и вспомогательных ссылок. Эксперименты с усложнением реберBoundingArc
продолжаются, переходя кdrawHighlight
хотя в настоящее время его использование не рекомендуется.
Изменения API
- Мы добавили экспериментальную перегрузку
drawHighlight
, которая принимает параметрBoundingArc
. ( I705f8 ) - XML циферблата теперь поддерживает ссылки на ресурсы. Это позволяет вам использовать одни и те же константы как в XML, так и в вашем коде. ( I3ef61 )
- Мы добавили возможность определять
ComplicationSlotBounds
в формеcenter_x
,center_y
,size_x
,size_y
. Теперь также возможно использовать различные единицы (т.е. DP), используя ссылки на ресурсы. ( IACE98 )
Исправления ошибок
- Исправлена
runBlockingWithTracing
, которая выполняла задачи в неправильном контексте. ( 4F595FE ) - Сделайте
BaseEditorSession.close
Synchronous. Проблема с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
иWatchFaceMetadataClient
наComplicationSlotState
. ( I61a40 ) - Мы добавили возможность наследовать настройки в
UserStyleSetting
XML. Это позволяет уменьшить многословие и разделить настройку между сторожевыми площадками. ( IEF841 ) - Мы добавили два новых экспериментальных
ListComplicationData
ComplicationData
ProtoLayoutComplicationData
В настоящее время нет никакой поддержки рендеринга для любого из этих типов, и WoroS в настоящее время не распознает эти типы, если добавлено в манифестComplicationDataSource's
. ( 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
были устарелиSharedAssets
Renderer.GlesRenderer2
Renderer.CanvasRenderer2
Для Java Interop мы представилиListenableCanvasRenderer2
иListenableGlesRenderer2
. ( I31ffa ) - Добавлено
@WatchFaceFlavorsExperimental
способность определять ароматы - предварительно сконфигурированный список стилизированных часов ( I04DD0 ) -
Renderer.sharedAssets
в настоящее время является Stateflow, и мы удалили неиспользованныйRenderer.SharedAssetsFactory
( i12ac5 ) -
UserStyleSchema.userStyleSettings
больше не устарел ( IBA7E3 ) - Мы добавили
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
, который позволяетHeadlessWatchFaceClient
избегать относительно низких накладных расходов прохождения схемы по 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 меняется
-
ComplicationText.PLACEHOLDER
ComplicationData
NoDataComplication
MonochromaticImage.PLACEHOLDER
SmallImage.PLACEHOLDER
PhotoImage.PLACEHOLDER
В контекстеNoDataComplicationData
заполнителя. Если выбраны эти заполнители, предполагается отображаться с серыми коробками/дугами. ( 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_SUPPORTED
Metadata, что позволяет источникам осложнений данных указать, что они могут обеспечить значение по умолчанию без какой -либо конфигурации ( 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 ) - Исправляет ошибку с помощью
PhotoImageComplicationData
Tapaction неправильно обрабатывается ( 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
кэшируется в памяти системой, а иногда он сериализуется библиотеками лиц. Когда сериализуется какое-либо связанное сопутствующее плату, если это произойдетtrue
ComplicationData.tapActionLostDueToSerialization
Система отправит обновленноеComplicationData
с помощьюtapAction
как можно скорее.Некоторые
ComplicationData
не следует кэшировать в течение длительного времени, чтобы поддержать это, мы добавили более общееComplicationDataTimeline
функции. Это может быть использовано для обеспечения последовательностиComplicationData
затрачиваемого по времени, для доставки на лицо часов, которую можно автоматически кэшировать и обновлять. Например, сегодняшний прогноз погоды в разное время или несколько предстоящих календарных мероприятий.ComplicationRequestListener
был расширен с помощью нового методаonComplicationDataTimeline
, который вы можете использовать для возврата этих данных.DefaultComplicationDataSourcePolicy
был расширен, поэтому вы можете указатьComplicationType
для первичных и вторичных источников данных.Мы добавили поддержку поставщиков синхронных осложнений, где осложнение обновляется с более высокой частотой, чем обычно, до одного раза в секунду, когда видно и не амбиционное лицо. Примечание. Поставщики синхронных осложнений могут иметь ограниченное использование из -за проблем с давлением памяти.
Изменения
PendingIntentTapListener
, вероятно, будут возвращены, потому что мы решили основную проблему (часы невозможно запустить мероприятия в течение 5 секунд после нажатия кнопки «Домой») в фреймворке.
API меняется
-
ComplicationData.isCached
был изменен наtapActionLostDueToSerialization
, которая более полезна при определении того, следует ли по -разному отображаться слот осложнений, чтобы сигнализировать о том, что его нельзя нажать. ( I6de2f ) -
wear-complication-data-source
ComplicationDataTimeline
Это может быть использовано для обеспечения последовательностиComplicationData
затрачиваемого по времени, для доставки на лицо часов, которую можно автоматически кэшировать и обновлять. Например, сегодняшний прогноз погоды в разное время или несколько предстоящих календарных мероприятий.ComplicationRequestListener
был расширен с помощью нового методаonComplicationDataTimeline
, который вы можете использовать для возврата этих данных. Есть новая обертка KotlinSuspendingTimelineComplicationDataSourceService
для приостановки услуг источника данных. ( 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_SECONDS
Metadata Metadata в его манифесте и переоцениваетonSynchronousComplicationRequest
. В зависимости от характера источника данных, ему также может потребоваться переопределитьonStartSynchronousComplicationRequests
иonStopInteractiveComplicationRequests
чтобы получить уведомления о том, когда осложнение входит и выходит из интерактивного режима. ( I8fe9d )
Версия 1.0
Версия 1.0.1
9 февраля 2022 года
androidx.wear.watchface:watchface-*:1.0.1
выпускается. Версия 1.0.1 содержит эти коммиты.
Исправления ошибок
- Исправляет ошибку с помощью
PhotoImageComplicationData
Tapaction неправильно обрабатывается ( 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.wear
Watchface и осложнений в группу библиотеки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 )
Носить Watchface
Примечание. По состоянию на 10 июля 2024 года часовые лица должны использовать формат лица , чтобы быть установленными на новых часах, которые запускаются с предварительно установленным износом OS 5. Узнайте больше об изменениях, связанных с пользователем в этой статье Help Center .
Кроме того, начиная с начала 2025 года (конкретная дата, которая будет анонсирована в течение 4. 2024), все новые часы, опубликованные в Google Play, должны использовать формат лица.
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
18 сентября 2024 г. | 1.2.1 | - | - | 1.3.0-Альфа04 |
Объявление зависимостей
Чтобы добавить зависимость от износа, вы должны добавить репозиторий Google Maven в свой проект. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
Groovy
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" }
Kotlin
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-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
базового экземпляра Watchface при редактировании. Если осложнения изменяются редко, это более эффективно, чем прохождение переопределения черезEditorSession#renderWatchFaceToBitmap
. ( I19384 )
Исправления ошибок
- Ранее
selectComplicationDataForInstant
призывалtoApiComplicationData
для любых сроков, что означает, что последующий тест на справочный равенство === всегда будет терпеть неудачу. Это означало, что осложнения были перезагружали каждую раму, ведущую к сливам батареи. ( 717406 )
Версия 1.3.0-Alpha02
3 апреля 2024 г.
androidx.wear.watchface:watchface-*:1.3.0-alpha02
выпускается. Версия 1.3.0-Alpha02 содержит эти коммиты .
Новые возможности
- Теперь мы используем справочное равенство для сравнения лучших и
selectedData
, потому что оператор Equals стоит дорого. ( 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
, который представляет интерес, прежде всего, для OEM -производителей. ( I0f5d8 ) -
GlesRenderer2
теперь имеет перегрузку конструктора, которая позволяет вам указать список атрибутов, чтобы попробовать в свою очередь сeglChooseConfig
. Это, например, позволяет сначала попробовать конфигурацию с анти-алиатами и запасаться, без того, если это необходимо. ( I1ba74 ) - От Android U, поддержка
SystemDataSources.DATA_SOURCE_HEART_RATE
будет добавлена в ForoS. Это осложнение гарантированно только поддержат осложненияSHORT_TEXT
, но рекомендуется, чтобыComplicationSlot
также принялиSMALL_IMAGE
, потому что OEM -производители могут принять решение об обслуживании своего приложения для здоровья вместо живой ценности. ( I34223 ) - Мы добавили
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
, который изMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
U По умолчанию система предполагает, что служба источника данных осложнений поддерживает резервное копирование любых данных конфигурации, но если она не может добавить настройки метаданных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
за исключением того, что он предназначен для достижения цели, когда Мин неявно равна нулю, и значение разрешено быть больше, чемtargetValue
. -
WeightedElementsComplicationData
, который состоит из множества элементов (пары веса и цвета) вместе с дополнительным текстом/заголовком/изображением. Они могут отображаться как круговая диаграмма, где цвета должны быть значимыми, учитывая контекст, поскольку обычно нет места в осложнении для рендеринга.
-
- Мы добавили поддержку дополнительных
ColorRanges
вRangedValueComplicationData
. Обычно осложнения будут создаваться в цветах выбора часовых лиц, но иногда лучшее,ComplicationDataSource
лучше всего подходит для того, чтобы установить цвета, например, когда у них есть особое семантическое значение. Например, от красного до синего для температуры. - Почти каждый тип
ComplicationData
теперь поддерживаетSmallImages
. - Мы добавили
ComplicationDisplayPolicy
, гдеDO_NOT_SHOW_WHEN_DEVICE_LOCKED
инструктирует совместимое лицо часов, чтобы не отображать осложнение, когда устройство заблокировано. - Из Android T, OEM -производители смогут определить, является ли запрос на осложнение от часа в списке, определенном
android.support.wearable.complications.SAFE_WATCH_FACES
Metadata в манифесте их поставщика с помощью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-бета02
6 сентября 2023 г.
androidx.wear.watchface:watchface-*:1.2.0-beta02
выпускается. Версия 1.2.0-бета02 содержит эти коммиты.
Новые возможности
-
SuspendingComplicationDataSourceService#onDestroy
теперь открыт. Обратите внимание, что поддержка системы по умолчанию по умолчанию было удалено.
API меняется
- Верните «разоблачить новый источник данных для погодных осложнений». ( I6f335 )
Версия 1.2.0-бета01
23 августа 2023 г.
androidx.wear.watchface:watchface-*:1.2.0-beta01
выпускается. Версия 1.2.0-бета01 содержит эти коммиты.
Новые возможности
- От Android T, WoroS теперь поддержит осложнение системы погоды по умолчанию.
API меняется
- Добавьте погоду системы по умолчанию для осложнений. ( IA0994 )
- Этот патч добавляет
WatchFaceRuntimeService
иWatchFaceControlClient.createWatchFaceRuntimeControlClient
вместе с обертками гуавы. Они добавляют поддержку для пробежки для часов, которые представляют собой особый вид часов, который загружает его определение из другого пакета. В настоящее время Foros поддерживает только время выполнения для формата Android Watch Format . ( I2799f ) - Этот патч представляет собой продолжение AOSP/2636578 , где мы переименуют INT DEF, поэтому любой код в зависимости от
WatchFaceType
,CanvasType
,TapType
илиComplicationsSlotBoundsType
не нужно меняться. ( I4098b ) - Обновлены файлы API для аннотирования подавления совместимости. ( I8e87a , b/287516207 )
- This patch exposes
WatchFaceType
constants inWatchFaceTypes
,CanvasType
constants inCanvasTypes
,TapType
constants inTapTypes
andComplicationsSlotBoundsType
constants inComplicationsSlotBoundsType
. ( I3b85a , b/288750666 ) -
WatchFace.OverlayStyle
has very low usage and is not well supported by OEMs so we're depreciating it with intention to remove it at a later date. ( I7344a )
Version 1.2.0-alpha09
June 21, 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha09
is released. Version 1.2.0-alpha09 contains these commits.
Новые возможности
-
RangedValueComplicationData.Builder
now acceptsDynamicFloat
, and a newDynamicComplicationText
is available as a subclass ofComplicationText
, both of which can utilize dynamic expressions as well as platform bindings that are updated at 1hz on supported Wear 4 devices.
API Changes
- Added dynamic types for daily distance, daily calories and daily floors. Keys for platform health sources are now under
PlatformHealthSources.Keys
( Ib7637 ) - Implement
PlatformDataProvider
to provide heart rate and daily steps.SensorGateway
interface is removed from public API. ( I55b84 ) - Rename
StateEntryValue
toDynamicDataValue
, and update the state APIs to use theDynamicDataKey
. ( If1c01 ) - Add
AppDataKey
for accessing app pushed state; AddPlatformDataKey
for accessing platform data; Add namespace support inStateStore
. ( I7985e ) -
enable
/disablePlatformSource
methods have been removed fromDynamicTypeEvaluator
. The caller should be responsible for updates. ( I78c6d ) - Allow capping the size of bound data types. ( Ie2966 )
Версия 1.2.0-Alpha08
19 апреля 2023 г.
androidx.wear.watchface:watchface-*:1.2.0-alpha08
is released. Версия 1.2.0-Alpha08 содержит эти коммиты.
Новые возможности
- From Android T, complication providers with the privileged
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
may registerandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
metadata which overridesandroid.support.wearable.complications.SUPPORTED_TYPES
for safe watch faces. This means a complication provider may choose to serve different types to trusted vs untrusted watchfaces.
API Changes
- Propagation of
@Deprecated
class to property ( I882d1 , b/271441831 ) - Value parameter name for
Enum.valueOf
changed ( Ia9b89 ) - More thrown exceptions from enum valueOf ( I818fe )
- We've removed
renderWatchFaceToSurface
in favour ofcreateRemoteWatchFaceView
which is built on top of SurfaceControlViewHost and allows the caller to embed a view from the watch face, which is rendered when the client callsRemoteWatchFaceViewHost#renderWatchFace
. ( Ib311d ) - We've added
renderWatchFaceToSurface
toInteractiveWatchFaceClient
,HeadlessWatchFaceClient
andEditorSession
. Typically this will be more performant than rendering to a bitmap. ( Ieacad ) -
ObservableStateStore
has been rename toStateStore
. ( Ieb0e2 ) - Added
DynamicTypeEvaluator.Builder
instead of constructor arguments to allow more optional arguments, includingObservableStateStore
which now defaults to an empty store. ( I6f832 ) - Refactored order of parameters in
DynamicTypeEvaluator
. ( Ic1ba4 ) - Executor has been added to the
DynamicTypeEvaluator.bind
methods. ( I346ab ) - We have added
startEvaluation
method to theBoundDynamicType
to trigger the evaluation after dynamic type is bound. ( I19908 ) - Complication providers with the privileged
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
may registerandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
metadata which overridesandroid.support.wearable.complications.SUPPORTED_TYPES
for safe watch faces. ( Id1c73 ) - We've renamed
CustomValueUserStyleSettings2
toLargeCustomValueUserStyleSettings
. ( Ic17ac )
Исправления ошибок
-
DynamicTypeValueReceiver#onPreUpdate
has been removed. ( I2dc35 )
Версия 1.2.0-Alpha07
February 22, 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha07
is released. Версия 1.2.0-Alpha07 содержит эти коммиты.
Новые возможности
From Android T, OEMs will be able to determine if a complication request is from a watch face in the list defined by the
android.support.wearable.complications.SAFE_WATCH_FACES
metadata in their provider's manifest byComplicationRequest#isForSafeWatchFace
. The provider will need thecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
permission to receive anything other thanTargetWatchFaceSafety.UNKNOWN
.Also from Android T
CustomValueUserStyleSetting2
is available for use which can hold up to 12.5kb. The previous limit forCustomValueUserStyleSetting
was 1kb. Despite the increased size limits, watch face developers are encouraged to keep the data small because the settings get sent over bluetooth during editing and bluetooth bandwidth is limited.
API Changes
- We've added an optional parameter
eglContextAttribList
toGlesRenderer
&GlesRenderer2
which allows you to set theEGL14.EGL_CONTEXT_CLIENT_VERSION
passed toEGL14.eglCreateContext
. ( I2a83e ) - We've migrated watch face libs over to
androidx.core.util.Consumer
instead ofjava.util.function.Consumer
. ( I273f5 ) - More thrown exceptions from KT property accessors ( Iff9d9 )
- We've added
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
so that the client can determine if it has to emulate support or not on behalf of old watch faces. ( I24c89 ) - We've decided that
isForSafeWatchFace
should be a tri-stateIntDef
. ( Ief2f7 ) - For android T we've introduced
ComplicationRequest.isForSafeWatchFace
which is intended for OEM use and it requirescom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. For data sources in the system image, this will return true if the requesting watch face is inside the list of safe watchfaces specified by the data source in it's manifest. ( I0cbb6 ) - For android T we've added
CustomValueUserStyleSetting2
which can hold up to 12.5kb. The previous limit forCustomValueUserStyleSetting
was 1kb. ( I0b100 )
Version 1.2.0-alpha06
25 января 2023 г.
androidx.wear.watchface:watchface-*:1.2.0-alpha06
is released. Version 1.2.0-alpha06 contains these commits.
Новые возможности
- Work is ongoing to add support for complication platform bindings, this isn't ready for use yet, but stay tuned!
- We've added XML
ComplicationSlot
support for the new complication types, GOAL_PROGRESS and WEIGHTED_ELEMENTS.
Исправления ошибок
- Fixes a leak where the watch face editor was not properly released on Samsung devices. ( 3b5987 )
- Fixes a bug where sometimes the complications didn't display properly when switching between a watch face with multiple favorites. ( b38ece )
- Fixes a serialization bug with perOptionScreenReaderNames that lead to watch face crashes. ( e9f466 )
Version 1.2.0-alpha05
7 декабря 2022 г.
androidx.wear.watchface:watchface-*:1.2.0-alpha05
is released. Version 1.2.0-alpha05 contains these commits.
Новые возможности
A while back we added support for hierarchical
UserStyleSettings
, and from android T it's now possible to have more than oneComplicationSlotsUserStyleSetting
in a hierarchy. Only oneComplicationSlotsUserStyleSetting
will be active, based on the user's style selections.We're improving screen reader support for
ListOption
andComplicationSlotsOption
by adding ascreenReaderName
field, note prior to android T this field will be ignored by companion editors.
API Changes
- We've added a new optional
screenReaderName
field toListOption
andComplicationSlotsOption
for use by editors - will be ignored by companion editors on devices before android T. ( I75326 ) - From android T multiple
ComplicationSlotsUserStyleSettings
are now supported in a style hierarchy as long as at most only one of them can be active at any one time. We've added a utility functionfindComplicationSlotsOptionForUserStyle
toUserStyleSchema
to help find the activeComplicationSlotsOption
if any. ( Ic2b06 ) -
RangedValuesTypes
have been pulled intoRangedValueComplicationData
's companion object and renamed toTYPE_UNDEFINED
,TYPE_RATING
and a newTYPE_PERCENTAGE
has been added. ( I55d02 ) - We've renamed experimental
DynamicFloat
toFloatExpression
and marked it as@hide
. ( Idf4f1 ) - Adding
@JvmDefaultWithCompatibility
annotation ( I8f206 )
Version 1.2.0-alpha04
9 ноября 2022 г.
androidx.wear.watchface:watchface-*:1.2.0-alpha04
is released. Version 1.2.0-alpha04 contains these commits.
Новые возможности
- For Android T we've added support for two new complication types,
GoalProgressComplicationData
andWeightedElementsComplicationData
. -
GoalProgressComplicationData
is similar toRangedValueComplicationData
but it's value is allowed to go past the target (forRangedValueComplicationData
the value is clamped to the range [min .. max]) which has implications for visual design that might not suit all watch faces. -
GoalProgressComplicationData
adds support for pie charts and similar breakdowns of simple data. - We've added optional support for
ColorRamps
toRangedValueComplicationData
. - For Android T, We've added
ComplicationPersistencePolicy
andsetCachePolicy
toComplicationData
which currently allows a provider to control whether a complication is persisted or not (ie whether it's cached past reboot). Most complications won't need to set cache control, but doing so can fix corner cases with stale data for some complications that update frequently (eg health data complications). We've also addedComplicationDisplayPolicy
whereDO_NOT_SHOW_WHEN_DEVICE_LOCKED
instructs a compatible watch face to not display the complication when the device is locked. ( Ic9574 )
API Changes
-
GoalProgressComplicationData
,WeightedElementsComplicationData
andColorRamp
are no longer experimental. ( Ica9e2 ) -
ComplicationPersistencePolicy
andComplicationDisplayPolicy
are now properly marked as T APIs. ( I31d88 ) - The deprecated
ComplicationSlotOverlay
constructor now hasDeprecationLevel.WARNING
allowing it to be called from java once again. ( Ib308c ) - We've fixed some java compat issues with
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
andInteractiveWatchFaceClient
by annotating them with@JvmDefaultWithCompatibility
( Id94fc ) - We've removed experimental
ProtoLayoutComplicationData
andListComplicationData
. The developer story for these was unclear, we hope to revisit in future. ( I9df05 ) - We've added a
ValueType
back toRangedValueComplicationData
.WeightedElementsComplicationData
now supports a background color. We've removedDiscreteRangedValueComplicationData
because it's functionality is a subset ofWeightedElementsComplicationData
. ( I6446c )
Исправления ошибок
- Include the
isForScreenShot
in the equals and hash code. Make sure theonRenderParametersChanged
gets a correctisForScreenshot
value ( I04a41 ) - Fixed leaks of
WatchFaceControlService
from headless clients. ( e90e00 )
Version 1.2.0-alpha03
5 октября 2022 г.
androidx.wear.watchface:watchface-*:1.2.0-alpha03
is released. Version 1.2.0-alpha03 contains these commits.
Новые возможности
- No new features, but we have fixed a couple of watch face editor bugs.
API Changes
- Deprecated
UserStyleSchema.userStyleSettings
asrootUserStyleSettings
become non-experimental ( Ie96e3 ) - Move
rootUserStyleSettings
out of experimental ( I8d6b3 ) - We've marked
WatchFaceColors
as experimental because it is not supported by all systems ( I6d75d ) - Expose
DisconnectReasons
in the public API to make it work withIntDef
. ( I791f8 )
Исправления ошибок
- Close any open on watch editor if
SysUI
dies. IfSysUI
dies and the on watch face editor doesn't close, the watch face could be left in an inconsistent state because the system relies onSysUI
to persist any user style changes.( ba762a - Fix a memory leak in
ComplicationDataSourceInfoRetriever
, where a kotlin coroutine continuation was acting as a gc root and retaining the editor activity.( 33ee06 )
Version 1.2.0-alpha02
21 сентября 2022 года
androidx.wear.watchface:watchface-*:1.2.0-alpha02
is released. Version 1.2.0-alpha02 contains these commits.
Новые возможности
Some watch faces have configuration outside of the
UserStyle
that affects it visually, (eg selecting a background photo). We've addedRenderer.sendPreviewImageNeedsUpdateRequest
which allows the watch face to request an updated preview image. Note this requires a corresponding system up date to work.We've also added an API for watch faces to expose their colors to the system which may choose its color palette based on this. Note that this has been made experimental in a follow on patch.
Just about every type of
ComplicationData
now supportsSmallImages
.
API Changes
- Wallpaper manager can sometimes detach from an engine and make another. We've added a
DisconnectReason
int def and extendedClientDisconnectListener
with a new method which includes aDisconnectReason
, allowing the listener to observe engine detaches. ( I45cce ) - Added two optional parameters
nameResourceId
andscreenReaderResourceId
toComplicationSlotOverlay
constructor ( I157e8 ) - We've added a guava wrapper for the new overload of
getOrCreateInteractiveWatchFaceClient
with aPreviewImageUpdateRequestedListener
. ( Ic31f0 ) - We've added
Renderer.sendPreviewImageNeedsUpdateRequest
which is useful for watch faces that have state outside of theUserStyleSchema
which affects the way they look (eg a watch face with a selectable background image). On the client side we've addedPreviewImageUpdateRequestedListener
as an optional parameter togetOrCreateInteractiveWatchFaceClient
to observe these requests. ( Iff44a ) - We've simplified the API for exposing
WatchFaceColors
, now there's a simple property calledwatchFaceColors
on the Renderer which the watch face can set, this should be updated as necessary in response to any style changes. Instead of usingWallpaperManager
to observe color changes, we've addedOnWatchFaceColorsListener
toInteractiveWatchFaceClient
. ( I490bc ) - We've added a
WatchFaceColors
class which holds the three most prominent watch face colors and added open methodswatchfaceColors
¬ifyWatchFaceColorsChanged
to the Renderer, these allow the system to obtain the colors of the watch face viaWallpaperManager.getWallpaperColors
. ( I3d611 ) -
ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(and experimentalDiscreteRangedValueComplicationData
,GoalProgressComplicationData
andWeightedElementsComplicationData
) now all supportSmallImages
. If a watch face chooses to render a complication with multiple colors, it now has the option to use a multi-coloredSmallImage
where previously it would have had to use a monochromatic image. ( I257df ) - Refactor
PreviewImageUpdateRequestedListener
to be aConsumer<>
instead ( Ia875d ) - Replace custom Single Abstract Method (SAM) type
OnWatchfaceColorsListener
with generic Java SAM type (Consumer) ( I0c489 ) - We've deprecated the old
getOrCreateInteractiveWatchFaceClient
andlistenableGetOrCreateInteractiveWatchFaceClient
methods that don't specify aPreviewImageUpdateRequestedListener
. ( Iec502 )
Исправления ошибок
-
DisconnectReason.BINDER_DIED
has been renamed toDisconnectReason.ENGINE_DIED
. ( I4eb0e )
Version 1.2.0-alpha01
August 10, 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha01
is released. Version 1.2.0-alpha01 contains these commits.
Новые возможности
- We've added experimental support for various new complication formats. This is an area of active development; these new formats are subject to change without notice and currently there's no renderer support from
CanvasComplicationDrawable
. - We've also added optional margins to complication slots which make small complications easier to tap on.
API Changes
- The experimental
BoundingArc
class is now immutable. ( If624a ) - Small complications can be tricky to tap on. To help mitigate this, we've introduced support for margins which increase the tappable area without affecting rendering. Unless specified (either in code or via XML)
ComplciationSlots
have zero sized margins. ( I14089 ) - Changed
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
signature to return a non-null factory instance. It was an error to return null before, so this is just making the API contract clearer. ( I0fcc0 ) - We've added
currentUserStyleRepository
argument to theWatchFaceService.getComplicationSlotInflationFactory
method to be consistent withcreateComplicationSlotsManager
. ( I2ddd2 ) -
UserStyleFlavors
have become non-experimental feature. ( I69cdc ) - We have removed the experimental
ValueType
fromRangedValueComplicationData
and instead introduced experimentalDiscreteRangedValueComplicationData
which is likeRangedValueComplicationData
except for integer range & value. We've also introduced experimentalGoalProgressComplicationData
which is similar toRangedValueComplicationData
except it's for progress towards a goal where min implicitly is zero, and the value is allowed to be larger thantargetValue
. Note for allRangedValue
variants at least one of monochromeImage, text or title must be specified. ( I9590c ) - We removed
boundsWithMargins
fromComplicationSlotState
because system software doesn't have a use case for it. ( I42e26 ) - We've added experimental support for
WeightedElementsComplicationData
which consists of an array of Elements (pairs of weight and color) along with optional text/title/image. These might be displayed as a pie chart where the colors need to be meaningful given the context, since there typically isn't room in a complication to render labels. ( I87eea ) - The experimental
ColorRamps
optionally used byRangedValueComplicationData
andGoalProgressComplicationData
now allow you to specify a sequence of up to seven colors and a flag stating whether the colors should be smoothly tweened or whether equal sized solid steps of color should be rendered. ( I9f5bf ) -
RangedValueComplicationData.drawSegmented
has been changed tovalueType
which is an int with a correspondingValueType IntDef
which provides semantic meaning to the ranged value and may be used by the complication renderer to influence styling. ( I0616b ) - We've added experimental support for optional
ColorRanges
toRangedValueComplicationData
. Normally complications would be rendered in colors of the watch face's choosing, but sometimes theComplicationDataSource
is best placed to set the colors eg when they have a particular semantic meaning. Eg red to blue for temperature. ( I5153a ) - We've added an experimental
drawSegmented
hint toRangedValueComplicationData
. This signals renderers to draw the ranged value indicator with segments, where 1 segment = 1 unit. ( I7d7c1 )
Исправления ошибок
- We've added the ability to define
ComplicationSlotBounds
relative to a predefined screen coordinate system. ( I0985d )
Version 1.1
Version 1.1.1
August 10, 2022
androidx.wear.watchface:watchface-*:1.1.1
is released. Version 1.1.1 contains these commits.
- This is a bug fix release and users of version 1.1.0 are strongly encouraged to upgrade.
Исправления ошибок
Watch face initialization is asynchronous and if a complication is received before the watch face is ready it gets put on the
pendingInitialComplications
list and is applied later. UnfortunatelypendingInitialComplications
was applied too soon which meant there was a window of time during watch face initialization where complications would still get put onpendingInitialComplications
and be ignored. This has now been fixed. In addition This patch fixes a bug whereComplicationRenderer
was wrongly trying to load placeholders asynchronously, which failed leading to the compilation graphic never updating. Finally this patch fixes a hopefully theoretical bug where multiplependingInitialComplications
need to be merged. ( 0d03ba3 )Fix potential deadlock in
InteractiveInstanceManager
wheregetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
was holding the lock longer than necessary. Usually we'd expectengine.setUserStyle
to 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 theStateFlows
can retainWatchFaceService
, canceling the underlyingCoroutineScopes
fixes that.( fd48138 )Add timeouts to
awaitDeferredWatchFace
* and fixwatchfaceOverlayStyle
NullPointerException
. In normal circumstances this shouldn't timeout including after fresh install andDirectBoot
scenarios where the CPU load is high. We've also fixed a NPE ifgetWatchfaceOverlayStyle
is called afterclose()
.( a4c3a5a )
Version 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
ComplicationSlots
for 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
ComplicationType
for the primary and secondary data sources, giving developers more flexibility for the out of box experience. - We added
ComplicationDataTimeline
which 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
ComponentName
of the complication provider is part of theComplicationData
. - Complications are now cached which provides a better experience when switching between watch faces.
Other changes:
- The
UserStyleSchema
andComplicationSlots
can 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
ComplicationSlotBounds
and supporting references. Experimentation with edge complicationBoundingArc
continues, plumbing it through todrawHighlight
although it's not recommended for use at that time.
API Changes
- We've added an experimental overload of
drawHighlight
which accepts aBoundingArc
parameter. ( 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
ComplicationSlotBounds
incenter_x
,center_y
,size_x
,size_y
form. Now it is also possible to use different units (ie dp) using resource references. ( Iace98 )
Исправления ошибок
- Fix
runBlockingWithTracing
which was running tasks on the wrong context.( 4f595fe ) - Make
BaseEditorSession.close
synchronous. The problem withBaseEditorSession.close
being asynchronous is that we release theComplicationDataSourceInfoRetriever
too 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
ComplicationData
types, these are not yet ready for use but watch this space.
API Changes
- We've added
BoundingArc
, an experimental class that describes the geometry of an edge complication slot. This has been added toComplicationSlot
and plumbed through toComplicationSlotState
andWatchFaceMetadataClient
. ( I61a40 ) - We've added the ability to inherit settings in
UserStyleSetting
XML. 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's
manifest. ( I1811c )
Исправления ошибок
- Fix serialization of
TimeLineEntry
type. We were not serializing theTimeLineEntry
type which meant cachedTimeLineEntries
of 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
setComplicationData
dropped timeline fields( fb392f5 ) - Fixes a bug where very occasionally
runBlockingWithTracing
would lead to an NPE( 12ca62e ) - Fixes a bug where we sometimes get
ClassNotFoundException: android.support.wearable.complications.ComplicationText
when receiving a complication.( 217942d9 ) - Fixes a bug in
GlesRenderer.backgroundThreadInitInternal
where it was only callingonBackgroundThreadGlContextCreated
ifEGL14.eglCreateContext
was called. Fixes another bug where there was a visual glitch in the screenshot caused byverticalFlip
.( c674ad2 ) - Fix
WatchFaceService
XML 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
NoDataComplication
data 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 Changes
- Now
WatchFaceMetadataClient
methods (getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) andHeadlessWatchFaceClient.getUserStyleFlavors
throw unchecked RuntimeException instead ofWatchFaceException
. ( I0718a ) -
WatchFaceMetadataClient.WatchFaceException
has been moved out of the class to allow it to be reused. ( I4e869 )
Исправления ошибок
-
WatchFaceMetadataClient
will no longer crash when sent partialComplicationSlotBounds
.( Iaafd )
Version 1.1.0-alpha05
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
ComplicationData
by inspectingComplicationData.dataSource
, some watch faces may use this to customize complication display. ( I44a73 )
API Changes
-
Renderer.CanvasRenderer
andRenderer.GlesRenderer
have been deprecated in favor ofRenderer.CanvasRenderer2
andRenderer.GlesRenderer2
which supportSharedAssets
which are passed to the render methods. For java interop we've introducedListenableCanvasRenderer2
andListenableGlesRenderer2
. ( I31ffa ) - Added
@WatchFaceFlavorsExperimental
ability to define flavors - preconfigured list of styled watchfaces ( I04dd0 ) -
Renderer.sharedAssets
is now a StateFlow and we've removed the unusedRenderer.SharedAssetsFactory
( I12ac5 ) -
UserStyleSchema.userStyleSettings
is not deprecated anymore ( Iba7e3 ) - We've added
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
which allows aHeadlessWatchFaceClient
to avoid the relatively low overhead of passing the schema over AIDL before computing the digest hash. ( I33597 ) - We've added
isUserStyleSchemaStatic
toWatchFaceMetadataClient
which is true if and only if theUserStyleSchema
can be relied on not to change unless the watch face APK is updated. ( I45a3f ) - We have added
getDigestHash
toUserStyleSchema
which computes a digest hash of the schema. This can be used to efficiently determine if theUserStyleSchema
has changed. ( I2063d ) -
METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
renamed toMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
( I9ba5d ) -
UserStyleSetting.OnWatchEditorData
has been renamed toUserStyleSetting.WatchFaceEditorData
, it contains data that's used purely by the on watch face editor. ( If3afb )
Version 1.1.0-alpha04
9 марта 2022 г.
androidx.wear.watchface:watchface-*:1.1.0-alpha04
is released. Version 1.1.0-alpha04 contains these commits.
API Changes
- Up to date
ComplicationData
may not always be available (eg expired cached ComplicationData) so we've extendedNoDataComplication
with an optional placeholder ComplicationData and addedComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
which are only allowed to be used inside the context of aNoDataComplicationData
placeholder. If selected these placeholders are suggested to be rendered with gray boxes/arcs. ( I6285d ) - We've added
ComplicationData.getNextChangeInstant
which 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.watchFaceId
can now be used on all API levels. In addition its value will now always be consistent withWatchState.watchFaceInstanceId
. ( I323b9 ) - The
getPendingIntentForTouchEvent
API 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 forPendingIntents
to fire, even if the home button has recently been pressed. ( I1f2e8 ) - We've added
RendererParameters.isForScreenShot
which 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
WatchFaceExceptionReason
toWatchFaceException
to give some context to what went wrong. ( I01d15 ) -
ComplicationDataSourceService.onImmediateComplicationRequest
has been removed, insteadComplicationRequest.immediateResponseRequired
has 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_UPDATE
permission. ( 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
February 9, 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha03
is released. Version 1.1.0-alpha03 contains these commits.
API Changes
- 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.OverlayStyle
which allows the watch face to configure the rendering of the system status overlay. ( I8520d ) - We've introduced
clearWithBackgroundTintBeforeRenderingHighlightLayer
a 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_SUPPORTED
metadata 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.SharedAssets
which allows a watch face renderer to share immutable data (eg textures and shaders) between instances.GlesRenderer.setEglConfig
andGlesRenderer.setEglDisplay
are 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.Builder
and 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.getUserStyleSchema
andgetComplicationSlotMetadataMap
now throwWatchFaceException
instead ofRemoteException
. ( I86f11 ) -
onSynchronousComplicationRequest
and related functions inComplicationDataSourceService
have been renamed toonImmediateComplicationRequest
etc... ( 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
@JvmOverloads
to 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
PhotoImageComplicationData
tapAction not being correctly handled ( I1cc30 )
Version 1.1.0-alpha02
January 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,
ComplicationData
and related subclasses now have overridden hashcode, equals and toString methods making them easier to work with.
API Changes
-
WatchfaceMetadataClient
methods once again throwRemoteExceptions
where appropriate, making it easier for client code to catch errors from the watch face. ( I78785 ) -
ComplicationData
and sub classes now have hashcode, equals and toString. ( I24bc6 )
Version 1.1.0-alpha01
December 15, 2021
androidx.wear.watchface:watchface-*:1.1.0-alpha01
is released. Version 1.1.0-alpha01 contains these commits.
Новые возможности
The
UserStyleSchema
andComplicationSlots
can now be defined in XML. This simplifies watch face construction. In addition,WatchFaceMetadataClient
queries are faster because it doesn't need to bind to the service to get the metadata. TheWatchFaceMetadataClient
andListenableWatchFaceMetadataClient
are 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
.ComplicationData
is now being cached to allow complications to be displayed immediately upon loading. SometimesComplicationData
is 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.tapActionLostDueToSerialization
will returntrue
and 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 updatedComplicationData
with atapAction
as soon as possible.Some
ComplicationData
shouldn'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-gatedComplicationData
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.ComplicationRequestListener
has been extended with a new methodonComplicationDataTimeline
which you can use to return this data.DefaultComplicationDataSourcePolicy
has been extended so you can specify theComplicationType
for 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
PendingIntentTapListener
changes 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 Changes
-
ComplicationData.isCached
has been changed totapActionLostDueToSerialization
which is more useful when determining if the complication slot should be rendered differently to signal that it can't be tapped. ( I6de2f ) - Added
ComplicationDataTimeline
towear-complication-data-source
. This can be used to provide a sequence of time-gatedComplicationData
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.ComplicationRequestListener
has been extended with a new methodonComplicationDataTimeline
which you can use to return this data. There's a new kotlin wrapperSuspendingTimelineComplicationDataSourceService
for suspending data source services. ( Idecdc ) - Added
PendingIntentTapListener
andWatchFaceControlClient.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
ComplicationData
cache. 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.hasComplicationCache
intended for OEMs. This may influence the system's strategy for sending complications to a watch face. In addition,ComplicationData
has anisCached
property and it is recommended that cached complications are rendered differently because thetapAction
can not be cached and will benull
in 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
DefaultComplicationDataSourcePolicy
with the ability to set the defaultComplicationTypes
for the primary, secondary provider and for the fallback system provider.ComplicationSlot.defaultDataSourceType
is now deprecated. ( If0ce3 ) -
ComplicationSlot.configExtras
is now mutable and can be updated before callingEditorSession.openComplicationDataSourceChooser()
. ( I6f852 ) - Added
WatchFace.setComplicationDeniedDialogIntent
andsetComplicationRationaleDialogIntent
. 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
UserStyleSchema
andComplicationSlots
can now be defined in XML. This simplifies watch face construction and makesWatchFaceMetadataClient
queries faster as they do not need to bind to the service to get the metadata. ( I85bfa ) - Added
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
so a client can determine if a watch face supportsgetPendingIntentForTouchEvent
. ( I0b917 ) -
WatchFaceMetadataClient
andListenableWatchFaceMetadataClient
are 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_SECONDS
metadata tag in its manifest and overrideonSynchronousComplicationRequest
. Depending on the nature of the data source, it may also need to overrideonStartSynchronousComplicationRequests
andonStopInteractiveComplicationRequests
to get notifications of when the complication enters and exits interactive mode. ( I8fe9d )
Version 1.0
Version 1.0.1
February 9, 2022
androidx.wear.watchface:watchface-*:1.0.1
is released. Version 1.0.1 contains these commits.
Исправления ошибок
- Fixes bug with
PhotoImageComplicationData
tapAction not being correctly handled ( I1cc30 )
Version 1.0.0
December 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.onDestroy
on the UI thread ( I83340 ) - Fix several problems with broadcast receivers ( I7d25f )
Version 1.0.0-rc01
November 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 )
Version 1.0.0-beta01
October 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 Changes
- Classes in package
androidx.wear.watchface.complications
have been moved into a newwear:watchface:watchface-complications
project. Note this means you can't include this library as well as any previous alpha version ofwear:watchface:watchface-complications-data
because you'll get errors about duplicate classes. ( I97195 ) - Renderer.dump has been renamed to Renderer.onDump and has been annotated with @UiThread. ( I44845 )
-
InteractiveWatchFaceClient.addWatchFaceReadyListener
has been renamed toaddOnWatchFaceReadyListener
andremoveWatchFaceReadyListener
has been renamed toremoveOnWatchFaceReadyListener
. ( I48fea ) - EditorSession
getComplicationsPreviewData
andgetComplicationsDataSourceInfo
are no longer suspend functions, instead they areStateFlow<>
properties whose value is initially null. In ListenableEditorSessiongetListenableComplicationPreviewData
andgetListenableComplicationsProviderInfo
have 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.asLiveData
to convert toLiveData<>
. ( Ic5483 )
Version 1.0.0-alpha23
September 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 Changes
- Migrate the separate
androidx.wear
Watchface and complications libraries intoandroidx.wear.watchface
library 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 )