Wear Watchface
Remarque : Le Watch Face Format est obligatoire pour que les cadrans puissent être installés sur les appareils sur lesquels Wear OS 5 ou une version ultérieure est préinstallée, ainsi que pour tous les nouveaux cadrans publiés sur Google Play.
À partir de janvier 2026, le format Watch Face Format sera obligatoire pour que les cadrans puissent être installés sur tous les appareils Wear OS.
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 |
|---|---|---|---|---|
| 23 avril 2025 | 1.2.1 | - | - | 1.3.0-alpha07 |
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-alpha07
23 avril 2025
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha07. La version 1.3.0-alpha07 contient ces commits.
Nouvelles fonctionnalités
- Il est possible de définir le schéma UserStyle d'un cadran depuis un certain temps, et de définir
ColorUserStyleSettingen XML.
Modifications apportées à l'API
- Les projets publiés avec Kotlin 2.0 nécessitent KGP 2.0.0 ou une version ultérieure pour être consommés. (Idb6b5)
- Ajout de l'API Watch Face Push, qui permet à une application Wear OS d'installer un cadran sur une montre de manière programmatique.
Correction de bugs
- Nous recommandons aux fournisseurs de complications qui utilisent la version 1.3.0-alpha06 de la mise à niveau, car un bug de plantage avec
ComplicationDataSourceUpdateRequestera été corrigé dans la prochaine version de WearOS.
Version 1.3.0-alpha06
26 mars 2025
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha06. La version 1.3.0-alpha06 contient ces commits.
Nouvelles fonctionnalités
- Les API de cadran Wear (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava et watchface-style) ont été abandonnées au profit du format de cadran Wear et seront finalement supprimées d'AndroidX. Les API de complication ne sont pas obsolètes et resteront disponibles. (Ice960)
- Les API de complication peuvent désormais communiquer directement avec
WearSDK, ce qui est plus efficace en raison du nombre réduit de sauts IPC.
Version 1.3.0-alpha05
15 janvier 2025
Publication d'androidx.wear.watchface:watchface-*:1.3.0-alpha05. La version 1.3.0-alpha05 contient ces commits.
Nouvelles fonctionnalités
Les cadrans permettent généralement à l'utilisateur de sélectionner des couleurs à l'aide d'un ListUserStyle. Bien que cela fonctionne, cela implique d'envoyer les icônes via Bluetooth à l'éditeur associé, ce qui est inefficace. Nous avons donc introduit ColorUserStyleSetting, où la charge utile est une liste d'une ou plusieurs couleurs par style, qui présente un format de fil beaucoup plus compact.
Nous avons ajouté une fonctionnalité destinée aux OEM qui permet aux fournisseurs de complications OEM d'ajouter des éléments supplémentaires à ComplicationData pour les utiliser dans les cadrans OEM.
Modifications apportées à l'API
- Les classes
UserStyleSettingetUserStyleOptiondisposent désormais de compilateurs, qui constituent la méthode recommandée pour les créer. (Iacd03) - Prise en charge de la transmission d'extras dans
ComplicationData. Il est destiné aux OEM qui contrôlent à la fois le fournisseur de complications et le cadran destinataire. Pour définir un extra, vous devez disposer de l'autorisationcom.google.android.wearable.permission.COMPLICATION_EXTRASprivilégiée. (I4e3b2) - Les cadrans permettent généralement à l'utilisateur de sélectionner des couleurs à l'aide d'un
ListUserStyle, avec une icône pour chaqueListOption. Étant donné que les schémasUserStylesont envoyés via Bluetooth, il est important de réduire leur taille, ce qui peut poser problème si de nombreuses dizaines d'options de couleur sont fournies en raison de toutes ces icônes. Pour vous aider, nous avons ajoutéColorUserStyleSetting, où l'option contient une liste de couleurs au lieu d'une icône, ce qui est beaucoup plus compact. (Ib542e) ColorUserStyleSettingetColorOptionnécessitent l'API 34. (I8771d)
Correction de bugs
- Cette bibliothèque utilise désormais les annotations de nullité JSpecify, qui sont des annotations de type. Les développeurs Kotlin doivent utiliser l'argument de compilateur suivant pour appliquer une utilisation correcte:
-Xjspecify-annotations=strict(valeur par défaut à partir de la version 2.1.0 du compilateur Kotlin). (Ifd363, b/326456246)
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
UserStyleSettingsetUserStyleOptions, ce qui améliore les performances de chargement des cadrans. (Iaf43d) - Ajout d'une option permettant de prendre une capture d'écran à 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 leComplicationDatade 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,
selectComplicationDataForInstantappelaittoApiComplicationDatapour 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
WatchFaceServicespeuvent ê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. GlesRenderer2dispose 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
StatefulWatchFaceServiceprend désormais en charge un forçage degetComplicationSlotInflationFactorydans 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
createUserStyleSchemaavec les autres méthodes d'initialisation. Comme il n'existait pas de meilleure alternative, les développeurs ont généralement rendu leurWatchFaceServicesavec é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 introduitStatefulWatchFaceServiceetStatefulWatchFaceRuntimeService, 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) GlesRenderer2dispose 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, Wear OS sera compatible avec
SystemDataSources.DATA_SOURCE_HEART_RATE. Cette complication n'est compatible qu'avec les complicationsSHORT_TEXT, mais il est recommandé queComplicationSlotaccepte é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 est compatible avec 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_ACTIONsur "false", ce qui indique que l'emplacement de complication n'est pas 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
ColorRangesdansRangedValueComplicationData. Normalement, les complications doivent s'afficher dans les couleurs choisies pour le cadran, mais parfois,ComplicationDataSourceest 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
ComplicationDataacceptent désormaisSmallImages. - Nous avons ajouté
ComplicationDisplayPolicyoùDO_NOT_SHOW_WHEN_DEVICE_LOCKEDindique à 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_FACESdans le fichier manifeste de leur fournisseur parComplicationRequest#isForSafeWatchFace. Le fournisseur aura besoin de l'autorisationcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEpour recevoir d'autres valeurs que TargetWatchFaceSafety.UNKNOWN. UserStyleFlavorsn'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#onDestroyest désormais ouvert. Notez que la compatibilité avec une complication météo par défaut du système a été supprimée.
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 du 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
WatchFaceRuntimeServiceetWatchFaceControlClient.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,TapTypeouComplicationsSlotBoundsTypen'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
WatchFaceTypedansWatchFaceTypes, les constantesCanvasTypedansCanvasTypes, les constantesTapTypedansTapTypeset les constantesComplicationsSlotBoundsTypedansComplicationsSlotBoundsType. (I3b85a, b/288750666) WatchFace.OverlayStyleest très peu utilisé et n'est pas bien pris en charge par les OEM. Nous allons donc le déprécier dans 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.Builderaccepte désormaisDynamicFloat, et un nouveauDynamicComplicationTextest 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
PlatformDataProviderpour fournir la fréquence cardiaque et le nombre de pas quotidiens. L'interfaceSensorGatewayest supprimée de l'API publique. (I55b84) - Rename
StateEntryValuetoDynamicDataValue, and update the state APIs to use theDynamicDataKey. (If1c01) - Ajout de
AppDataKeypour accéder à l'état de l'application transmise ; ajout dePlatformDataKeypour 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/disablePlatformSourceont é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_FACEprivilégié peuvent enregistrer des métadonnéesandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPESqui remplacentandroid.support.wearable.complications.SUPPORTED_TYPESpour 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
@Deprecatedvers 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é
renderWatchFaceToSurfaceau 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,HeadlessWatchFaceClientetEditorSession. En général, cette méthode est plus performante que le rendu dans un bitmap. (Ieacad) ObservableStateStorea été renomméStateStore. (Ieb0e2)- Ajout de
DynamicTypeEvaluator.Builderau 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) - Réorganisation 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àBoundDynamicTypepour 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_FACEprivilégié peuvent enregistrer des métadonnéesandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPESqui remplacentandroid.support.wearable.complications.SUPPORTED_TYPESpour les cadrans sécurisés. (Id1c73) CustomValueUserStyleSettings2a été renomméLargeCustomValueUserStyleSettings. (Ic17ac)
Correction de bugs
DynamicTypeValueReceiver#onPreUpdatea é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_FACESdans le fichier manifeste de leur fournisseur parComplicationRequest#isForSafeWatchFace. Le fournisseur aura besoin de l'autorisationcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEpour recevoir d'autres fichiers queTargetWatchFaceSafety.UNKNOWN.Également à partir d'Android T,
CustomValueUserStyleSetting2est 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àGlesRendereretGlesRenderer2, qui vous permet de définir laEGL14.EGL_CONTEXT_CLIENT_VERSIONtransmise àEGL14.eglCreateContext. (I2a83e) - Nous avons migré les bibliothèques de cadrans vers
androidx.core.util.Consumerau lieu dejava.util.function.Consumer. (I273f5) - Davantage d'exceptions émises par les accesseurs de propriétés KT. (Iff9d9)
- Nous avons ajouté
InteractiveWatchFaceClient.isComplicationDisplayPolicySupportedafin 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
isForSafeWatchFacedoit être unIntDefà trois états. (Ief2f7) - Pour Android T, nous avons lancé
ComplicationRequest.isForSafeWatchFacequi 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é
CustomValueUserStyleSetting2qui 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
ComplicationSlotavec 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
UserStyleSettingshiérarchiques, et depuis Android T, il est désormais possible d'avoir plusieursComplicationSlotsUserStyleSettingdans une hiérarchie. Un seulComplicationSlotsUserStyleSettingsera 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 chargeListOptionetComplicationSlotsOption. 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 optionsListOptionetComplicationSlotsOptionpour 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
ComplicationSlotsUserStyleSettingssont 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àUserStyleSchemapour vous aider à trouver l'élémentComplicationSlotsOptionactif, le cas échéant. (Ic2b06) - Des
RangedValuesTypesont été intégrés à l'objet associé deRangedValueComplicationDataet renommésTYPE_UNDEFINED,TYPE_RATING, et un nouveauTYPE_PERCENTAGEa été ajouté. (I55d02) - Nous avons renommé le
DynamicFloatexpé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 (
GoalProgressComplicationDataetWeightedElementsComplicationData). GoalProgressComplicationDataest 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.GoalProgressComplicationDataaccepte les graphiques à secteurs et les répartitions similaires des données simples.- Nous avons ajouté une compatibilité facultative pour
ColorRampsdansRangedValueComplicationData. - Pour Android T, nous avons ajouté
ComplicationPersistencePolicyetsetCachePolicyà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éComplicationDisplayPolicyoùDO_NOT_SHOW_WHEN_DEVICE_LOCKEDindique à un cadran compatible de ne pas afficher la complication quand l'appareil est verrouillé. (Ic9574)
Modifications apportées à l'API
GoalProgressComplicationData,WeightedElementsComplicationDataetColorRampne sont plus au stade expérimental. (Ica9e2)ComplicationPersistencePolicyetComplicationDisplayPolicysont désormais correctement marquées comme API T. (I31d88)- Le constructeur obsolète
ComplicationSlotOverlaycontient maintenantDeprecationLevel.WARNING, ce qui permet de l'appeler à nouveau depuis Java. (Ib308c) - Nous avons corrigé certains problèmes de compatibilité Java concernant
ComplicationRequestListener,CanvasComplication,ComplicationTapFilteretInteractiveWatchFaceClienten les annotant avec@JvmDefaultWithCompatibility(Id94fc). - Nous avons supprimé les
ProtoLayoutComplicationDataetListComplicationDataexpé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.WeightedElementsComplicationDataaccepte 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
isForScreenShotdans les fonctions equals et le code de hachage. S'assure queonRenderParametersChangedobtient une valeurisForScreenshotcorrecte (I04a41). - Les problèmes de fuite de
WatchFaceControlServiceprovenant 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 lesrootUserStyleSettingsne sont plus au stade expérimental. (Ie96e3) - Nous avons retiré les
rootUserStyleSettingsdu stade expérimental. (I8d6b3) - Nous avons marqué les
WatchFaceColorscomme étant au stade expérimental, car elles ne sont pas compatibles avec tous les systèmes. (I6d75d) - Nous avons placé les
DisconnectReasonsdans l'API publique pour qu'elles fonctionnent avecIntDef. (I791f8)
Correction de bugs
- Ferme toutes les ouvertures de l'éditeur de cadran si
SysUIs'arrête. SiSysUIs'arrête et que l'éditeur de cadran ne se ferme pas, le cadran peut donc rester incohérent, car le système repose surSysUIpour 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
UserStylequi 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
ComplicationDataacceptent 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
DisconnectReasonet 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 (
nameResourceIdetscreenReaderResourceId) au constructeurComplicationSlotOverlay. (I157e8) - Nous avons ajouté un wrapper Guava pour la nouvelle surcharge de
getOrCreateInteractiveWatchFaceClientavec unPreviewImageUpdateRequestedListener. (Ic31f0) - Nous avons ajouté
Renderer.sendPreviewImageNeedsUpdateRequest, ce qui est utile pour les cadrans dont l'état est en dehors deUserStyleSchemaqui affecte leur apparence (par exemple, un cadran avec une image de fond sélectionnable). Côté client, nous avons ajoutéPreviewImageUpdateRequestedListeneren tant que paramètre facultatif àgetOrCreateInteractiveWatchFaceClientpour observer ces requêtes. (Iff44a) - Nous avons simplifié l'API pour exposer
WatchFaceColors. Désormais, il existe une propriété simple appeléewatchFaceColorssur 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'utiliserWallpaperManagerpour observer les changements de couleur, nous avons ajoutéOnWatchFaceColorsListeneràInteractiveWatchFaceClient. (I490bc) - Nous avons ajouté une classe
WatchFaceColorsqui contient les trois couleurs de cadran les plus visibles, ainsi que les méthodes ouverteswatchfaceColorsetnotifyWatchFaceColorsChangedau moteur de rendu. Elles permettent au système d'obtenir les couleurs du cadran viaWallpaperManager.getWallpaperColors. (I3d611) ShortTextComplicationData,RangedValueComplicationData,NoPermissionComplicationData(ainsi queDiscreteRangedValueComplicationData,GoalProgressComplicationDataetWeightedElementsComplicationDataexpérimentales) sont désormais compatibles avecSmallImages. Si un cadran choisit d'afficher une complication avec plusieurs couleurs, il peut désormais utiliser uneSmallImagemulticolore alors qu'il aurait dû auparavant utiliser une image monochrome. (I257df)- Refactorisez
PreviewImageUpdateRequestedListenerpour qu'il devienne à la place unConsumer<>(Ia875d). - Remplacez le type de SAM ("Single Abstract Method" pour "méthode abstraite unique")
OnWatchfaceColorsListenerpar le type de SAM Java générique (Consumer) (I0C489. - Nous avons abandonné les anciennes méthodes
getOrCreateInteractiveWatchFaceClientetlistenableGetOrCreateInteractiveWatchFaceClientqui 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
BoundingArcest 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),
ComplciationSlotsn'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.getComplicationSlotInflationFactorypour être cohérent aveccreateComplicationSlotsManager. (I2ddd2) UserStyleFlavorsn'est plus une fonctionnalité expérimentale. (I69cdc)- Nous avons supprimé le
ValueTypeexpérimental deRangedValueComplicationDataet introduit laDiscreteRangedValueComplicationDataexpérimentale, qui est semblable à laRangedValueComplicationData, à l'exception de la plage et de la valeur entières. Nous avons également introduit uneGoalProgressComplicationDataexpé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é
boundsWithMarginsdeComplicationSlotState, 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
ColorRampsexpérimental (facultatif) utilisé parRangedValueComplicationDataetGoalProgressComplicationDatavous 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.drawSegmenteda été remplacé parvalueType, qui est un entier avec unValueType IntDefcorrespondant 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,ComplicationDataSourceest 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
drawSegmentedexpé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
ComplicationSlotBoundspar 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
pendingInitialComplicationset appliquée ultérieurement. Malheureusement,pendingInitialComplicationsa é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 surpendingInitialComplicationset être ignorées. Ce problème a été résolu. De plus, ce correctif corrige un bug :ComplicationRenderertentait 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ùgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstancemaintenait le verrouillage plus longtemps que nécessaire. En règle générale,engine.setUserStyledevrait ê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,StateFlowspeut retenirWatchFaceService. L'annulation desCoroutineScopessous-jacentes corrige ce problème. (fd48138)Ajout de délais d'inactivité à
awaitDeferredWatchFace* et correction de laNullPointerExceptiondewatchfaceOverlayStyle. Dans des circonstances normales, cette opération ne doit pas expirer, même après une nouvelle installation et des scénariosDirectBootdans lesquels la charge du processeur est élevée. Nous avons également corrigé un NPE sigetWatchfaceOverlayStyleest 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
ComplicationSlotsafin 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
ComplicationTypepour 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
ComponentNamedu 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 :
UserStyleSchemaetComplicationSlotspeuvent 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
ComplicationSlotBoundset de prendre en charge les références. Le test avec la complication d'arêteBoundingArcse 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
ComplicationSlotBoundsdans les formulairescenter_x,center_y,size_xetsize_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.closesynchrone. Le problème avecBaseEditorSession.closeasynchrone est que nous publionsComplicationDataSourceInfoRetrievertrop 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 àComplicationSlotet arrive jusqu'àComplicationSlotStateetWatchFaceMetadataClient. (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:ListComplicationDataetProtoLayoutComplicationData. 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 leTimeLineEntriesde 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.ComplicationTextlors d'une complication. (217942d9) - Corrige un bug dans
GlesRenderer.backgroundThreadInitInternal, qui n'appelaitonBackgroundThreadGlContextCreatedque 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
NoDataComplicationstockait 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.getUserStyleFlavorslèvent une exception RuntimeException au lieu deWatchFaceException. (I0718a) WatchFaceMetadataClient.WatchFaceExceptiona été retirée de la classe pour pouvoir être réutilisée. (I4e869)
Correction de bugs
WatchFaceMetadataClientne plantera plus si une partie deComplicationSlotBoundsa é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
ComplicationDataen inspectantComplicationData.dataSource. Certains cadrans peuvent utiliser cette information pour personnaliser l'affichage des complications. (I44a73)
Modifications apportées à l'API
Renderer.CanvasRendereretRenderer.GlesRendereront été abandonnés au profit deRenderer.CanvasRenderer2etRenderer.GlesRenderer2, qui prennent en chargeSharedAssets, transmis aux méthodes d'affichage. Pour l'interopérabilité Java, nous avons introduitListenableCanvasRenderer2etListenableGlesRenderer2. (I31ffa)- Ajout de la fonctionnalité
@WatchFaceFlavorsExperimentalpour définir des "saveurs", à savoir une liste préconfigurée de cadrans personnalisés (I04dd0) Renderer.sharedAssetsest désormais un StateFlow et nous avons supprimé leRenderer.SharedAssetsFactoryinutilisé (I12ac5)UserStyleSchema.userStyleSettingsn'est plus obsolète (Iba7e3)- Ajout de
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, qui permet à unHeadlessWatchFaceClientd'é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 leUserStyleSchemapeut ê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 leUserStyleSchemaa changé. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTEDrenommé enMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED(I9ba5d)UserStyleSetting.OnWatchEditorDataa é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
ComplicationDatane soit pas toujours disponible (par exemple, des données ComplicationData mises en cache arrivées à expiration). Nous avons donc étenduNoDataComplicationavec 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.watchFaceIdpeut désormais être utilisé à tous les niveaux d'API. De plus, sa valeur sera toujours cohérente avecWatchState.watchFaceInstanceId. (I323b9)- L'API
getPendingIntentForTouchEventn'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àWatchFaceExceptionpour vous donner plus d'informations sur le problème. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequesta été supprimé. À la place,ComplicationRequest.immediateResponseRequireda é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 pourCanvasRendereret 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.setEglConfigetGlesRenderer.setEglDisplaysont obsolètes. Ils n'étaient pas destinés à être définissables, ce qui aurait conduit à une réaction inattendue. (I0d9e7) - Nous avons ajouté
setNameResourceIdetsetScreenReaderNameResourceId(qui font référence aux ressources de chaîne) àComplicationSlot.Builderet 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.getUserStyleSchemaetgetComplicationSlotMetadataMapgénèrent désormais uneWatchFaceExceptionau lieu deRemoteException. (I86f11)onSynchronousComplicationRequestet les fonctions associées dansComplicationDataSourceServiceont é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é
@JvmOverloadsau constructeur de ListenableGlesRenderer pour améliorer l'interopérabilité Java. (I2974a)
Correction de bugs
- Le constructeur de
ListenableGlesRendererest 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,
ComplicationDataet 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
WatchfaceMetadataClientgénèrent à nouveau l'erreurRemoteExceptionsle cas échéant, ce qui permet au code client de détecter plus facilement les erreurs sur le cadran. (I78785) ComplicationDataet 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
UserStyleSchemaetComplicationSlotspeuvent désormais être définis en XML. Cela simplifie la construction du cadran. De plus, les requêtesWatchFaceMetadataClientsont plus rapides, car elles n'ont pas besoin de s'associer au service pour obtenir les métadonnées.WatchFaceMetadataClientetListenableWatchFaceMetadataClientne 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
ComplicationDatasont désormais mis en cache pour que les complications s'affichent dès leur chargement. Parfois,ComplicationDataest 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.tapActionLostDueToSerializationrenvoietrue, 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 lesComplicationDatamises à jour avec unetapActiondès que possible.Certains
ComplicationDatane 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 deComplicationDatatemporels à 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.ComplicationRequestListenera été étendu avec une nouvelle méthodeonComplicationDataTimelineque vous pouvez utiliser pour renvoyer ces données.DefaultComplicationDataSourcePolicya été étendu pour que vous puissiez préciser leComplicationTypepour 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 à
PendingIntentTapListenersoient 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.isCacheda é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 deComplicationDatatemporels à 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.ComplicationRequestListenera été étendu avec une nouvelle méthodeonComplicationDataTimelineque 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
PendingIntentTapListeneret 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
ComplicationDatapar 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.hasComplicationCacheest destinée aux OEM. Elle peut influencer la stratégie du système qui consiste à envoyer des complications à un cadran. De plus,ComplicationDatapossède une propriétéisCached, et il est recommandé d'afficher les complications mises en cache différemment, cartapActionne peut pas être mise en cache et seranulldans 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 leComplicationTypespar défaut pour les fournisseurs principal et secondaire et pour le fournisseur de système de remplacement.ComplicationSlot.defaultDataSourceTypeest désormais obsolète. (If0ce3)ComplicationSlot.configExtrasest désormais modifiable et peut être mis à jour avant d'appelerEditorSession.openComplicationDataSourceChooser(). (I6f852)- Ajout de
WatchFace.setComplicationDeniedDialogIntentet 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) UserStyleSchemaetComplicationSlotspeuvent 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.supportsPendingIntentForTouchEventpour permettre à un client de déterminer si un cadran est compatible avecgetPendingIntentForTouchEvent. (I0b917) WatchFaceMetadataClientetListenableWatchFaceMetadataClientne 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_SECONDSde 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'ignoreronStartSynchronousComplicationRequestsetonStopInteractiveComplicationRequestspour 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.onDestroysur 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.complicationsont é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.addWatchFaceReadyListenera été renomméaddOnWatchFaceReadyListener, etremoveWatchFaceReadyListenera été renomméremoveOnWatchFaceReadyListener. (I48fea)getComplicationsPreviewDataetgetComplicationsDataSourceInfod'EditorSession ne sont plus des fonctions de suspension, mais des propriétésStateFlow<>dont la valeur initiale est nulle. Dans ListenableEditorSession,getListenableComplicationPreviewDataetgetListenableComplicationsProviderInfoont é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.asLiveDatapour 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.weardistinctes 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)