Wear Watchface
Remarque : Le format de cadran est obligatoire pour que les cadrans puissent être installés sur les appareils sur lesquels Wear OS 5 est préinstallé à partir du 10 juillet 2024, et pour tous les nouveaux cadrans publiés sur Google Play à partir du 27 janvier 2025.
Pour en savoir plus sur les modifications visibles par les utilisateurs, consultez cet article du Centre d'aide.
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
18 septembre 2024 | 1.2.1 | - | - | 1.3.0-alpha04 |
Déclarer des dépendances
Pour ajouter une dépendance sur Wear, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle
de votre application ou de votre module :
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" }
Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez les documents sur l'outil Issue Tracker.
Version 1.3
Version 1.3.0-alpha04
18 septembre 2024
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha04
. La version 1.3.0-alpha04 contient ces commits.
Nouvelles fonctionnalités
- Ajout de la prise en charge du chargement paresseux des icônes dans
UserStyleSettings
etUserStyleOptions
, ce qui améliore les performances de chargement des cadrans. (Iaf43d) - Ajout d'une option permettant de prendre une capture d'écran mise à jour chaque fois que la configuration système change (par exemple, si les paramètres régionaux ont changé) via le nouveau
Watchface.setUpdateScreenshotOnConfigurationChange
. Par défaut, ce paramètre est désactivé. (I765a1)
Correction de bugs
- Suppression de la description manuelle de l'accès aux nouvelles API de la plate-forme, car cela se produit automatiquement via la modélisation d'API lorsque vous utilisez R8 avec AGP 7.3 ou version ultérieure (par exemple, R8 version 3.3) et pour tous les builds lorsque vous utilisez AGP 8.1 ou version ultérieure (par exemple, D8 version 8.1). Les clients qui n'utilisent pas AGP sont invités à passer à la version 8.1 de D8 ou ultérieure. Consultez cet article pour en savoir plus. (Ia60e0, b/345472586)
Version 1.3.0-alpha03
17 avril 2024
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha03
. La version 1.3.0-alpha03 contient ces commits.
Modifications apportées à l'API
- Nous avons ajouté
EditorSession#setOverrideComplications
, qui définit temporairement leComplicationData
de l'instance de cadran sous-jacente lors de la modification. Si les complications changent rarement, cette méthode est plus efficace que de transmettre des forçages viaEditorSession#renderWatchFaceToBitmap
. (I19384)
Correction de bugs
- Auparavant,
selectComplicationDataForInstant
appelaittoApiComplicationData
pour toutes les chronologies, ce qui signifiait que le test d'égalité de référence === échouait toujours. Cela signifie que les complications étaient rechargées à chaque frame, ce qui entraînait une décharge de la batterie. (717406)
Version 1.3.0-alpha02
3 avril 2024
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha02
. La version 1.3.0-alpha02 contient ces commits.
Nouvelles fonctionnalités
- Nous utilisons désormais l'égalité de référence pour comparer "best" et
selectedData
, car l'opérateur d'égalité est coûteux. (446b00)
Modifications apportées à l'API
- Nous avons ajouté une API dynamique sans remplacement pour
GoalProgressComplicationData
. (c33264)
Version 1.3.0-alpha01
7 février 2024
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha01
. Liste des commits de la version 1.3.0-alpha01
Nouvelles fonctionnalités
- Les
WatchFaceServices
peuvent être initialisés simultanément et doivent donc être sans état. Pour ce faire, nous avons ajoutéStatefulWatchFaceService
, dans lequel un élément supplémentaire défini par l'utilisateur créé parcreateExtra()
est transmis à tous les forçages appelés lors de l'initialisation. GlesRenderer2
dispose désormais d'une surcharge de constructeur qui vous permet de spécifier une liste d'attributs à essayer à tour de rôle aveceglChooseConfig
.
Modifications apportées à l'API
StatefulWatchFaceService
prend désormais en charge un forçage degetComplicationSlotInflationFactory
dans lequel l'extra défini par l'utilisateur créé parcreateExtra()
est transmis. (I82d9f)- Certains cadrans doivent partager les données auxiliaires créées lors de
createUserStyleSchema
avec les autres méthodes d'initialisation. Comme il n'existait pas de meilleure alternative, les développeurs ont généralement rendu leurWatchFaceServices
avec état. Cette pratique est dangereuse, car plusieurs instances peuvent être créées simultanément, ce qui peut entraîner des bugs. Pour résoudre ce problème, nous avons introduitStatefulWatchFaceService
etStatefulWatchFaceRuntimeService
, où un type défini par l'utilisateur est créé parcreateExtra()
et transmis aux différentes méthodes de création en tant que paramètre. (If8a99) - Nous avons ajouté
getUserStyleFlavors
àInteractiveWatchFaceClient
, qui intéresse principalement les OEM. (I0f5d8) GlesRenderer2
dispose désormais d'une surcharge de constructeur qui vous permet de spécifier une liste d'attributs à essayer à tour de rôle aveceglChooseConfig
. Cela vous permet, par exemple, d'essayer d'abord une configuration avec anticrénelage, puis de revenir à une configuration sans anticrénelage si nécessaire. (I1ba74)- À partir d'Android U, la prise en charge de
SystemDataSources.DATA_SOURCE_HEART_RATE
sera ajoutée à Wear OS. Cette complication n'est compatible qu'avec les complicationsSHORT_TEXT
, mais il est recommandé queComplicationSlot
accepte égalementSMALL_IMAGE
, car les OEM peuvent choisir de diffuser un raccourci vers leur application de santé au lieu de la valeur en temps réel. (I34223) - Nous avons ajouté
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
, qui, à partir d'Android U, contrôle ce qui se passe lorsque le système est restauré à partir d'une sauvegarde pour la source de données de complication avecMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
. Par défaut, le système suppose que le service de source de données de complication prend en charge la sauvegarde de toutes les données de configuration. Si ce n'est pas le cas, il peut définir le paramètre de métadonnéesMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
sur "false", ce qui marquera l'emplacement de la complication comme non configuré. (I6c505)
Version 1.2
Version 1.2.1
24 janvier 2024
Publication d'androidx.wear.watchface:watchface-*:1.2.1
. Liste des commits de la version 1.2.1
Correction de bugs
- Correction d'un plantage sur les Samsung Galaxy Watch 4, 5 et 6. (43f0b0)
Version 1.2.0
29 novembre 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0
. Liste des commits de la version 1.2.0
Changements importants depuis la version 1.1.0
- Nous avons ajouté la prise en charge de nouveaux types de complications disponibles à partir d'Android T :
GoalProgressComplicationData
, qui est semblable àRangedValueComplicationData
, à la différence qu'elle vise à atteindre un objectif où la valeur minimale est implicitement égale à zéro et la valeur peut être supérieure àtargetValue
.WeightedElementsComplicationData
, qui consiste en un tableau d'éléments (paires de couleurs et d'épaisseurs) ainsi que du texte/titre/image (facultatif). Ils peuvent s'afficher sous forme de graphique à secteurs, dans lequel les couleurs doivent être pertinentes compte tenu du contexte, car il n'y a généralement pas assez de place dans une complication pour afficher les libellés.
- Nous avons ajouté la compatibilité facultative pour
ColorRanges
dansRangedValueComplicationData
. Normalement, les complications doivent s'afficher dans les couleurs choisies pour le cadran, mais parfois,ComplicationDataSource
est mieux placé pour définir les couleurs, par exemple lorsqu'elles ont une signification sémantique particulière. Par exemple, du rouge au bleu pour la température. - Presque tous les types de
ComplicationData
acceptent désormaisSmallImages
. - Nous avons ajouté
ComplicationDisplayPolicy
oùDO_NOT_SHOW_WHEN_DEVICE_LOCKED
indique à un cadran compatible de ne pas afficher la complication quand l'appareil est verrouillé. - À partir d'Android T, les OEM peuvent déterminer si une demande de complication provient d'un cadran figurant dans la liste définie par les métadonnées
android.support.wearable.complications.SAFE_WATCH_FACES
dans le fichier manifeste de leur fournisseur parComplicationRequest#isForSafeWatchFace
. Le fournisseur aura besoin de l'autorisationcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
pour recevoir d'autres valeurs que TargetWatchFaceSafety.UNKNOWN. UserStyleFlavors
n'est plus une fonctionnalité expérimentale.
Version 1.2.0-rc01
18 octobre 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-rc01
. Liste des commits de la version 1.2.0-rc01
Version 1.2.0-beta02
6 septembre 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-beta02
. Liste des commits de la version 1.2.0-beta02
Nouvelles fonctionnalités
SuspendingComplicationDataSourceService#onDestroy
est désormais ouvert. Notez que la complication météo par défaut du système n'est plus disponible.
Modifications apportées à l'API
- Annulez l'option "Fournir une nouvelle source de données pour les complications météo". (I6f335)
Version 1.2.0-beta01
23 août 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-beta01
. Liste des commits de la version 1.2.0-beta01
Nouvelles fonctionnalités
- À partir d'Android T, Wear OS est désormais compatible avec une complication système météo par défaut.
Modifications apportées à l'API
- Ajout d'un système par défaut de remplacement pour les complications météo. (Ia0994)
- Ce correctif ajoute
WatchFaceRuntimeService
etWatchFaceControlClient.createWatchFaceRuntimeControlClient
, ainsi que des wrappers guava. Ils permettent de prendre en charge les environnements d'exécution de cadran, qui sont un type spécial de cadran qui charge sa définition à partir d'un autre package. Actuellement, Wear OS n'est compatible qu'avec l'environnement d'exécution du format de cadran Android. (I2799f) - Ce correctif fait suite à aosp/2636578, où nous avons renommé les définitions d'entiers afin que tout code dépendant de
WatchFaceType
,CanvasType
,TapType
ouComplicationsSlotBoundsType
n'ait pas besoin d'être modifié. (I4098b) - Mise à jour des fichiers d'API pour annoter la suppression de la compatibilité. (I8e87a, b/287516207)
- Ce correctif expose les constantes
WatchFaceType
dansWatchFaceTypes
, les constantesCanvasType
dansCanvasTypes
, les constantesTapType
dansTapTypes
et les constantesComplicationsSlotBoundsType
dansComplicationsSlotBoundsType
. (I3b85a, b/288750666) WatchFace.OverlayStyle
est très peu utilisé et n'est pas bien pris en charge par les OEM. Nous allons donc le déprécier avec l'intention de le supprimer à une date ultérieure. (I7344a)
Version 1.2.0-alpha09
21 juin 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha09
. Liste des commits de la version 1.2.0-alpha09
Nouvelles fonctionnalités
RangedValueComplicationData.Builder
accepte désormaisDynamicFloat
, et un nouveauDynamicComplicationText
est disponible en tant que sous-classe deComplicationText
. Les deux peuvent utiliser des expressions dynamiques ainsi que des liaisons de plate-forme mises à jour à 1 Hz sur les appareils Wear 4 compatibles.
Modifications apportées à l'API
- Ajout de types dynamiques pour la distance, les calories et les étages gravis quotidiens. Les clés des sources d'état de la plate-forme se trouvent désormais sous
PlatformHealthSources.Keys
(Ib7637). - Implémentez
PlatformDataProvider
pour fournir la fréquence cardiaque et le nombre de pas quotidiens. L'interfaceSensorGateway
est supprimée de l'API publique. (I55b84) - Rename
StateEntryValue
toDynamicDataValue
, and update the state APIs to use theDynamicDataKey
. (If1c01) - Ajout de
AppDataKey
pour accéder à l'état de l'application transmise ; ajout dePlatformDataKey
pour accéder aux données de la plate-forme ; ajout de la prise en charge des espaces de noms dansStateStore
. (I7985e) - Les méthodes
enable
/disablePlatformSource
ont été supprimées deDynamicTypeEvaluator
. L'appelant doit être responsable des mises à jour. (I78c6d) - Permet de limiter la taille des types de données liés. (Ie2966)
Version 1.2.0-alpha08
19 avril 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha08
. Liste des commits de la version 1.2.0-alpha08.
Nouvelles fonctionnalités
- À partir d'Android T, les fournisseurs de complications disposant du
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
privilégié peuvent enregistrer des métadonnéesandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
qui remplacentandroid.support.wearable.complications.SUPPORTED_TYPES
pour les cadrans sécurisés. Cela signifie qu'un fournisseur de complications peut choisir de diffuser différents types de complications pour les cadrans approuvés et non approuvés.
Modifications apportées à l'API
- Propagation de la classe
@Deprecated
vers la propriété (I882d1, b/271441831) - Modification du nom du paramètre de valeur pour
Enum.valueOf
(Ia9b89) - Davantage d'exceptions émises par l'énumération valueOf (I818fe)
- Nous avons supprimé
renderWatchFaceToSurface
au profit decreateRemoteWatchFaceView
, qui est basé sur SurfaceControlViewHost et permet à l'appelant d'intégrer une vue à partir du cadran, qui est affichée lorsque le client appelleRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Nous avons ajouté
renderWatchFaceToSurface
àInteractiveWatchFaceClient
,HeadlessWatchFaceClient
etEditorSession
. En général, cette méthode est plus performante que le rendu dans un bitmap. (Ieacad) ObservableStateStore
a été renomméStateStore
. (Ieb0e2)- Ajout de
DynamicTypeEvaluator.Builder
au lieu des arguments de constructeur pour autoriser davantage d'arguments facultatifs, y comprisObservableStateStore
, qui est désormais défini par défaut sur un magasin vide. (I6f832) - Refactorisation de l'ordre des paramètres dans
DynamicTypeEvaluator
. (Ic1ba4) - L'exécuteur a été ajouté aux méthodes
DynamicTypeEvaluator.bind
. (I346ab) - Nous avons ajouté la méthode
startEvaluation
àBoundDynamicType
pour déclencher l'évaluation une fois le type dynamique lié. (I19908) - Les fournisseurs de complications disposant de l'
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
privilégié peuvent enregistrer des métadonnéesandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
qui remplacentandroid.support.wearable.complications.SUPPORTED_TYPES
pour les cadrans sécurisés. (Id1c73) CustomValueUserStyleSettings2
a été renomméLargeCustomValueUserStyleSettings
. (Ic17ac)
Correction de bugs
DynamicTypeValueReceiver#onPreUpdate
a été supprimé. (I2dc35)
Version 1.2.0-alpha07
22 février 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha07
. Liste des commits de la version 1.2.0-alpha07
Nouvelles fonctionnalités
À partir d'Android T, les OEM peuvent déterminer si une demande de complication provient d'un cadran figurant dans la liste définie par les métadonnées
android.support.wearable.complications.SAFE_WATCH_FACES
dans le fichier manifeste de leur fournisseur parComplicationRequest#isForSafeWatchFace
. Le fournisseur aura besoin de l'autorisationcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
pour recevoir d'autres fichiers queTargetWatchFaceSafety.UNKNOWN
.Également à partir d'Android T,
CustomValueUserStyleSetting2
est disponible et peut contenir jusqu'à 12,5 Ko. La limite précédente deCustomValueUserStyleSetting
était de 1 Ko. Malgré l'augmentation des limites de taille, nous encourageons les développeurs de cadrans à limiter la taille des données, car les paramètres sont envoyés via le Bluetooth lors de l'édition, et la bande passante Bluetooth est limitée.
Modifications apportées à l'API
- Nous avons ajouté un paramètre facultatif
eglContextAttribList
àGlesRenderer
etGlesRenderer2
, qui vous permet de définir laEGL14.EGL_CONTEXT_CLIENT_VERSION
transmise àEGL14.eglCreateContext
. (I2a83e) - Nous avons migré les bibliothèques de cadrans vers
androidx.core.util.Consumer
au lieu dejava.util.function.Consumer
. (I273f5) - Davantage d'exceptions émises par les accesseurs de propriétés KT. (Iff9d9)
- Nous avons ajouté
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
afin que le client puisse déterminer s'il doit émuler la prise en charge ou non pour d'anciens cadrans. (I24c89) - Nous avons décidé que
isForSafeWatchFace
doit être unIntDef
à trois états. (Ief2f7) - Pour Android T, nous avons lancé
ComplicationRequest.isForSafeWatchFace
qui est destiné à l'usage des OEM et nécessitecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. Pour les sources de données dans l'image système, la valeur est "true" si le cadran à l'origine de la requête figure dans la liste des cadrans sécurisés spécifiée par la source de données dans son fichier manifeste. (I0cbb6) - Pour Android T, nous avons ajouté
CustomValueUserStyleSetting2
qui peut contenir jusqu'à 12,5 Ko. La limite précédente deCustomValueUserStyleSetting
était de 1 Ko. (I0b100)
Version 1.2.0-alpha06
25 janvier 2023
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha06
. Liste des commits de la version 1.2.0-alpha06
Nouvelles fonctionnalités
- Nous mettons tout en œuvre pour prendre en charge les liaisons de plate-forme de complication. Cette fonctionnalité n'est pas encore prête, mais cela ne saurait tarder.
- Nous avons ajouté la prise en charge XML de
ComplicationSlot
avec les nouveaux types de complications, GOAL_PROGRESS et WEIGHTED_ELEMENTS.
Correction de bugs
- Correction d'une faille qui entravait le bon fonctionnement de l'éditeur de cadran sur les appareils Samsung. (3b5987)
- Correction d'un bug qui empêchait parfois les complications de s'afficher correctement lors du passage à un cadran à plusieurs favoris. (b38ece)
- Correction d'un bug de sérialisation avec perOptionScreenReaderNames, qui provoque des plantages du cadran. (e9f466)
Version 1.2.0-alpha05
7 décembre 2022
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha05
. Liste des commits de la version 1.2.0-alpha05
Nouvelles fonctionnalités
Il y a quelque temps, nous avons proposé des
UserStyleSettings
hiérarchiques, et depuis Android T, il est désormais possible d'avoir plusieursComplicationSlotsUserStyleSetting
dans une hiérarchie. Un seulComplicationSlotsUserStyleSetting
sera actif, en fonction des choix de style de l'utilisateur.En ajoutant un champ
screenReaderName
, nous permettons aux lecteurs d'écran de mieux prendre en chargeListOption
etComplicationSlotsOption
. Notez que ce champ sera ignoré par les éditeurs Compagnon sur les appareils équipés d'une version antérieure à Android T.
Modifications apportées à l'API
- Nous avons ajouté un nouveau champ facultatif (
screenReaderName
) aux optionsListOption
etComplicationSlotsOption
pour les éditeurs. Il sera ignoré par les éditeurs Compagnon sur les appareils équipés d'une version antérieure à Android T. (I75326) - Depuis Android T, plusieurs
ComplicationSlotsUserStyleSettings
sont désormais pris en charge dans une hiérarchie de styles, à condition qu'un seul d'entre eux puisse être actif à la fois. Nous avons ajouté une fonction utilitairefindComplicationSlotsOptionForUserStyle
àUserStyleSchema
pour vous aider à trouver l'élémentComplicationSlotsOption
actif, le cas échéant. (Ic2b06) - Des
RangedValuesTypes
ont été intégrés à l'objet associé deRangedValueComplicationData
et renommésTYPE_UNDEFINED
,TYPE_RATING
, et un nouveauTYPE_PERCENTAGE
a été ajouté. (I55d02) - Nous avons renommé le
DynamicFloat
expérimental enFloatExpression
, et l'avons marqué comme@hide
. (Idf4f1) - Ajout de l'annotation
@JvmDefaultWithCompatibility
. (I8f206)
Version 1.2.0-alpha04
9 novembre 2022
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha04
. Liste des commits de la version 1.2.0-alpha04
Nouvelles fonctionnalités
- Pour Android T, nous avons ajouté deux nouveaux types de complications (
GoalProgressComplicationData
etWeightedElementsComplicationData
). GoalProgressComplicationData
est semblable àRangedValueComplicationData
. Toutefois, sa valeur peut dépasser la cible (tandis que pourRangedValueComplicationData
, la valeur est limitée à la plage [min… max]), ce qui a des implications pour la conception visuelle, qui peuvent ne pas convenir à tous les cadrans.GoalProgressComplicationData
accepte les graphiques à secteurs et les répartitions similaires des données simples.- Nous avons ajouté une compatibilité facultative pour
ColorRamps
dansRangedValueComplicationData
. - Pour Android T, nous avons ajouté
ComplicationPersistencePolicy
etsetCachePolicy
àComplicationData
, ce qui permet actuellement à un fournisseur de contrôler si une complication est conservée ou non (par exemple, si elle est mise en cache après un redémarrage). La plupart des complications n'auront pas besoin de définir le contrôle du cache, mais cela peut résoudre les cas de figure avec des données obsolètes pour certaines complications souvent mises à jour (par exemple, des complications de données de santé). Nous avons également ajoutéComplicationDisplayPolicy
oùDO_NOT_SHOW_WHEN_DEVICE_LOCKED
indique à un cadran compatible de ne pas afficher la complication quand l'appareil est verrouillé. (Ic9574)
Modifications apportées à l'API
GoalProgressComplicationData
,WeightedElementsComplicationData
etColorRamp
ne sont plus au stade expérimental. (Ica9e2)ComplicationPersistencePolicy
etComplicationDisplayPolicy
sont désormais correctement marquées comme API T. (I31d88)- Le constructeur obsolète
ComplicationSlotOverlay
contient maintenantDeprecationLevel.WARNING
, ce qui permet de l'appeler à nouveau depuis Java. (Ib308c) - Nous avons corrigé certains problèmes de compatibilité Java concernant
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
etInteractiveWatchFaceClient
en les annotant avec@JvmDefaultWithCompatibility
(Id94fc). - Nous avons supprimé les
ProtoLayoutComplicationData
etListComplicationData
expérimentales. Le témoignage du développeur à ce sujet n'était pas clair. Nous espérons y revenir prochainement. (I9df05) - Nous avons de nouveau ajouté un
ValueType
àRangedValueComplicationData
.WeightedElementsComplicationData
accepte désormais une couleur d'arrière-plan. Nous avons retiréDiscreteRangedValueComplicationData
, car sa fonctionnalité est un sous-ensemble deWeightedElementsComplicationData
. (I6446c)
Correction de bugs
- Inclut
isForScreenShot
dans les fonctions equals et le code de hachage. S'assure queonRenderParametersChanged
obtient une valeurisForScreenshot
correcte (I04a41). - Les problèmes de fuite de
WatchFaceControlService
provenant de clients headless ont été corrigés. (e90e00)
Version 1.2.0-alpha03
5 octobre 2022
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha03
. Liste des commits de la version 1.2.0-alpha03
Nouvelles fonctionnalités
- Aucune nouvelle fonctionnalité, mais nous avons corrigé quelques bugs liés à l'éditeur de cadran.
Modifications apportées à l'API
- Nous avons abandonné les
UserStyleSchema.userStyleSettings
, tandis que lesrootUserStyleSettings
ne sont plus au stade expérimental. (Ie96e3) - Nous avons retiré les
rootUserStyleSettings
du stade expérimental. (I8d6b3) - Nous avons marqué les
WatchFaceColors
comme étant au stade expérimental, car elles ne sont pas compatibles avec tous les systèmes. (I6d75d) - Nous avons placé les
DisconnectReasons
dans l'API publique pour qu'elles fonctionnent avecIntDef
. (I791f8)
Correction de bugs
- Ferme toutes les ouvertures de l'éditeur de cadran si
SysUI
s'arrête. SiSysUI
s'arrête et que l'éditeur de cadran ne se ferme pas, le cadran peut donc rester incohérent, car le système repose surSysUI
pour conserver tous les changements de style de l'utilisateur. (Ba762a) - Corrige une fuite de mémoire dans
ComplicationDataSourceInfoRetriever
, où une continuation de coroutine Kotlin jouait le rôle de racine gc et conservait l'activité de l'éditeur. (33ee06)
Version 1.2.0-alpha02
21 septembre 2022
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha02
. Liste des commits de la version 1.2.0-alpha02
Nouvelles fonctionnalités
Certains cadrans possèdent une configuration en dehors du
UserStyle
qui l'affecte visuellement (par exemple, vous pouvez sélectionner une photo d'arrière-plan). Nous avons ajoutéRenderer.sendPreviewImageNeedsUpdateRequest
, qui permet au cadran de demander une mise à jour de l'image d'aperçu. Notez que cela nécessite une mise à jour du système correspondant pour fonctionner.Nous avons également ajouté une API permettant aux cadrans de montrer leurs couleurs au système, qui peut choisir sa palette de couleurs en fonction de cela. Remarque : Cela a été testé dans une version ultérieure du correctif.
Presque tous les types de
ComplicationData
acceptent désormaisSmallImages
.
Modifications apportées à l'API
- Le gestionnaire de fonds d'écran peut parfois se dissocier d'un moteur et en créer un autre. Nous avons ajouté une définition int
DisconnectReason
et unClientDisconnectListener
étendu avec une nouvelle méthode qui inclut unDisconnectReason
, ce qui permet à l'écouteur d'observer les dissociations du moteur. (I45cce) - Nous avons ajouté deux paramètres facultatifs (
nameResourceId
etscreenReaderResourceId
) au constructeurComplicationSlotOverlay
. (I157e8) - Nous avons ajouté un wrapper Guava pour la nouvelle surcharge de
getOrCreateInteractiveWatchFaceClient
avec unPreviewImageUpdateRequestedListener
. (Ic31f0) - Nous avons ajouté
Renderer.sendPreviewImageNeedsUpdateRequest
, ce qui est utile pour les cadrans dont l'état est en dehors deUserStyleSchema
qui affecte leur apparence (par exemple, un cadran avec une image de fond sélectionnable). Côté client, nous avons ajoutéPreviewImageUpdateRequestedListener
en tant que paramètre facultatif àgetOrCreateInteractiveWatchFaceClient
pour observer ces requêtes. (Iff44a) - Nous avons simplifié l'API pour exposer
WatchFaceColors
. Désormais, il existe une propriété simple appeléewatchFaceColors
sur le moteur de rendu, que le cadran peut définir. Cette propriété doit être mise à jour si nécessaire en cas de changement de style. Au lieu d'utiliserWallpaperManager
pour observer les changements de couleur, nous avons ajoutéOnWatchFaceColorsListener
àInteractiveWatchFaceClient
. (I490bc) - Nous avons ajouté une classe
WatchFaceColors
qui contient les trois couleurs de cadran les plus visibles, ainsi que les méthodes ouverteswatchfaceColors
etnotifyWatchFaceColorsChanged
au moteur de rendu. Elles permettent au système d'obtenir les couleurs du cadran viaWallpaperManager.getWallpaperColors
. (I3d611) ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(ainsi queDiscreteRangedValueComplicationData
,GoalProgressComplicationData
etWeightedElementsComplicationData
expérimentales) sont désormais compatibles avecSmallImages
. Si un cadran choisit d'afficher une complication avec plusieurs couleurs, il peut désormais utiliser uneSmallImage
multicolore alors qu'il aurait dû auparavant utiliser une image monochrome. (I257df)- Refactorisez
PreviewImageUpdateRequestedListener
pour qu'il devienne à la place unConsumer<>
(Ia875d). - Remplacez le type de SAM ("Single Abstract Method" pour "méthode abstraite unique")
OnWatchfaceColorsListener
par le type de SAM Java générique (Consumer) (I0C489. - Nous avons abandonné les anciennes méthodes
getOrCreateInteractiveWatchFaceClient
etlistenableGetOrCreateInteractiveWatchFaceClient
qui ne spécifient pas dePreviewImageUpdateRequestedListener
. (Iec502)
Correction de bugs
- Le compte de service (
DisconnectReason.BINDER_DIED
) a été renomméDisconnectReason.ENGINE_DIED
. (I4eb0e)
Version 1.2.0-alpha01
10 août 2022
Publication d'androidx.wear.watchface:watchface-*:1.2.0-alpha01
. Liste des commits de la version 1.2.0-alpha01
Nouvelles fonctionnalités
- Nous avons ajouté la compatibilité expérimentale pour divers nouveaux formats de complications. C'est un domaine de développement actif. Ces nouveaux formats sont susceptibles d'être modifiés sans préavis, et le moteur de rendu n'est actuellement pas compatible avec
CanvasComplicationDrawable
. - Nous avons également ajouté des marges en option aux emplacements de complication pour qu'il soit plus simple d'appuyer sur de petites complications.
Modifications apportées à l'API
- La classe expérimentale
BoundingArc
est désormais immuable. (If624a) - Il peut s'avérer difficile d'appuyer sur de petites complications. Pour limiter ce problème, nous avons ajouté la compatibilité des marges permettant d'augmenter la taille de la zone où appuyer sans affecter l'affichage. Sauf indication contraire (dans le code ou via XML),
ComplciationSlots
n'a aucune marge de taille personnalisée. (I14089) - La signature
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
pour renvoyer une instance de fabrique non nulle a été modifiée. Le renvoi d'une valeur nulle, comme c'était le cas auparavant, était une erreur. Cette modification clarifie simplement le contrat d'API. (I0fcc0) - Nous avons ajouté un argument
currentUserStyleRepository
à la méthodeWatchFaceService.getComplicationSlotInflationFactory
pour être cohérent aveccreateComplicationSlotsManager
. (I2ddd2) UserStyleFlavors
n'est plus une fonctionnalité expérimentale. (I69cdc)- Nous avons supprimé le
ValueType
expérimental deRangedValueComplicationData
et introduit laDiscreteRangedValueComplicationData
expérimentale, qui est semblable à laRangedValueComplicationData
, à l'exception de la plage et de la valeur entières. Nous avons également introduit uneGoalProgressComplicationData
expérimentale, qui est semblable à laRangedValueComplicationData
, à la différence qu'elle vise à atteindre un objectif où la valeur minimale est implicitement égale à zéro et la valeur peut être supérieure àtargetValue
. Remarque : Pour toutes les variantesRangedValue
, vous devez indiquer au moins une image, un texte ou un titre monochromes. (I9590c) - Nous avons supprimé
boundsWithMargins
deComplicationSlotState
, car aucun logiciel système n'est adapté à son utilisation. (I42e26) - Nous avons ajouté la compatibilité expérimentale pour
WeightedElementsComplicationData
, qui consiste en un tableau d'éléments (paires de couleurs et d'épaisseurs) ainsi que du texte/titre/image (facultatif). Ils peuvent s'afficher sous forme de graphique à secteurs, dans lequel les couleurs doivent être pertinentes compte tenu du contexte, car il n'y a généralement pas assez de place dans une complication pour afficher les libellés. (I87eea) - Le
ColorRamps
expérimental (facultatif) utilisé parRangedValueComplicationData
etGoalProgressComplicationData
vous permet désormais de spécifier une séquence de sept couleurs maximum et un indicateur précisant si les couleurs doivent être interpolées de façon fluide ou si des pas de couleur unis de taille égale doivent être affichés. (I9f5bf) RangedValueComplicationData.drawSegmented
a été remplacé parvalueType
, qui est un entier avec unValueType IntDef
correspondant qui fournit une signification sémantique à la valeur sous forme de plage et peut être utilisé par le moteur de rendu de complication pour influencer le style. (I0616b)- Nous avons ajouté la compatibilité expérimentale pour passer de
ColorRanges
àRangedValueComplicationData
(facultatif). Normalement, les complications doivent s'afficher dans les couleurs choisies pour le cadran, mais parfois,ComplicationDataSource
est mieux placé pour définir les couleurs, par exemple lorsqu'elles ont une signification sémantique particulière. Par exemple, du rouge au bleu pour la température. (I5153a) - Nous avons ajouté un indice
drawSegmented
expérimental àRangedValueComplicationData
. Cela permet aux moteurs de rendu de tracer l'indicateur de valeur sous forme de plage avec des segments, où 1 segment = 1 unité. (I7d7c1)
Correction de bugs
- Nous avons ajouté la possibilité de définir
ComplicationSlotBounds
par rapport à un système de coordonnées d'écran prédéfini. (I0985d)
Version 1.1
Version 1.1.1
10 août 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.1
. Liste des commits de la version 1.1.1
- Il s'agit d'une version corrective des bugs, et nous recommandons vivement aux utilisateurs de la version 1.1.0 de la mettre à niveau.
Correction de bugs
L'initialisation du cadran est asynchrone. Si une complication est reçue avant qu'il ne soit prêt, elle est ajoutée à la liste
pendingInitialComplications
et appliquée ultérieurement. Malheureusement,pendingInitialComplications
a été appliqué trop tôt, ce qui a entraîné un délai d'initialisation du cadran pendant lequel les complications pouvaient encore apparaître surpendingInitialComplications
et être ignorées. Ce problème a été résolu. De plus, ce correctif corrige un bug :ComplicationRenderer
tentait par erreur de charger les espaces réservés de manière asynchrone. Le graphique de compilation n'était donc jamais mis à jour. Enfin, ce correctif corrige un bug théorique qui causait la fusion de plusieurspendingInitialComplications
. (0d03ba3)Résoudre l'interblocage potentiel dans
InteractiveInstanceManager
, oùgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
maintenait le verrouillage plus longtemps que nécessaire. En règle générale,engine.setUserStyle
devrait être rapide, mais si ce n'est pas le cas, nous pourrions nous retrouver avec un interblocage/ANR. Ce correctif permet d'éliminer le travail inutile du verrouillage et donc le risque d'un interblocage. (5a2adca)Corrige plusieurs problèmes qui retenaient
WatchFaceService
. WakeLock peut parfois retenir leWatchFaceService
. L'ajout d'un appelrelease()
corrige ce problème. En outre,StateFlows
peut retenirWatchFaceService
. L'annulation desCoroutineScopes
sous-jacentes corrige ce problème. (fd48138)Ajout de délais d'inactivité à
awaitDeferredWatchFace
* et correction de laNullPointerException
dewatchfaceOverlayStyle
. Dans des circonstances normales, cette opération ne doit pas expirer, même après une nouvelle installation et des scénariosDirectBoot
dans lesquels la charge du processeur est élevée. Nous avons également corrigé un NPE sigetWatchfaceOverlayStyle
est appelé aprèsclose()
. (a4c3a5a)
Version 1.1.0
15 juin 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0
. Liste des commits de la version 1.1.0
Modifications importantes depuis la version 1.0.0
Amélioration des modifications :
- Nous avons ajouté la compatibilité avec les schémas hiérarchiques, qui permettent de définir une hiérarchie de styles par les interfaces utilisateur de l'éditeur. Vous pouvez désormais indiquer des icônes distinctes pour les cadrans et les éditeurs Compagnon.
- Une compatibilité à activer avec plusieurs instances d'un cadran existe, et chaque instance possède un identifiant unique disponible sur toutes les surfaces de l'API.
- Vous pouvez désormais indiquer des noms lisibles pour
ComplicationSlots
afin de les utiliser dans les éditeurs. - Compatibilité expérimentale permettant de personnaliser les "saveurs", à savoir une sélection de styles visibles depuis l'éditeur Compagnon.
- Lorsque deux instances du cadran ont été modifiées, elles peuvent partager des ressources et économiser de la mémoire.
- Lorsque vous choisissez une complication dans l'éditeur du cadran, le fournisseur actuel est présélectionné.
Complications améliorées :
- Vous pouvez à présent préciser le
ComplicationType
pour les sources de données principale et secondaire, ce qui permet aux développeurs d'être plus flexibles pour une utilisation prête à l'emploi. - Nous avons ajouté
ComplicationDataTimeline
, qui fournit une séquence de données temporelles à afficher sur le cadran et pouvant être mise en cache et mise à jour automatiquement. Par exemple, les prévisions météo du jour à différents moments ou plusieurs événements d'agenda à venir. - Le
ComponentName
du fournisseur de complication fait partie deComplicationData
. - Les complications sont désormais mises en cache, ce qui permet de basculer plus facilement entre les cadrans.
Autres modifications :
UserStyleSchema
etComplicationSlots
peuvent désormais être définis en XML. Cela simplifie la construction du cadran et permet d'accélérer les requêtes de métadonnées depuis le système.- Les cadrans peuvent désormais influencer les couleurs utilisées pour afficher la superposition du système.
Version 1.1.0-rc01
18 mai 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-rc01
. Liste des commits de la version 1.1.0-rc01
Nouvelles fonctionnalités
- Nous avons modifié la facilité d'utilisation de la compatibilité XML du cadran afin de faciliter la spécification de
ComplicationSlotBounds
et de prendre en charge les références. Le test avec la complication d'arêteBoundingArc
se poursuit pour arriver jusqu'àdrawHighlight
, même si son utilisation n'est pas recommandée à ce moment.
Modifications apportées à l'API
- Nous avons ajouté une surcharge expérimentale de
drawHighlight
, qui accepte un paramètreBoundingArc
. (I705f8) - Le XML du cadran est désormais compatible avec les références de ressources. Il vous permet d'utiliser les mêmes constantes en XML et dans votre code. (I3ef61)
- Vous pouvez désormais définir
ComplicationSlotBounds
dans les formulairescenter_x
,center_y
,size_x
etsize_y
. Vous pouvez maintenant aussi utiliser différentes unités (par exemple, dp) à l'aide de références de ressources. (Iace98)
Correction de bugs
- Corrige
runBlockingWithTracing
, qui exécutait des tâches dans le mauvais contexte. (4f595fe) - Rend
BaseEditorSession.close
synchrone. Le problème avecBaseEditorSession.close
asynchrone est que nous publionsComplicationDataSourceInfoRetriever
trop tard, ce qui provoque l'affichage d'un spam d'avertissement dans logcat. Cette action était probablement sans conséquence, mais le spam logcat, gênant, est à éviter. (35a5308)
Version 1.1.0-beta02
11 mai 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-beta02
. Liste des commits de la version 1.1.0-beta02
Nouvelles fonctionnalités
- Nous avons ajouté la compatibilité expérimentale pour les nouveaux types de
ComplicationData
, ils ne sont pas encore prêts à être utilisés, mais cela ne devrait tarder.
Modifications apportées à l'API
- Nous avons ajouté
BoundingArc
, une classe expérimentale qui décrit la géométrie d'un emplacement de la complication d'arête. Elle a été ajoutée àComplicationSlot
et arrive jusqu'àComplicationSlotState
etWatchFaceMetadataClient
. (I61a40) - Nous avons ajouté la possibilité d'hériter des paramètres dans le fichier XML de
UserStyleSetting
. Il vous permet de réduire le niveau de verbosité et de partager un paramètre entre des cadrans. (Ief841) - Nous avons ajouté deux nouveaux types expérimentaux de
ComplicationData
:ListComplicationData
etProtoLayoutComplicationData
. Pour le moment, aucune compatibilité d'affichage n'existe avec ces types, et Wear OS ne les reconnaît actuellement pas s'ils sont ajoutés à un fichier manifesteComplicationDataSource's
. (I1811c)
Correction de bugs
- Corrige la sérialisation du type
TimeLineEntry
. Nous n'avons pas sérialisé le typeTimeLineEntry
, ce qui signifie que l'on pourrait croire, à tort, que leTimeLineEntries
de type NoData mis en cache dispose du type de la complication parente menant à des NPE lorsque des champs obligatoires inexistants ont été consultés. (55ffdf5) - Corrige un bug provoquant l'abandon des champs de chronologie par
setComplicationData
(fb392f5) - Corrige un bug qui entraînait, à de rares occasions, un NPE provoqué par
runBlockingWithTracing
(12ca62e) - Corrige un bug qui entraînait parfois une exception
ClassNotFoundException: android.support.wearable.complications.ComplicationText
lors d'une complication. (217942d9) - Corrige un bug dans
GlesRenderer.backgroundThreadInitInternal
, qui n'appelaitonBackgroundThreadGlContextCreated
que siEGL14.eglCreateContext
était appelé. Corrige un autre bug qui provoquait un glitch visuel dans la capture d'écran causé parverticalFlip
(c674ad2) - Corrige la vérification de la version XML de
WatchFaceService
, qui se chargeait depuis un mauvais package. (dfa06f3) - Le format de communication d'espace réservé utilise désormais un bundle interne. Nous ne voulons pas que les espaces réservés brisent les cadrans existants susceptibles d'utiliser les données cachées internes a.s.w.c.ComplicationData. Auparavant, le format de communication des données
NoDataComplication
stockait l'espace réservé dans les champs habituels (ce qui posait problème, car les anciens cadrans affichaient la chaîne d'espace réservé alors que ce n'était pas prévu). À la place, nous utilisons désormais un bundle interne pour isoler complètement ce champ. (d5e7bd2)
Version 1.1.0-beta01
20 avril 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-beta01
. Liste des commits de la version 1.1.0-beta01
Modifications apportées à l'API
- Désormais, les méthodes
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) etHeadlessWatchFaceClient.getUserStyleFlavors
lèvent une exception RuntimeException au lieu deWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
a été retirée de la classe pour pouvoir être réutilisée. (I4e869)
Correction de bugs
WatchFaceMetadataClient
ne plantera plus si une partie deComplicationSlotBounds
a été envoyée. (Iaafd)
Version 1.1.0-alpha05
6 avril 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-alpha05
. Liste des commits de la version 1.1.0-alpha05
Nouvelles fonctionnalités
- Vous pouvez maintenant savoir quelle source de données a envoyé des
ComplicationData
en inspectantComplicationData.dataSource
. Certains cadrans peuvent utiliser cette information pour personnaliser l'affichage des complications. (I44a73)
Modifications apportées à l'API
Renderer.CanvasRenderer
etRenderer.GlesRenderer
ont été abandonnés au profit deRenderer.CanvasRenderer2
etRenderer.GlesRenderer2
, qui prennent en chargeSharedAssets
, transmis aux méthodes d'affichage. Pour l'interopérabilité Java, nous avons introduitListenableCanvasRenderer2
etListenableGlesRenderer2
. (I31ffa)- Ajout de la fonctionnalité
@WatchFaceFlavorsExperimental
pour définir des "saveurs", à savoir une liste préconfigurée de cadrans personnalisés (I04dd0) Renderer.sharedAssets
est désormais un StateFlow et nous avons supprimé leRenderer.SharedAssetsFactory
inutilisé (I12ac5)UserStyleSchema.userStyleSettings
n'est plus obsolète (Iba7e3)- Ajout de
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
, qui permet à unHeadlessWatchFaceClient
d'éviter les frais généraux relativement faibles liés à la transmission du schéma sur AIDL avant le calcul du hachage condensé. (I33597) - Ajout de
isUserStyleSchemaStatic
àWatchFaceMetadataClient
, qui est vrai si et seulement si leUserStyleSchema
peut être utilisé pour s'assurer de ne pas changer, sauf si l'APK du cadran est mis à jour. (I45a3f) - Ajout de
getDigestHash
àUserStyleSchema
, qui calcule un hachage condensé du schéma. Cela permet de déterminer efficacement si leUserStyleSchema
a changé. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
renommé enMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
(I9ba5d)UserStyleSetting.OnWatchEditorData
a été renomméUserStyleSetting.WatchFaceEditorData
. Il contient des données utilisées uniquement par l'éditeur du cadran. (If3afb)
Version 1.1.0-alpha04
9 mars 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-alpha04
. Liste des commits de la version 1.1.0-alpha04
Modifications apportées à l'API
- Il est possible que la dernière version de
ComplicationData
ne soit pas toujours disponible (par exemple, des données ComplicationData mises en cache arrivées à expiration). Nous avons donc étenduNoDataComplication
avec un espace réservé ComplicationData facultatif et avons ajoutéComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
, qui ne peuvent être utilisés que dans le contexte d'un espace réservéNoDataComplicationData
. Si cette option est sélectionnée, ces espaces réservés suggérés sont affichés avec des cases/arcs gris. (I6285d) - Nous avons ajouté
ComplicationData.getNextChangeInstant
, qui vous indique l'instantané immédiat après l'instantané de référence, où tout champ de la complication peut changer. Cette information est utilisée en interne pour planifier les images des mises à jour de la complication. Par exemple, si un cadran est mis à jour une fois par minute, la complication du chronomètre l'actualise une fois par seconde. (I7ceb2) EditorSession.watchFaceId
peut désormais être utilisé à tous les niveaux d'API. De plus, sa valeur sera toujours cohérente avecWatchState.watchFaceInstanceId
. (I323b9)- L'API
getPendingIntentForTouchEvent
n'est plus nécessaire, car le problème sous-jacent a été résolu dans le framework. Toutes les API associées ont donc été supprimées. Aucune action des cadrans n'est requise pour déclencherPendingIntents
, même si l'utilisateur a récemment appuyé sur le bouton d'accueil. (I1f2e8) - Ajout de
RendererParameters.isForScreenShot
, qui est vrai si l'affichage est destiné à une capture d'écran. Certains cadrans avec animations doivent en être informés pour effectuer des ajustements et obtenir des résultats optimaux. (I96d99) - Ajout de
WatchFaceExceptionReason
àWatchFaceException
pour vous donner plus d'informations sur le problème. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
a été supprimé. À la place,ComplicationRequest.immediateResponseRequired
a été ajouté pour indiquer au fournisseur qu'il doit répondre rapidement (idéalement, en moins de 100 ms). Notez que cette fonctionnalité est protégée par l'autorisation privilégiéecom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
. (Ie6b23)- Mise à jour de la possibilité de valeur nulle dans core et appcompat pour assurer la correspondance avec Tiramisu DP2 (I0cbb7).
Correction de bugs
- L'application du cadran se bloque désormais, sauf en cas d'échec de la validation du schéma (Ia400f).
Version 1.1.0-alpha03
9 février 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-alpha03
. Liste des commits de la version 1.1.0-alpha03
Modifications apportées à l'API
- Nous avons ajouté la compatibilité expérimentale pour les schémas de style hiérarchique. Nous avons ajouté une nouvelle propriété à
androidx.wear.watchface.style.UserStyleSetting.Option
(childSettings), qui n'est initialement utilisée que parListOption
. Elle permet de décrire une hiérarchie de styles pour les interfaces utilisateur d'éditeur, le UserStyle sous-jacent reste inchangé et reste unMap<String, ByteArray>
. (Iaf6f4) - Ajout de
WatchFace.OverlayStyle
, qui permet au cadran de configurer l'affichage de la superposition d'état du système. (I8520d) - Nous avons ajouté
clearWithBackgroundTintBeforeRenderingHighlightLayer
, un nouveau paramètre de constructeur facultatif pourCanvasRenderer
et dont la valeur par défaut est "false". S'il est défini sur "true", le canevas sera effacé avec la couleur de l'arrière-plan. (Ie01e5) - Ajout d'une clé de métadonnées
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
, qui permet aux sources de données de complication d'indiquer qu'elles peuvent fournir une valeur par défaut sans aucune configuration (Icc0d4) - Il est courant de modifier un cadran pour qu'il soit à la fois interactif et dépourvu d'interface graphique. Pour vous aider à économiser de la mémoire, nous avons lancé
Renderer.SharedAssets
, qui permet au moteur de rendu du cadran de partager des données immuables (textures et nuanceurs, par exemple) entre les instances.GlesRenderer.setEglConfig
etGlesRenderer.setEglDisplay
sont obsolètes. Ils n'étaient pas destinés à être définissables, ce qui aurait conduit à une réaction inattendue. (I0d9e7) - Nous avons ajouté
setNameResourceId
etsetScreenReaderNameResourceId
(qui font référence aux ressources de chaîne) àComplicationSlot.Builder
et aux getters correspondants dansandroidx.wear.watchface.client.ComplicationSlotState
. Cela permet au système d'extraire les noms des ComplicationSlots pour les utiliser dans les éditeurs et les lecteurs d'écran. (If6c6a) WatchfaceMetadataClient.getUserStyleSchema
etgetComplicationSlotMetadataMap
génèrent désormais uneWatchFaceException
au lieu deRemoteException
. (I86f11)onSynchronousComplicationRequest
et les fonctions associées dansComplicationDataSourceService
ont été renommésonImmediateComplicationRequest
, etc. (I87ba0)- L'espace sur l'écran des éditeurs de cadran est nettement inférieur à celui des éditeurs Compagnon. Il est donc logique de prendre en charge des icônes différentes pour les éditeurs de cadran. Ce correctif ajoute
OnWatchEditorData
(ne contenant actuellement qu'une icône) à tous les UserStyleSettings et, le cas échéant, à leurs classes d'options. (If1886) - Nous avons ajouté
@JvmOverloads
au constructeur de ListenableGlesRenderer pour améliorer l'interopérabilité Java. (I2974a)
Correction de bugs
- Le constructeur de
ListenableGlesRenderer
est désormais correctement marqué comme@Throws(GlesException::class)
, et il est maintenant possible d'étendre cette classe en Java. (Iac6d0) - Corrige le bug qui empêchait la bonne exécution de la tapAction de
PhotoImageComplicationData
(I1cc30)
Version 1.1.0-alpha02
12 janvier 2022
Publication d'androidx.wear.watchface:watchface-*:1.1.0-alpha02
. Liste des commits de la version 1.1.0-alpha02
Nouvelles fonctionnalités
- Pour faciliter le débogage et les tests,
ComplicationData
et les sous-classes associées disposent maintenant de méthodes de code de hachage forcé, d'égalisation et "toString" qui facilitent leur utilisation.
Modifications apportées à l'API
- Les méthodes
WatchfaceMetadataClient
génèrent à nouveau l'erreurRemoteExceptions
le cas échéant, ce qui permet au code client de détecter plus facilement les erreurs sur le cadran. (I78785) ComplicationData
et les sous-classes disposent désormais de code de hachage, d'égalisation et de toString. (I24bc6)
Version 1.1.0-alpha01
15 décembre 2021
Publication d'androidx.wear.watchface:watchface-*:1.1.0-alpha01
. Liste des commits de la version 1.1.0-alpha01
Nouvelles fonctionnalités
UserStyleSchema
etComplicationSlots
peuvent désormais être définis en XML. Cela simplifie la construction du cadran. De plus, les requêtesWatchFaceMetadataClient
sont plus rapides, car elles n'ont pas besoin de s'associer au service pour obtenir les métadonnées.WatchFaceMetadataClient
etListenableWatchFaceMetadataClient
ne sont plus au stade expérimental et feront partie de l'API stable. Le système pourra éventuellement prendre en charge plusieurs instances d'un cadran, chacune ayant des options de style différentes définies par l'utilisateur. Ces éléments seront visibles dans l'outil de sélection du cadran. Pour activer cette fonctionnalité, un cadran doit inclure la balise de métadonnées suivante dans son fichier manifeste.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />
Certains cadrans ont un état qui n'est pas capturé dans la
UserStyle
. Pour prendre en charge ce paramètre et plusieurs instances, l'identifiant d'instance du cadran est désormais disponible viaWatchState.watchFaceInstanceId
.Les
ComplicationData
sont désormais mis en cache pour que les complications s'affichent dès leur chargement. Parfois,ComplicationData
est mis en cache en mémoire par le système, et parfois, il est sérialisé par les bibliothèques de cadrans. Lors de la sérialisation, toute tapAction associée sera perdue. Si cela se produit,ComplicationData.tapActionLostDueToSerialization
renvoietrue
, et le cadran de la montre doit afficher la complication différemment (par exemple, elle est grisée ou semi-transparente) pour indiquer qu'il est impossible d'appuyer sur l'écran. Le système enverra lesComplicationData
mises à jour avec unetapAction
dès que possible.Certains
ComplicationData
ne doivent pas être mis en cache pendant une longue période. Pour l'éviter, nous avons ajouté une fonction plus générale,ComplicationDataTimeline
. Elle peut être utilisée pour fournir une séquence deComplicationData
temporels à diffuser sur le cadran, qui peut être mise en cache et mise à jour automatiquement. Par exemple, les prévisions météo du jour à différents moments ou plusieurs événements d'agenda à venir.ComplicationRequestListener
a été étendu avec une nouvelle méthodeonComplicationDataTimeline
que vous pouvez utiliser pour renvoyer ces données.DefaultComplicationDataSourcePolicy
a été étendu pour que vous puissiez préciser leComplicationType
pour les sources de données principale et secondaire.Une compatibilité pour les fournisseurs de complications synchrones a été ajoutée pour mettre à jour la complication plus fréquemment que d'habitude, jusqu'à une fois par seconde lorsque le cadran est visible et non ambiant. Remarque : Les fournisseurs de complications synchrones peuvent être limités dans leur usage en raison de problèmes de pression sur la mémoire.
Il est probable que les modifications apportées à
PendingIntentTapListener
soient annulées, car nous avons résolu le problème sous-jacent (il est impossible pour le cadran de lancer des activités pendant cinq secondes après avoir appuyé sur le bouton d'accueil) dans le framework.
Modifications apportées à l'API
ComplicationData.isCached
a été remplacé partapActionLostDueToSerialization
, ce qui est plus utile pour déterminer si l'emplacement de la complication doit être affiché différemment pour indiquer qu'il n'est pas possible d'appuyer dessus. (I6de2f)- Ajout de
ComplicationDataTimeline
àwear-complication-data-source
. Elle peut être utilisée pour fournir une séquence deComplicationData
temporels à diffuser sur le cadran, qui peut être mise en cache et mise à jour automatiquement. Par exemple, les prévisions météo du jour à différents moments ou plusieurs événements d'agenda à venir.ComplicationRequestListener
a été étendu avec une nouvelle méthodeonComplicationDataTimeline
que vous pouvez utiliser pour renvoyer ces données. Il existe un nouveau wrapper Kotlin,SuspendingTimelineComplicationDataSourceService
, pour suspendre les services de source de données. (Idecdc) - Ajout de
PendingIntentTapListener
et deWatchFaceControlClient.getPendingIntentForTouchEvent
. Ces paramètres peuvent aider les montres qui doivent lancer des intents en réponse à des gestes pour contourner un problème où le framework bloque le lancement de nouvelles activités pendant cinq secondes après avoir appuyé sur le bouton d'accueil. (I98074) - Introduction d'un cache
ComplicationData
par cadran. L'objectif est de permettre au cadran d'afficher les dernières valeurs connues pour les données de complication lors du chargement, jusqu'à ce que le système ait eu le temps de les mettre à jour. Une nouvelle méthode d'APIWatchFaceControlClient.hasComplicationCache
est destinée aux OEM. Elle peut influencer la stratégie du système qui consiste à envoyer des complications à un cadran. De plus,ComplicationData
possède une propriétéisCached
, et il est recommandé d'afficher les complications mises en cache différemment, cartapAction
ne peut pas être mise en cache et seranull
dans une complication mise en cache. (I404b0) - L'identifiant d'instance du cadran est désormais disponible via
WatchState.watchFaceInstanceId
. La plupart des cadrans n'ont pas besoin d'utiliser cette fonctionnalité. Toutefois, si un état de cadran n'est pas stocké dans le schéma, il s'agit de la clé pour identifier l'instance du cadran. Pour vous aider, vous pouvez désormais fournir un identifiant lorsque vous appelezWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) DefaultComplicationDataSourcePolicy
étendue avec la possibilité de définir leComplicationTypes
par défaut pour les fournisseurs principal et secondaire et pour le fournisseur de système de remplacement.ComplicationSlot.defaultDataSourceType
est désormais obsolète. (If0ce3)ComplicationSlot.configExtras
est désormais modifiable et peut être mis à jour avant d'appelerEditorSession.openComplicationDataSourceChooser()
. (I6f852)- Ajout de
WatchFace.setComplicationDeniedDialogIntent
et desetComplicationRationaleDialogIntent
. Ces intents sont lancés pour afficher une boîte de dialogue logique avant de demander des autorisations de complication, ainsi qu'une autre boîte de dialogue expliquant que l'autorisation de complication est nécessaire si vous essayez de modifier une complication lorsque des autorisations ont été refusées (le sélecteur de fournisseur ne s'ouvre pas, la boîte de dialogue est donc nécessaire). (I3a29c) UserStyleSchema
etComplicationSlots
peuvent désormais être définis en XML. Cela simplifie la construction du cadran et accélère les requêtesWatchFaceMetadataClient
, qui n'ont plus besoin de se lier au service pour obtenir les métadonnées. (I85bfa)- Ajout de
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
pour permettre à un client de déterminer si un cadran est compatible avecgetPendingIntentForTouchEvent
. (I0b917) WatchFaceMetadataClient
etListenableWatchFaceMetadataClient
ne sont plus au stade expérimental. Ils permettent d'obtenir efficacement des métadonnées sur le cadran, lorsque cela est possible sans ouvrir de classeur sur le cadran. (Ibb827)- Une compatibilité pour les fournisseurs de complications synchrones a été ajoutée pour mettre à jour la complication plus fréquemment que d'habitude, jusqu'à une fois par seconde lorsque le cadran est visible et non ambiant. Pour l'utiliser, le fournisseur doit inclure une nouvelle balise
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
de métadonnées dans son fichier manifeste et ignoreronSynchronousComplicationRequest
. Selon la nature de la source de données, il peut également être nécessaire d'ignoreronStartSynchronousComplicationRequests
etonStopInteractiveComplicationRequests
pour recevoir des notifications lorsque la complication passe en mode interactif. (I8fe9d)
Version 1.0
Version 1.0.1
9 février 2022
Publication d'androidx.wear.watchface:watchface-*:1.0.1
. Liste des commits de la version 1.0.1
Correction de bugs
- Corrige le bug qui empêchait la bonne exécution de la tapAction de
PhotoImageComplicationData
(I1cc30)
Version 1.0.0
1er décembre 2021
Publication d'androidx.wear.watchface:watchface-*:1.0.0
. Liste des commits de la version 1.0.0
Principales fonctionnalités de la version 1.0.0
Le package androidx.wear.watchface
est la nouvelle bibliothèque recommandée pour le développement de cadrans Wear OS. Elle contient un certain nombre de nouvelles fonctionnalités par rapport à l'ancienne bibliothèque Support d'accessoires connectés.
- Le style utilisateur (par exemple, pour changer la palette de couleurs, le style des aiguilles de la montre, l'apparence des repères horaires, etc.) est directement compatible avec la bibliothèque (voir
androidx.wear.watchface.style
). Il est désormais beaucoup plus simple de développer un éditeur de cadran avec androidx.wear.watchface.editor. Vous pouvez modifier le cadran de l'application système associée sans avoir à écrire de code supplémentaire. - Bonnes pratiques intégrées. La bibliothèque génère automatiquement des libellés de contenu de lecteur d'écran pour les complications (vous pouvez également en ajouter). La fréquence d'images diminue automatiquement lorsque la batterie est faible et ne se recharge pas, pour améliorer l'autonomie de la batterie.
- Il faut moins de code pour développer un cadran, en particulier pour les complications dont une bonne partie du code récurrent se produit dans la bibliothèque.
Correction de bugs
- Corrige
EditorSession.userStyle.compareAndSet
(I6f676) - Corrige le très léger décalage au niveau du cadran (Iffb97)
- Gérer
InteractiveWatchFaceImpl.onDestroy
sur le thread d'interface utilisateur (I83340) - Corrige plusieurs problèmes liés à des broadcast receivers (I7d25f)
Version 1.0.0-rc01
3 novembre 2021
Publication d'androidx.wear.watchface:watchface-*:1.0.0-rc01
. Liste des commits de la version 1.0.0-rc01
Correction de bugs
Corrige le fichier dump() (appelé par adb shell dumpsys), qui a été brisé lors des migrations de flux. (087cf9e)
Assurez-vous que les writeDirectBootPrefs sont correctement commandées. Les writeDirectBootPrefs doivent toujours s'exécuter après initStyleAndComplications, sans quoi il y a un risque de retard d'initialisation du thread d'interface utilisateur. (37650ac)
Assurez-vous que Renderer.onDestroy est appelé. Si le moteur de rendu a été créé, mais que l'initialisation de WF n'est pas terminée et qu'Engine.onDestroy est appelé, il est nécessaire d'appeler Renderer.onDestroy. (f9952dc)
Optimisation/Correctif : isBatteryLowAndNotCharging. Ce correctif avance la configuration initiale de isBatteryLowAndNotCharging, qui peut donc être effectué en parallèle de createWatchFace. De plus, nous écoutons désormais ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive passe en valeur "false" après fermeture (ab9774e)
Version 1.0.0-beta01
27 octobre 2021
Publication d'androidx.wear.watchface:watchface-*:1.0.0-beta01
. Liste des commits de la version 1.0.0-beta01
Version 1.0.0-alpha24
13 octobre 2021
Publication d'androidx.wear.watchface:watchface-*:1.0.0-alpha24
. Liste des commits de la version 1.0.0-alpha24
Modifications apportées à l'API
- Les classes du package
androidx.wear.watchface.complications
ont été déplacées dans un nouveau projetwear:watchface:watchface-complications
. Notez que vous ne pouvez pas inclure cette bibliothèque ni toute version alpha antérieure dewear:watchface:watchface-complications-data
, car des erreurs se produiront en cas de classes en double. (I97195) - Renderer.dump a été renommé Renderer.onDump et a été annoté avec @UiThread. (I44845)
InteractiveWatchFaceClient.addWatchFaceReadyListener
a été renomméaddOnWatchFaceReadyListener
, etremoveWatchFaceReadyListener
a été renomméremoveOnWatchFaceReadyListener
. (I48fea)getComplicationsPreviewData
etgetComplicationsDataSourceInfo
d'EditorSession ne sont plus des fonctions de suspension, mais des propriétésStateFlow<>
dont la valeur initiale est nulle. Dans ListenableEditorSession,getListenableComplicationPreviewData
etgetListenableComplicationsProviderInfo
ont été supprimés en faveur des nouveaux objetsStateFlow<>
de la classe de base. Si vous devez écouter les modifications du code Java, utilisezandroidx.lifecycle.FlowLiveDataConversions.asLiveData
pour convertir enLiveData<>
. (Ic5483)
Version 1.0.0-alpha23
29 septembre 2021
Publication d'androidx.wear.watchface:watchface-*:1.0.0-alpha23
. Liste des commits de la version 1.0.0-alpha23
Nouvelles fonctionnalités
La bibliothèque de cadrans est désormais un groupe de bibliothèques unique. Les bibliothèques ont donc été déplacées. Mettez vos importations Gradle à jour comme suit :
Ancien | Nouveau |
---|---|
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 |
Modifications apportées à l'API
- Migrez les bibliothèques de cadran et de complications
androidx.wear
distinctes dans le groupe de bibliothèquesandroidx.wear.watchface
. (b25f3c0) - Ajout d'EditorRequest.canWatchFaceSupportHeadlessEditing pour indiquer à un client si un éditeur de cadran est compatible avec la modification sans interface graphique. Notez qu'il y aura de faux négatifs, car la compatibilité a été ajoutée dans asop/1756809, mais elle renvoie la valeur correcte pour tous les futurs cadrans. (ca55590)
- Le moteur de rendu dispose désormais d'une méthode dump() qui peut être ignorée pour ajouter des données personnalisées aux informations générées par le service d'activité WatchFaceService d'adb dumpsys shell. (95235f9)
- InteractiveWatchFaceClient.addWatchFaceReadyListener indique désormais l'exécuteur en premier. (563ac2f)
- StateFlowCompatHelper a été supprimé. Utilisez asLiveData (androidx.lifecycle.asLiveData) à la place. (bd35d3)
- CurrentUserStyleRepository.userStyle n'est plus modifiable. (I44889)
- WatchFaceReadyListener a été renommé OnWatchFaceReadyListener. (Ic12a9)
Correction de bugs
- InteractiveInstanceManager.deleteInstance pour appeler onDestroy. Cela est nécessaire pour s'assurer qu'InteractiveWatchFaceImpl récupère la mémoire. (fce4af8, b/199485839)