Quadrante Wear
Nota: a partire da gennaio 2026, il Watch Face Format è necessario per installare quadranti su tutti i dispositivi Wear OS.
Scopri di più sulle modifiche visibili agli utenti in questo articolo del Centro assistenza.
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 17 dicembre 2025 | 1.2.1 | - | 1.3.0-beta01 | - |
Dichiara le dipendenze
Per aggiungere una dipendenza da Wear, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per
la tua app o il tuo modulo:
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" }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per saperne di più, consulta la documentazione di Issue Tracker.
Versione 1.3
Versione 1.3.0-beta01
17 dicembre 2025
androidx.wear.watchface:watchface-*:1.3.0-beta01 è stato rilasciato. La versione 1.3.0-beta01 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per i dati di anteprima delle complicazioni statiche, in cui un fornitore di complicazioni può specificare dati di anteprima statici nel manifest. Per maggiori dettagli, consulta
androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser. - È stata aggiunta la classe di utilità
ComplicationTextFormattingcon il supporto per la formattazione di data e ora nel modo più conciso possibile, utile per le complicazioni in cui lo spazio è molto limitato.
Modifiche alle API
- La proprietà precedentemente sperimentale
Renderer.watchfaceColorsè ora privata. Esistono ancora accessor pubblici per questa proprietà. (Ifdf60, b/409363281)
Correzioni di bug
- I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive. (I48968, b/407632515)
Versione 1.3.0-alpha07
23 aprile 2025
androidx.wear.watchface:watchface-*:1.3.0-alpha07 è stato rilasciato. La versione 1.3.0-alpha07 contiene questi commit.
Nuove funzionalità
- È possibile definire lo schema UserStyle di un quadrante da un po' di tempo ed è possibile definire
ColorUserStyleSettingin XML.
Modifiche alle API
- I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive. (Idb6b5)
- È stata aggiunta l'API Watch Face Push, che consente a un'app Wear OS di installare un quadrante su uno smartwatch in modo programmatico.
Correzioni di bug
- I fornitori di complicazioni che utilizzano la versione 1.3.0-alpha06 sono invitati a eseguire l'upgrade perché è stato corretto un bug di arresto anomalo con
ComplicationDataSourceUpdateRequesternella prossima versione di WearOS.
Versione 1.3.0-alpha06
26 marzo 2025
androidx.wear.watchface:watchface-*:1.3.0-alpha06 è stato rilasciato. La versione 1.3.0-alpha06 contiene questi commit.
Nuove funzionalità
- Le API per i quadranti di Wear (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava e watchface-style) sono state ritirate a favore del formato per i quadranti di Wear e verranno rimosse da AndroidX. Le API per le complicazioni non sono deprecate e rimarranno. (Ice960)
- Le API per le complicazioni ora sono in grado di comunicare direttamente con
WearSDK, il che è più efficiente grazie a un minor numero di hop IPC.
Versione 1.3.0-alpha05
15 gennaio 2025
androidx.wear.watchface:watchface-*:1.3.0-alpha05 è stato rilasciato. La versione 1.3.0-alpha05 contiene questi commit.
Nuove funzionalità
I quadranti in genere consentono all'utente di selezionare i colori utilizzando un ListUserStyle. Sebbene questo metodo funzioni, comporta l'invio delle icone tramite Bluetooth all'editor complementare, il che è inefficiente. Per questo motivo, abbiamo introdotto ColorUserStyleSetting, in cui il payload è un elenco di uno o più colori per stile, con un formato di trasmissione molto più compatto.
Abbiamo aggiunto una funzionalità rivolta agli OEM che consente ai fornitori di complicazioni OEM di aggiungere extra a ComplicationData per l'utilizzo da parte dei quadranti OEM.
Modifiche alle API
UserStyleSettingeUserStyleOptionora hanno dei builder, che sono il modo consigliato per costruirli. (Iacd03)- Supporto per il passaggio di extra in
ComplicationData. È destinato all'uso da parte degli OEM che controllano sia il fornitore di complicazioni sia il quadrante dell'orologio ricevente. Per impostare un extra è necessaria l'autorizzazione con privilegicom.google.android.wearable.permission.COMPLICATION_EXTRAS. (I4e3b2) - I quadranti in genere consentono all'utente di selezionare i colori utilizzando un
ListUserStyle, con un'icona per ogniListOption. Poiché gli schemiUserStylevengono inviati tramite Bluetooth, è importante ridurre le dimensioni dello schema, il che può essere un problema se vengono fornite molte decine di opzioni di colore a causa di tutte queste icone. Per facilitare questa operazione, abbiamo aggiuntoColorUserStyleSetting, dove l'opzione contiene un elenco di colori anziché un'icona, il che è molto più compatto. (Ib542e) ColorUserStyleSettingeColorOptionrichiedono l'API 34 per l'utilizzo. (I8771d)
Correzioni di bug
- Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per imporre l'utilizzo corretto:
-Xjspecify-annotations=strict(questo è il valore predefinito a partire dalla versione 2.1.0 del compilatore Kotlin). (Ifd363, b/326456246)
Versione 1.3.0-alpha04
18 settembre 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha04 è stato rilasciato. La versione 1.3.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per il caricamento differito delle icone in
UserStyleSettingseUserStyleOptions, il che migliora le prestazioni di caricamento dei quadranti. (Iaf43d) - È stata aggiunta un'opzione per acquisire uno screenshot aggiornato ogni volta che la configurazione del sistema cambia (ad es. se le impostazioni internazionali sono cambiate) tramite il nuovo
Watchface.setUpdateScreenshotOnConfigurationChange. Per impostazione predefinita, questa impostazione è disattivata. (I765a1)
Correzioni di bug
- È stata rimossa la definizione manuale dell'accesso alle nuove API della piattaforma, poiché avviene automaticamente tramite la modellazione delle API quando si utilizza R8 con AGP 7.3 o versioni successive (ad es. R8 versione 3.3) e per tutte le build quando si utilizza AGP 8.1 o versioni successive (ad es. D8 versione 8.1). I client che non utilizzano AGP sono invitati a eseguire l'aggiornamento alla versione 8.1 o successive di D8. Consulta questo articolo per ulteriori dettagli. (Ia60e0, b/345472586)
Versione 1.3.0-alpha03
17 aprile 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha03 è stato rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
- Abbiamo aggiunto
EditorSession#setOverrideComplications, che imposta temporaneamenteComplicationDatadell'istanza del quadrante sottostante durante la modifica. Se le complicazioni cambiano di rado, questo metodo è più efficiente rispetto al passaggio degli override tramiteEditorSession#renderWatchFaceToBitmap. (I19384)
Correzioni di bug
- In precedenza,
selectComplicationDataForInstantchiamavatoApiComplicationDataper qualsiasi sequenza temporale, il che significa che il successivo test di uguaglianza dei riferimenti === non riusciva mai. Ciò significava che le complicazioni venivano ricaricate ogni frame, causando un consumo della batteria. (717406)
Versione 1.3.0-alpha02
3 aprile 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha02 è stato rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Nuove funzionalità
- Ora utilizziamo l'uguaglianza di riferimento per confrontare best e
selectedDataperché l'operatore di uguaglianza è costoso. (446b00)
Modifiche alle API
- Abbiamo aggiunto un'API dinamica senza fallback per
GoalProgressComplicationData. (c33264)
Versione 1.3.0-alpha01
7 febbraio 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha01 è stato rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
WatchFaceServicespossono essere inizializzati contemporaneamente e, pertanto, devono essere stateless. Per supportare questa funzionalità, abbiamo aggiuntoStatefulWatchFaceService, in cui un extra definito dall'utente creato dacreateExtra()viene passato a tutti gli override chiamati durante l'inizializzazione.GlesRenderer2ora ha un overload del costruttore che consente di specificare un elenco di attributi da provare a turno coneglChooseConfig.
Modifiche alle API
StatefulWatchFaceServiceora supporta l'override digetComplicationSlotInflationFactoryin cui viene passato l'extra definito dall'utente creato dacreateExtra(). (I82d9f)- Alcuni quadranti devono condividere i dati ausiliari creati durante
createUserStyleSchemacon gli altri metodi di inizializzazione. Poiché non esisteva un'alternativa migliore, gli sviluppatori in genere rendevano stateful il proprioWatchFaceServices. Ciò è pericoloso perché è possibile creare più istanze contemporaneamente, il che può causare bug. Per risolvere questo problema, abbiamo introdottoStatefulWatchFaceServiceeStatefulWatchFaceRuntimeService, in cui un tipo definito dall'utente viene creato dacreateExtra()e viene passato ai vari metodi di creazione come parametro. (If8a99) - Abbiamo aggiunto
getUserStyleFlavorsaInteractiveWatchFaceClient, che è di interesse principalmente per gli OEM. (I0f5d8) GlesRenderer2ora ha un overload del costruttore che consente di specificare un elenco di attributi da provare a turno coneglChooseConfig. Ad esempio, ti consente di provare prima una configurazione con anti-aliasing e di ripristinarne una senza, se necessario. (I1ba74)- A partire da Android U, il supporto di
SystemDataSources.DATA_SOURCE_HEART_RATEverrà aggiunto a WearOS. È garantito che questa complicazione supporti solo le complicazioniSHORT_TEXT, ma è consigliabile cheComplicationSlotaccetti ancheSMALL_IMAGE, perché gli OEM potrebbero scegliere di mostrare una scorciatoia alla propria app per la salute anziché il valore in tempo reale. (I34223) - Abbiamo aggiunto
METADATA_KEY_CONFIG_RESTORE_SUPPORTEDche, a partire da Android U, controlla cosa succede quando il sistema viene ripristinato da un backup per l'origine dati della complicazione conMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION. Per impostazione predefinita, il sistema presuppone che il servizio di origine dati della complicazione supporti il backup di tutti i dati di configurazione, ma se non lo fa, può aggiungere l'impostazione dei metadatiMETADATA_KEY_DATA_SOURCE_CONFIG_ACTIONsu false, che contrassegnerà lo spazio della complicazione come non configurato. (I6c505)
Versione 1.2
Versione 1.2.1
24 gennaio 2024
androidx.wear.watchface:watchface-*:1.2.1 è stato rilasciato. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- È stato risolto un arresto anomalo su Samsung Galaxy Watch 4, 5 e 6. (43f0b0)
Versione 1.2.0
29 novembre 2023
androidx.wear.watchface:watchface-*:1.2.0 è stato rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
- Abbiamo aggiunto il supporto di alcuni nuovi tipi di complicazioni disponibili per l'uso da Android T:
GoalProgressComplicationData, simile aRangedValueComplicationData, tranne per il fatto che si riferisce all'avanzamento verso un obiettivo in cui il valore minimo è implicitamente zero e il valore può essere maggiore ditargetValue.WeightedElementsComplicationData, che consiste in un array di elementi (coppie di peso e colore) insieme a testo/titolo/immagine facoltativi. Questi dati potrebbero essere visualizzati come un grafico a torta in cui i colori devono essere significativi in base al contesto, poiché in genere non c'è spazio in una complicazione per visualizzare le etichette.
- È stato aggiunto il supporto per
ColorRangesfacoltativo aRangedValueComplicationData. Normalmente le complicazioni vengono visualizzate nei colori scelti per il quadrante, ma a volte è meglio che sia l'ComplicationDataSourcea impostare i colori, ad esempio quando hanno un significato semantico particolare. Ad esempio, dal rosso al blu per la temperatura. - Quasi tutti i tipi di
ComplicationDataora supportanoSmallImages. - Abbiamo aggiunto
ComplicationDisplayPolicy, doveDO_NOT_SHOW_WHEN_DEVICE_LOCKEDindica a un quadrante compatibile di non visualizzare la complicazione quando il dispositivo è bloccato. - A partire da Android T, gli OEM potranno determinare se una richiesta di complicazione proviene da un quadrante nell'elenco definito dai metadati
android.support.wearable.complications.SAFE_WATCH_FACESnel manifest del provider tramiteComplicationRequest#isForSafeWatchFace. Il fornitore avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEper ricevere qualsiasi valore diverso da TargetWatchFaceSafety.UNKNOWN. UserStyleFlavorsè diventata una funzionalità non sperimentale.
Versione 1.2.0-rc01
18 ottobre 2023
androidx.wear.watchface:watchface-*:1.2.0-rc01 è stato rilasciato. La versione 1.2.0-rc01 contiene questi commit.
Versione 1.2.0-beta02
6 settembre 2023
androidx.wear.watchface:watchface-*:1.2.0-beta02 è stato rilasciato. La versione 1.2.0-beta02 contiene questi commit.
Nuove funzionalità
SuspendingComplicationDataSourceService#onDestroyè ora aperto. Tieni presente che il supporto per una complicazione meteo predefinita del sistema è stato rimosso.
Modifiche alle API
- Ripristina "Esporre una nuova origine dati per le complicazioni meteo". (I6f335)
Versione 1.2.0-beta01
23 agosto 2023
androidx.wear.watchface:watchface-*:1.2.0-beta01 è stato rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- A partire da Android T, WearOS supporterà una complicazione di sistema meteo predefinita.
Modifiche alle API
- Aggiungi il fallback del sistema predefinito per le complicazioni meteo. (Ia0994)
- Questa patch aggiunge
WatchFaceRuntimeServiceeWatchFaceControlClient.createWatchFaceRuntimeControlClientinsieme ai wrapper Guava. Questi aggiungono il supporto per i runtime dei quadranti, che sono un tipo speciale di quadrante che carica la propria definizione da un altro pacchetto. Al momento WearOS supporta solo il runtime per il formato del quadrante per Android. (I2799f) - Questa patch è un follow-up di aosp/2636578, in cui rinominiamo le definizioni di int in modo che qualsiasi codice che dipende da
WatchFaceType,CanvasType,TapTypeoComplicationsSlotBoundsTypenon debba essere modificato. (I4098b) - File API aggiornati per annotare la soppressione della compatibilità. (I8e87a, b/287516207)
- Questa patch espone le costanti
WatchFaceTypeinWatchFaceTypes, le costantiCanvasTypeinCanvasTypes, le costantiTapTypeinTapTypese le costantiComplicationsSlotBoundsTypeinComplicationsSlotBoundsType. (I3b85a, b/288750666) WatchFace.OverlayStyleha un utilizzo molto basso e non è ben supportato dagli OEM, pertanto lo stiamo ritirando con l'intenzione di rimuoverlo in un secondo momento. (I7344a)
Versione 1.2.0-alpha09
21 giu 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha09 è stato rilasciato. La versione 1.2.0-alpha09 contiene questi commit.
Nuove funzionalità
RangedValueComplicationData.Builderora accettaDynamicFloated è disponibile un nuovoDynamicComplicationTextcome sottoclasse diComplicationText, entrambi in grado di utilizzare espressioni dinamiche e binding della piattaforma che vengono aggiornati a 1 Hz sui dispositivi Wear 4 supportati.
Modifiche alle API
- Sono stati aggiunti tipi dinamici per distanza giornaliera, calorie giornaliere e piani giornalieri. Le chiavi per le fonti di integrità della piattaforma ora si trovano in
PlatformHealthSources.Keys(Ib7637) - Implementa
PlatformDataProviderper fornire il battito cardiaco e i passi giornalieri. L'interfacciaSensorGatewayviene rimossa dall'API pubblica. (I55b84) - Rinomina
StateEntryValueinDynamicDataValuee aggiorna le API di stato in modo che utilizzinoDynamicDataKey. (If1c01) - Aggiungi
AppDataKeyper accedere allo stato push dell'app; aggiungiPlatformDataKeyper accedere ai dati della piattaforma; aggiungi il supporto dello spazio dei nomi inStateStore. (I7985e) - I metodi
enable/disablePlatformSourcesono stati rimossi daDynamicTypeEvaluator. La persona che chiama deve essere responsabile degli aggiornamenti. (I78c6d) - Consente di limitare le dimensioni dei tipi di dati associati. (Ie2966)
Versione 1.2.0-alpha08
19 aprile 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha08 è stato rilasciato. La versione 1.2.0-alpha08 contiene questi commit.
Nuove funzionalità
- A partire da Android T, i fornitori di complicazioni con il privilegio
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEpossono registrare metadatiandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPESche sostituisconoandroid.support.wearable.complications.SUPPORTED_TYPESper quadranti sicuri. Ciò significa che un fornitore di complicazioni può scegliere di pubblicare tipi diversi per i quadranti attendibili e non attendibili.
Modifiche alle API
- Propagazione della classe
@Deprecatedalla proprietà (I882d1, b/271441831) - Nome del parametro del valore per
Enum.valueOfmodificato (Ia9b89) - Altre eccezioni generate da enum valueOf (I818fe)
- Abbiamo rimosso
renderWatchFaceToSurfacea favore dicreateRemoteWatchFaceView, che si basa su SurfaceControlViewHost e consente al chiamante di incorporare una visualizzazione dal quadrante, che viene visualizzata quando il client chiamaRemoteWatchFaceViewHost#renderWatchFace. (Ib311d) - Abbiamo aggiunto
renderWatchFaceToSurfaceaInteractiveWatchFaceClient,HeadlessWatchFaceClienteEditorSession. In genere, questa operazione è più efficiente del rendering in una bitmap. (Ieacad) ObservableStateStoreè stato rinominato inStateStore. (Ieb0e2)- È stato aggiunto
DynamicTypeEvaluator.Builderanziché gli argomenti del costruttore per consentire più argomenti facoltativi, tra cuiObservableStateStore, che ora è impostato per impostazione predefinita su un archivio vuoto. (I6f832) - È stato eseguito il refactoring dell'ordine dei parametri in
DynamicTypeEvaluator. (Ic1ba4) - L'esecutore è stato aggiunto ai metodi
DynamicTypeEvaluator.bind. (I346ab) - Abbiamo aggiunto il metodo
startEvaluationaBoundDynamicTypeper attivare la valutazione dopo l'associazione del tipo dinamico. (I19908) - I fornitori di complicazioni con il privilegio
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEpossono registrare metadatiandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPESche sostituisconoandroid.support.wearable.complications.SUPPORTED_TYPESper quadranti sicuri. (Id1c73) - Abbiamo rinominato
CustomValueUserStyleSettings2inLargeCustomValueUserStyleSettings. (Ic17ac)
Correzioni di bug
DynamicTypeValueReceiver#onPreUpdateè stato rimosso. (I2dc35)
Versione 1.2.0-alpha07
22 febbraio 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha07 è stato rilasciato. La versione 1.2.0-alpha07 contiene questi commit.
Nuove funzionalità
A partire da Android T, gli OEM potranno determinare se una richiesta di complicazione proviene da un quadrante nell'elenco definito dai metadati
android.support.wearable.complications.SAFE_WATCH_FACESnel manifest del provider tramiteComplicationRequest#isForSafeWatchFace. Il fornitore avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEper ricevere qualsiasi altro elemento diverso daTargetWatchFaceSafety.UNKNOWN.A partire da Android T
CustomValueUserStyleSetting2è disponibile anche un'area di archiviazione che può contenere fino a 12,5 KB. Il limite precedente perCustomValueUserStyleSettingera di 1 kB. Nonostante i limiti di dimensioni maggiori, gli sviluppatori di quadranti sono invitati a mantenere i dati di dimensioni ridotte perché le impostazioni vengono inviate tramite Bluetooth durante la modifica e la larghezza di banda Bluetooth è limitata.
Modifiche alle API
- Abbiamo aggiunto un parametro facoltativo
eglContextAttribListaGlesRenderereGlesRenderer2che ti consente di impostare il valoreEGL14.EGL_CONTEXT_CLIENT_VERSIONpassato aEGL14.eglCreateContext. (I2a83e) - Abbiamo eseguito la migrazione delle librerie dei quadranti a
androidx.core.util.Consumeranziché ajava.util.function.Consumer. (I273f5) - Altre eccezioni generate dagli accessor di proprietà KT (Iff9d9)
- Abbiamo aggiunto
InteractiveWatchFaceClient.isComplicationDisplayPolicySupportedin modo che il client possa determinare se deve emulare o meno il supporto per conto dei vecchi quadranti. (I24c89) - Abbiamo deciso che
isForSafeWatchFacedovrebbe essere unIntDefdi tre stati. (Ief2f7) - Per Android T abbiamo introdotto
ComplicationRequest.isForSafeWatchFace, che è destinato all'uso OEM e richiedecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. Per le origini dati nell'immagine di sistema, questo valore restituirà true se il quadrante dell'orologio richiedente si trova nell'elenco dei quadranti sicuri specificati dall'origine dati nel relativo manifest. (I0cbb6) - Per Android T abbiamo aggiunto
CustomValueUserStyleSetting2, che può contenere fino a 12,5 KB. Il limite precedente perCustomValueUserStyleSettingera di 1 kB. (I0b100)
Versione 1.2.0-alpha06
25 gennaio 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha06 è stato rilasciato. La versione 1.2.0-alpha06 contiene questi commit.
Nuove funzionalità
- Stiamo lavorando per aggiungere il supporto per i binding della piattaforma di complicazioni. Questa funzionalità non è ancora pronta per l'uso, ma continua a seguirci per aggiornamenti.
- Abbiamo aggiunto il supporto XML
ComplicationSlotper i nuovi tipi di complicazione, GOAL_PROGRESS e WEIGHTED_ELEMENTS.
Correzioni di bug
- Corregge una perdita per cui l'editor di quadranti non veniva rilasciato correttamente sui dispositivi Samsung. (3b5987)
- Corregge un bug per cui a volte le complicazioni non venivano visualizzate correttamente quando si passava da un quadrante con più preferiti. (b38ece)
- Corregge un bug di serializzazione con perOptionScreenReaderNames che causava l'arresto anomalo del quadrante. (e9f466)
Versione 1.2.0-alpha05
7 dicembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha05 è stato rilasciato. La versione 1.2.0-alpha05 contiene questi commit.
Nuove funzionalità
Qualche tempo fa abbiamo aggiunto il supporto per le
UserStyleSettingsgerarchiche e da Android T è ora possibile avere più di unaComplicationSlotsUserStyleSettingin una gerarchia. Solo unComplicationSlotsUserStyleSettingsarà attivo, in base alle selezioni di stile dell'utente.Stiamo migliorando il supporto dello screen reader per
ListOptioneComplicationSlotsOptionaggiungendo un camposcreenReaderName. Prima di Android T, questo campo verrà ignorato dagli editor complementari.
Modifiche alle API
- Abbiamo aggiunto un nuovo campo facoltativo
screenReaderNameaListOptioneComplicationSlotsOptionper l'utilizzo da parte degli editor. Verrà ignorato dagli editor complementari sui dispositivi precedenti ad Android T. (I75326) - A partire da Android T, sono supportati più
ComplicationSlotsUserStyleSettingsin una gerarchia di stili, a condizione che al massimo uno di questi possa essere attivo in un determinato momento. Abbiamo aggiunto una funzione di utilitàfindComplicationSlotsOptionForUserStyleaUserStyleSchemaper aiutarti a trovare l'ComplicationSlotsOptionattivo, se presente. (Ic2b06) RangedValuesTypessono stati inseriti nell'oggetto secondario diRangedValueComplicationDatae rinominati inTYPE_UNDEFINED,TYPE_RATINGed è stato aggiunto un nuovoTYPE_PERCENTAGE. (I55d02)- Abbiamo rinominato l'esperimento
DynamicFloatinFloatExpressione l'abbiamo contrassegnato come@hide. (Idf4f1) - Aggiunta dell'annotazione
@JvmDefaultWithCompatibility(I8f206)
Versione 1.2.0-alpha04
9 novembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha04 è stato rilasciato. La versione 1.2.0-alpha04 contiene questi commit.
Nuove funzionalità
- Per Android T abbiamo aggiunto il supporto per due nuovi tipi di complicazioni,
GoalProgressComplicationDataeWeightedElementsComplicationData. GoalProgressComplicationDataè simile aRangedValueComplicationData, ma il suo valore può superare il target (perRangedValueComplicationDatail valore è bloccato nell'intervallo [min .. max]), il che ha implicazioni per il design visivo che potrebbero non essere adatte a tutti i quadranti.GoalProgressComplicationDataaggiunge il supporto per i grafici a torta e suddivisioni simili di dati semplici.- Abbiamo aggiunto il supporto facoltativo per
ColorRampsaRangedValueComplicationData. - Per Android T, abbiamo aggiunto
ComplicationPersistencePolicyesetCachePolicyaComplicationData, che attualmente consente a un fornitore di controllare se una complicazione viene mantenuta o meno (ovvero se viene memorizzata nella cache dopo il riavvio). La maggior parte delle complicazioni non richiede l'impostazione del controllo della cache, ma questa operazione può risolvere casi limite con dati obsoleti per alcune complicazioni che vengono aggiornate di frequente (ad es. le complicazioni dei dati sanitari). Abbiamo anche aggiuntoComplicationDisplayPolicy, doveDO_NOT_SHOW_WHEN_DEVICE_LOCKEDindica a un quadrante compatibile di non visualizzare la complicazione quando il dispositivo è bloccato. (Ic9574)
Modifiche alle API
GoalProgressComplicationData,WeightedElementsComplicationDataeColorRampnon sono più sperimentali. (Ica9e2)ComplicationPersistencePolicyeComplicationDisplayPolicysono ora contrassegnate correttamente come API T. (I31d88)- Il costruttore
ComplicationSlotOverlayritirato ora haDeprecationLevel.WARNING, il che consente di chiamarlo di nuovo da Java. (Ib308c) - Abbiamo risolto alcuni problemi di compatibilità Java con
ComplicationRequestListener,CanvasComplication,ComplicationTapFiltereInteractiveWatchFaceClientannotandoli con@JvmDefaultWithCompatibility(Id94fc) - Abbiamo rimosso
ProtoLayoutComplicationDataeListComplicationDatasperimentali. La storia dello sviluppatore per questi era poco chiara, speriamo di rivisitarla in futuro. (I9df05) - Abbiamo aggiunto un
ValueTypeaRangedValueComplicationData.WeightedElementsComplicationDataora supporta un colore di sfondo. Abbiamo rimossoDiscreteRangedValueComplicationDataperché la sua funzionalità è un sottoinsieme diWeightedElementsComplicationData. (I6446c)
Correzioni di bug
- Includi
isForScreenShotnel segno di uguale e nel codice hash. Assicurati cheonRenderParametersChangedriceva un valoreisForScreenshotcorretto (I04a41) - Sono state corrette le perdite di
WatchFaceControlServicedai client headless. (e90e00)
Versione 1.2.0-alpha03
5 ottobre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha03 è stato rilasciato. La versione 1.2.0-alpha03 contiene questi commit.
Nuove funzionalità
- Nessuna nuova funzionalità, ma abbiamo corretto un paio di bug dell'editor di quadranti.
Modifiche alle API
- Deprecato
UserStyleSchema.userStyleSettingsperchérootUserStyleSettingsè diventato non sperimentale (Ie96e3) - Sposta
rootUserStyleSettingsfuori dalla versione sperimentale (I8d6b3) - Abbiamo contrassegnato
WatchFaceColorscome sperimentale perché non è supportato da tutti i sistemi (I6d75d) - Esporre
DisconnectReasonsnell'API pubblica per farlo funzionare conIntDef. (I791f8)
Correzioni di bug
- Chiudi qualsiasi editor aperto sull'orologio se
SysUIsi scarica. SeSysUIsi arresta e l'editor di quadranti non si chiude, il quadrante potrebbe rimanere in uno stato incoerente perché il sistema si basa suSysUIper conservare le modifiche allo stile dell'utente.(ba762a - È stato corretto un problema di perdita di memoria in
ComplicationDataSourceInfoRetriever, in cui una continuazione della coroutine Kotlin fungeva da radice GC e manteneva l'attività dell'editor.(33ee06)
Versione 1.2.0-alpha02
21 settembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha02 è stato rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Nuove funzionalità
Alcuni quadranti hanno una configurazione al di fuori di
UserStyleche ne influenza l'aspetto visivo (ad es. la selezione di una foto di sfondo). Abbiamo aggiuntoRenderer.sendPreviewImageNeedsUpdateRequest, che consente al quadrante di richiedere un'immagine di anteprima aggiornata. Tieni presente che per funzionare è necessario un aggiornamento del sistema corrispondente.Abbiamo anche aggiunto un'API per i quadranti per esporre i loro colori al sistema, che può scegliere la tavolozza dei colori in base a questi. Nota: questa funzionalità è stata resa sperimentale in una patch successiva.
Quasi tutti i tipi di
ComplicationDataora supportanoSmallImages.
Modifiche alle API
- A volte il gestore degli sfondi si stacca da un motore e ne crea un altro. Abbiamo aggiunto una definizione di
DisconnectReasonint ed estesoClientDisconnectListenercon un nuovo metodo che include unDisconnectReason, consentendo all'ascoltatore di osservare i distacchi del motore. (I45cce) - Aggiunti due parametri facoltativi
nameResourceIdescreenReaderResourceIdal costruttoreComplicationSlotOverlay(I157e8) - Abbiamo aggiunto un wrapper Guava per il nuovo overload di
getOrCreateInteractiveWatchFaceClientcon unPreviewImageUpdateRequestedListener. (Ic31f0) - Abbiamo aggiunto
Renderer.sendPreviewImageNeedsUpdateRequest, utile per i quadranti che hanno uno stato al di fuori diUserStyleSchema, che influisce sul loro aspetto (ad es. un quadrante con un'immagine di sfondo selezionabile). Sul lato client abbiamo aggiuntoPreviewImageUpdateRequestedListenercome parametro facoltativo agetOrCreateInteractiveWatchFaceClientper osservare queste richieste. (Iff44a) - Abbiamo semplificato l'API per l'esposizione di
WatchFaceColors. Ora esiste una semplice proprietà chiamatawatchFaceColorsnel renderer che il quadrante può impostare. Questa proprietà deve essere aggiornata in base alle necessità in risposta a eventuali modifiche dello stile. Anziché utilizzareWallpaperManagerper osservare le modifiche del colore, abbiamo aggiuntoOnWatchFaceColorsListeneraInteractiveWatchFaceClient. (I490bc) - Abbiamo aggiunto una classe
WatchFaceColorsche contiene i tre colori più importanti del quadrante e abbiamo aggiunto i metodi apertiwatchfaceColorsenotifyWatchFaceColorsChangedal renderer, che consentono al sistema di ottenere i colori del quadrante tramiteWallpaperManager.getWallpaperColors. (I3d611) ShortTextComplicationData,RangedValueComplicationData,NoPermissionComplicationData(e le versioni sperimentaliDiscreteRangedValueComplicationData,GoalProgressComplicationDataeWeightedElementsComplicationData) ora supportano tuttiSmallImages. Se un quadrante sceglie di eseguire il rendering di una complicazione con più colori, ora ha la possibilità di utilizzare unSmallImagemulticolore, mentre in precedenza avrebbe dovuto utilizzare un'immagine monocromatica. (I257df)- Esegui il refactoring di
PreviewImageUpdateRequestedListenerin modo che sia unConsumer<>(Ia875d) - Sostituisci il tipo SAM (Single Abstract Method) personalizzato
OnWatchfaceColorsListenercon il tipo SAM Java generico (Consumer) (I0c489) - Abbiamo ritirato i vecchi metodi
getOrCreateInteractiveWatchFaceClientelistenableGetOrCreateInteractiveWatchFaceClientche non specificano unPreviewImageUpdateRequestedListener. (Iec502)
Correzioni di bug
DisconnectReason.BINDER_DIEDè stato rinominato inDisconnectReason.ENGINE_DIED. (I4eb0e)
Versione 1.2.0-alpha01
10 agosto 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha01 è stato rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
- Abbiamo aggiunto il supporto sperimentale per vari nuovi formati di complicazione. Si tratta di un'area di sviluppo attivo; questi nuovi formati sono soggetti a modifiche senza preavviso e al momento non è disponibile il supporto del renderer da
CanvasComplicationDrawable. - Abbiamo anche aggiunto margini opzionali agli spazi per le complicazioni, in modo da facilitare il tocco delle complicazioni piccole.
Modifiche alle API
- La classe sperimentale
BoundingArcora è immutabile. (If624a) - Le complicazioni piccole possono essere difficili da toccare. Per contribuire a mitigare questo problema, abbiamo introdotto il supporto per i margini, che aumentano l'area toccabile senza influire sul rendering. Se non specificati (nel codice o tramite XML), i
ComplciationSlotshanno margini di dimensioni pari a zero. (I14089) - È stata modificata la firma di
getComplicationSlotInflationFactory(CurrentUserStyleRepository)per restituire un'istanza di fabbrica non nulla. In precedenza era un errore restituire un valore nullo, quindi questo serve solo a rendere più chiaro il contratto API. (I0fcc0) - Abbiamo aggiunto l'argomento
currentUserStyleRepositoryal metodoWatchFaceService.getComplicationSlotInflationFactoryper coerenza concreateComplicationSlotsManager. (I2ddd2) UserStyleFlavorsè diventata una funzionalità non sperimentale. (I69cdc)- Abbiamo rimosso
ValueTypesperimentale daRangedValueComplicationDatae abbiamo introdottoDiscreteRangedValueComplicationDatasperimentale, che è simile aRangedValueComplicationData, ad eccezione dell'intervallo e del valore interi. Abbiamo anche introdottoGoalProgressComplicationDatasperimentale, simile aRangedValueComplicationData, ma per il progresso verso un obiettivo in cui il valore minimo è implicitamente zero e il valore può essere maggiore ditargetValue. Nota per tutte le varianti diRangedValue: deve essere specificato almeno uno tra monochromeImage, text o title. (I9590c) - Abbiamo rimosso
boundsWithMarginsdaComplicationSlotStateperché il software di sistema non ha un caso d'uso per questa funzionalità. (I42e26) - Abbiamo aggiunto il supporto sperimentale per
WeightedElementsComplicationData, che consiste in un array di elementi (coppie di peso e colore) insieme a testo/titolo/immagine facoltativi. Questi dati potrebbero essere visualizzati come un grafico a torta in cui i colori devono essere significativi in base al contesto, poiché in genere non c'è spazio in una complicazione per visualizzare le etichette. (I87eea) ColorRampssperimentale utilizzato facoltativamente daRangedValueComplicationDataeGoalProgressComplicationDataora ti consente di specificare una sequenza di massimo sette colori e un flag che indica se i colori devono essere interpolati in modo uniforme o se devono essere visualizzati passaggi di colore solidi di dimensioni uguali. (I9f5bf)RangedValueComplicationData.drawSegmentedè stato modificato invalueType, che è un numero intero con unValueType IntDefcorrispondente che fornisce un significato semantico al valore compreso in un intervallo e può essere utilizzato dal renderer della complicazione per influire sullo stile. (I0616b)- Abbiamo aggiunto il supporto sperimentale per
ColorRangesfacoltativo aRangedValueComplicationData. Normalmente le complicazioni vengono visualizzate nei colori scelti per il quadrante, ma a volte è meglio che sia l'ComplicationDataSourcea impostare i colori, ad esempio quando hanno un significato semantico particolare. Ad esempio, dal rosso al blu per la temperatura. (I5153a) - Abbiamo aggiunto un suggerimento sperimentale per
drawSegmentedaRangedValueComplicationData. Questo indica ai renderer di disegnare l'indicatore di valore compreso in un intervallo con segmenti, dove 1 segmento = 1 unità. (I7d7c1)
Correzioni di bug
- Abbiamo aggiunto la possibilità di definire
ComplicationSlotBoundsrispetto a un sistema di coordinate dello schermo predefinito. (I0985d)
Versione 1.1
Versione 1.1.1
10 agosto 2022
androidx.wear.watchface:watchface-*:1.1.1 è stato rilasciato. La versione 1.1.1 contiene questi commit.
- Questa è una release di correzione di bug e agli utenti della versione 1.1.0 è vivamente consigliato di eseguire l'upgrade.
Correzioni di bug
L'inizializzazione del quadrante è asincrona e se una complicazione viene ricevuta prima che il quadrante sia pronto, viene inserita nell'elenco
pendingInitialComplicationse applicata in un secondo momento. PurtroppopendingInitialComplicationsè stato applicato troppo presto, il che significa che durante l'inizializzazione del quadrante c'è stato un periodo di tempo in cui le complicazioni venivano comunque inserite inpendingInitialComplicationse ignorate. Il problema è stato risolto. Inoltre, questa patch corregge un bug per cuiComplicationRenderertentava erroneamente di caricare i segnaposto in modo asincrono, operazione non riuscita che impediva l'aggiornamento del grafico di compilazione. Infine, questa patch corregge un bug, si spera teorico, in cui è necessario unire piùpendingInitialComplications. (0d03ba3)Correzione di un potenziale deadlock in
InteractiveInstanceManagerin cuigetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstancemanteneva il blocco più a lungo del necessario. Di solito ci aspettiamo cheengine.setUserStylesia veloce, ma se per qualche motivo non lo è, potremmo finire in un deadlock/ANR. Questa patch sposta il lavoro non necessario fuori dal blocco, eliminando la possibilità di un deadlock.(5a2adca)Sono stati corretti diversi problemi che conservavano
WatchFaceService. A volte WakeLock può conservareWatchFaceService, quindi una chiamatarelease()risolve il problema. Inoltre,StateFlowspuò conservareWatchFaceService, quindi l'annullamento diCoroutineScopessottostante risolve il problema.(fd48138)Aggiungi timeout a
awaitDeferredWatchFace* e correggiwatchfaceOverlayStyleNullPointerException. In circostanze normali, questo non dovrebbe scadere, anche dopo l'installazione e gli scenariDirectBootin cui il carico della CPU è elevato. Abbiamo anche corretto un errore NullPointerException segetWatchfaceOverlayStyleviene chiamato dopoclose().(a4c3a5a)
Versione 1.1.0
15 giugno 2022
androidx.wear.watchface:watchface-*:1.1.0 è stato rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
Modifica migliorata:
- Abbiamo aggiunto il supporto per gli schemi gerarchici, che consente alle UI dell'editor di descrivere una gerarchia di stili. Ora puoi specificare icone separate da utilizzare negli editor di quadranti e app complementari.
- È disponibile il supporto facoltativo per più istanze di un quadrante, ognuna con un ID univoco disponibile su tutte le superfici API.
- Ora puoi specificare nomi leggibili per
ComplicationSlotsda utilizzare negli editor. - Supporto sperimentale per gli "stili", una selezione curata di stili che saranno visibili dall'editor complementare.
- Quando vengono caricate due istanze del quadrante, ora è possibile che le istanze del quadrante condividano le risorse, risparmiando memoria
- Quando scegli una complicazione nell'editor dei quadranti, il fornitore attuale è ora preselezionato.
Complicazioni migliorate:
- Ora puoi specificare
ComplicationTypeper le origini dati primaria e secondaria, offrendo agli sviluppatori maggiore flessibilità per l'esperienza predefinita. - Abbiamo aggiunto
ComplicationDataTimeline, che fornisce una sequenza di dati con limiti di tempo da inviare al quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi in vari orari o più eventi in programma nel calendario. ComponentNamedel fornitore di complicazioni fa parte diComplicationData.- Le complicazioni ora vengono memorizzate nella cache, il che offre un'esperienza migliore quando si passa da un quadrante all'altro.
Altre modifiche:
- Ora è possibile definire
UserStyleSchemaeComplicationSlotsin XML. Ciò semplifica la creazione dei quadranti e consente query di metadati più rapide dal sistema. - I quadranti ora possono influenzare i colori utilizzati per il rendering della sovrapposizione di sistema.
Versione 1.1.0-rc01
18 maggio 2022
androidx.wear.watchface:watchface-*:1.1.0-rc01 è stato rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Nuove funzionalità
- Abbiamo apportato alcuni miglioramenti all'usabilità del supporto XML dei quadranti, semplificando la specifica di
ComplicationSlotBoundse dei riferimenti supportati. Continua la sperimentazione con la complicazione sul bordoBoundingArc, che viene trasferita adrawHighlight, anche se non è consigliata per l'uso in quel momento.
Modifiche alle API
- Abbiamo aggiunto un overload sperimentale di
drawHighlightche accetta un parametroBoundingArc. (I705f8) - Il file XML del quadrante ora supporta i riferimenti alle risorse. Ti consente di utilizzare le stesse costanti sia in XML che nel codice. (I3ef61)
- Abbiamo aggiunto la possibilità di definire
ComplicationSlotBoundsnel modulocenter_x,center_y,size_x,size_y. Ora è anche possibile utilizzare unità diverse (ad es. dp) utilizzando i riferimenti alle risorse. (Iace98)
Correzioni di bug
- Correzione di
runBlockingWithTracingche eseguiva attività nel contesto sbagliato.(4f595fe) - Rendi
BaseEditorSession.closesincrono. Il problema conBaseEditorSession.closeè che è asincrono, quindi rilasciamoComplicationDataSourceInfoRetrievertroppo tardi, il che porta a spam di avvisi in logcat. Probabilmente non è dannoso, ma lo spam logcat distrae e deve essere evitato.(35a5308)
Versione 1.1.0-beta02
11 maggio 2022
androidx.wear.watchface:watchface-*:1.1.0-beta02 è stato rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Nuove funzionalità
- Abbiamo aggiunto il supporto sperimentale per nuovi tipi di
ComplicationData, che non sono ancora pronti per l'uso, ma tieni d'occhio questa pagina.
Modifiche alle API
- Abbiamo aggiunto
BoundingArc, una classe sperimentale che descrive la geometria di uno spazio per complicazioni sul bordo. È stato aggiunto aComplicationSlote collegato aComplicationSlotStateeWatchFaceMetadataClient. (I61a40) - Abbiamo aggiunto la possibilità di ereditare le impostazioni in XML
UserStyleSetting. Ti consente di ridurre la verbosità e condividere un'impostazione tra i quadranti. (Ief841) - Abbiamo aggiunto due nuovi tipi sperimentali di
ComplicationData:ListComplicationDataeProtoLayoutComplicationData. Al momento non è supportato il rendering di nessuno di questi tipi e WearOS non li riconosce se aggiunti a un file manifestComplicationDataSource's. (I1811c)
Correzioni di bug
- È stata corretta la serializzazione del tipo
TimeLineEntry. Non serializzavamo il tipoTimeLineEntry, il che significava che ilTimeLineEntriesmemorizzato nella cache di tipo NoData veniva interpretato erroneamente come se avesse il tipo di complicazione principale, il che portava a NPE quando si accedeva a campi obbligatori inesistenti. (55ffdf5) - È stato corretto un bug per cui
setComplicationDataeliminava i campi della sequenza temporale(fb392f5) - Correzione di un bug per cui molto raramente
runBlockingWithTracingcausava un errore NPE(12ca62e) - Corregge un bug per cui a volte viene visualizzato
ClassNotFoundException: android.support.wearable.complications.ComplicationTextquando si riceve una complicazione.(217942d9) - Corregge un bug in
GlesRenderer.backgroundThreadInitInternalin cui veniva chiamatoonBackgroundThreadGlContextCreatedsolo se veniva chiamatoEGL14.eglCreateContext. È stato corretto un altro bug che causava un problema visivo nello screenshot dovuto averticalFlip.(c674ad2) - Correzione del controllo della versione XML
WatchFaceService, che veniva caricata dal pacchetto errato.(dfa06f3) - Il formato wire del segnaposto ora utilizza un bundle interno. Non vogliamo che i segnaposto interrompano i quadranti esistenti che potrebbero utilizzare l'oggetto a.s.w.c.ComplicationData interno nascosto. In precedenza, il formato wire di un
NoDataComplicationmemorizzava il segnaposto nei campi usuali (problematico perché i vecchi quadranti avrebbero visualizzato la stringa segnaposto, cosa non prevista). Ora utilizziamo invece un bundle interno per isolare completamente questo problema.(d5e7bd2)
Versione 1.1.0-beta01
20 aprile 2022
androidx.wear.watchface:watchface-*:1.1.0-beta01 è stato rilasciato. La versione 1.1.0-beta01 contiene questi commit.
Modifiche alle API
- Ora i metodi
WatchFaceMetadataClient(getUserStyleSchema,getComplicationSlotMetadataMap,getUserStyleFlavors) eHeadlessWatchFaceClient.getUserStyleFlavorsgenerano RuntimeException non controllata anzichéWatchFaceException. (I0718a) WatchFaceMetadataClient.WatchFaceExceptionè stato spostato al di fuori del corso per consentirne il riutilizzo. (I4e869)
Correzioni di bug
WatchFaceMetadataClientnon andrà più in crash quando viene inviatoComplicationSlotBoundsparziale.(Iaafd)
Versione 1.1.0-alpha05
6 aprile 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha05 è stato rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora puoi sapere quale origine dati ha inviato un
ComplicationDataesaminandoComplicationData.dataSource. Alcuni quadranti potrebbero utilizzare queste informazioni per personalizzare la visualizzazione delle complicazioni. (I44a73)
Modifiche alle API
Renderer.CanvasRenderereRenderer.GlesRenderersono stati ritirati a favore diRenderer.CanvasRenderer2eRenderer.GlesRenderer2, che supportanoSharedAssets, passati ai metodi di rendering. Per l'interoperabilità Java abbiamo introdottoListenableCanvasRenderer2eListenableGlesRenderer2. (I31ffa)- Aggiunta della possibilità di definire
@WatchFaceFlavorsExperimentalvarianti: elenco preconfigurato di quadranti con stili (I04dd0) Renderer.sharedAssetsora è un oggetto StateFlow e abbiamo rimosso l'oggettoRenderer.SharedAssetsFactoryinutilizzato (I12ac5)UserStyleSchema.userStyleSettingsnon è più deprecato (Iba7e3)- Abbiamo aggiunto
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, che consente aHeadlessWatchFaceClientdi evitare il sovraccarico relativamente basso del passaggio dello schema tramite AIDL prima di calcolare l'hash del digest. (I33597) - Abbiamo aggiunto
isUserStyleSchemaStaticaWatchFaceMetadataClient, che è vero se e solo se è possibile fare affidamento suUserStyleSchemaper non cambiare a meno che non venga aggiornato l'APK del quadrante. (I45a3f) - Abbiamo aggiunto
getDigestHashaUserStyleSchema, che calcola un hash digest dello schema. Può essere utilizzato per determinare in modo efficiente seUserStyleSchemaè cambiato. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTEDrinominato inMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED(I9ba5d)UserStyleSetting.OnWatchEditorDataè stato rinominato inUserStyleSetting.WatchFaceEditorDatae contiene dati utilizzati esclusivamente dall'editor di quadranti. (If3afb)
Versione 1.1.0-alpha04
9 marzo 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha04 è stato rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
ComplicationDataaggiornati potrebbero non essere sempre disponibili (ad es. ComplicationData memorizzati nella cache scaduti), pertanto abbiamo estesoNoDataComplicationcon un segnaposto ComplicationData facoltativo e aggiuntoComplicationText.PLACEHOLDER,MonochromaticImage.PLACEHOLDER,SmallImage.PLACEHOLDER,PhotoImage.PLACEHOLDER, che possono essere utilizzati solo all'interno del contesto di un segnapostoNoDataComplicationData. Se selezionati, questi segnaposto vengono visualizzati con caselle/archi grigi. (I6285d)- Abbiamo aggiunto
ComplicationData.getNextChangeInstant, che indica l'istante successivo all'istante di riferimento in cui qualsiasi campo della complicazione può cambiare. Questo valore viene utilizzato internamente per pianificare i frame per gli aggiornamenti delle complicazioni. Ad esempio, se un quadrante si aggiorna normalmente una volta al minuto, l'impostazione della complicazione del cronometro lo aggiornerà una volta al secondo. (I7ceb2) EditorSession.watchFaceIdora può essere utilizzato su tutti i livelli API. Inoltre, il suo valore sarà sempre coerente conWatchState.watchFaceInstanceId. (I323b9)- L'API
getPendingIntentForTouchEventnon è più necessaria perché il problema sottostante è stato risolto nel framework, quindi tutte le API correlate sono state rimosse. I quadranti non devono fare nulla di speciale per attivarePendingIntents, anche se il tasto Home è stato premuto di recente. (I1f2e8) - Abbiamo aggiunto
RendererParameters.isForScreenShot, che sarà true se il rendering è per uno screenshot. Alcune watch face con animazioni devono conoscere questa informazione per apportare modifiche e garantire i migliori risultati. (I96d99) - Abbiamo aggiunto
WatchFaceExceptionReasonaWatchFaceExceptionper fornire un contesto di ciò che non ha funzionato. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequestè stato rimosso e al suo posto è stato aggiuntoComplicationRequest.immediateResponseRequiredper indicare che il fornitore deve rispondere rapidamente (idealmente in meno di 100 ms). Tieni presente che questa funzionalità è protetta dall'autorizzazione privilegiatacom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE. (Ie6b23)- Aggiornamento della nullabilità in core e appcompat in modo che corrisponda a Tiramisu DP2 (I0cbb7)
Correzioni di bug
- Ora l'app quadrante si arresta in modo anomalo con un'eccezione se la convalida dello schema non riesce (Ia400f)
Versione 1.1.0-alpha03
9 febbraio 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha03 è stato rilasciato. La versione 1.1.0-alpha03 contiene questi commit.
Modifiche alle API
- Abbiamo aggiunto il supporto sperimentale per gli schemi di stile gerarchici. Abbiamo aggiunto una nuova proprietà a
androidx.wear.watchface.style.UserStyleSetting.Option, childSettings, che inizialmente viene utilizzata solo daListOption. Ciò consente di descrivere una gerarchia di stili da utilizzare nelle UI dell'editor. Lo UserStyle sottostante rimane invariato ed è ancora unMap<String, ByteArray>. (Iaf6f4) - Abbiamo aggiunto
WatchFace.OverlayStyle, che consente al quadrante orologio di configurare il rendering della sovrapposizione dello stato del sistema. (I8520d) - Abbiamo introdotto
clearWithBackgroundTintBeforeRenderingHighlightLayerun nuovo parametro del costruttore facoltativo perCanvasRenderer(il valore predefinito è false). Se impostato su true, il canvas verrà cancellato con il colore della tinta dello sfondo. (Ie01e5) - È stata aggiunta la chiave dei metadati
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTEDche consente alle origini dati delle complicazioni di indicare che possono fornire un valore predefinito senza alcuna configurazione (Icc0d4). - Quando si modifica un quadrante orologio, è comune che siano presenti sia un'istanza interattiva che una headless. Per risparmiare memoria, abbiamo introdotto
Renderer.SharedAssets, che consente a un renderer del quadrante orologio di condividere dati immutabili (ad es. texture e shader) tra le istanze.GlesRenderer.setEglConfigeGlesRenderer.setEglDisplaysono deprecati, non è mai stato previsto che fossero impostabili e farlo avrebbe portato a un comportamento indefinito. (I0d9e7) - Abbiamo aggiunto
setNameResourceIdesetScreenReaderNameResourceId(che fanno riferimento alle risorse stringa) aComplicationSlot.Buildere ai getter corrispondenti inandroidx.wear.watchface.client.ComplicationSlotState. In questo modo, il sistema può recuperare i nomi di ComplicationSlots da utilizzare negli editor e negli screen reader. (If6c6a) WatchfaceMetadataClient.getUserStyleSchemaegetComplicationSlotMetadataMapora generanoWatchFaceExceptionanzichéRemoteException. (I86f11)onSynchronousComplicationRequeste le funzioni correlate inComplicationDataSourceServicesono state rinominate inonImmediateComplicationRequeste così via. (I87ba0)- Gli editor quadranti hanno molto meno spazio sullo schermo rispetto agli editor complementari, pertanto è logico supportare icone diverse per gli editor quadranti. Questa patch aggiunge
OnWatchEditorData(attualmente contenente solo un'icona) a tutte le UserStyleSettings e, se opportuno, alle relative classi Option. (If1886) - Abbiamo aggiunto
@JvmOverloadsal costruttore di ListenableGlesRenderer per una migliore interoperabilità Java. (I2974a)
Correzioni di bug
- Il costruttore di
ListenableGlesRendererora è contrassegnato correttamente come@Throws(GlesException::class)ed è ora possibile estendere questa classe in Java. (Iac6d0) - Correzione del bug relativo a tapAction di
PhotoImageComplicationDatanon gestito correttamente (I1cc30)
Versione 1.1.0-alpha02
12 gennaio 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha02 è stato rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Nuove funzionalità
- Per facilitare il debug e i test,
ComplicationDatae le relative sottoclassi ora hanno metodi hashcode, equals e toString sottoposti a override, il che li rende più facili da usare.
Modifiche alle API
- I metodi
WatchfaceMetadataClientgenerano di nuovoRemoteExceptions, se necessario, semplificando l'intercettazione degli errori del client dal quadrante. (I78785) ComplicationDatae le sottoclassi ora hanno hashcode, equals e toString. (I24bc6)
Versione 1.1.0-alpha01
15 dicembre 2021
androidx.wear.watchface:watchface-*:1.1.0-alpha01 è stato rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
Ora è possibile definire
UserStyleSchemaeComplicationSlotsin XML. Ciò semplifica la creazione dei quadranti. Inoltre, le queryWatchFaceMetadataClientsono più veloci perché non devono essere associate al servizio per ottenere i metadati.WatchFaceMetadataClienteListenableWatchFaceMetadataClientnon sono più sperimentali e faranno parte dell'API stabile. Il sistema potrà supportare facoltativamente più istanze di un quadrante, ognuna con opzioni di stile distinte definite dall'utente. Questi saranno visibili nel selettore dei quadranti. Per attivare questa funzionalità, un quadrante orologio deve includere il seguente tag di metadati nel manifest.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />Alcuni quadranti hanno uno stato che non viene acquisito in
UserStyle. Per supportare questo e più istanze, l'ID istanza del quadrante è ora disponibile tramiteWatchState.watchFaceInstanceId.ComplicationDataora viene memorizzato nella cache per consentire la visualizzazione immediata delle complicazioni al caricamento. A volteComplicationDataviene memorizzato nella cache dal sistema e a volte viene serializzato dalle librerie dei quadranti. Quando viene serializzata, qualsiasi tapAction associata andrà persa.In questo caso,ComplicationData.tapActionLostDueToSerializationrestituiràtruee il quadrante dovrebbe visualizzare la complicazione in modo diverso (ad es. in grigio o semitrasparente) per segnalare che non è possibile toccarla. Il sistema invieràComplicationDataaggiornati con untapActionil prima possibile.Alcuni
ComplicationDatanon devono essere memorizzati nella cache per molto tempo. Per supportare questa funzionalità, abbiamo aggiunto una funzionalità più generaleComplicationDataTimeline. Può essere utilizzato per fornire una sequenza diComplicationDatacon limiti di tempo da visualizzare sul quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi in vari orari o più eventi in programma nel calendario.ComplicationRequestListenerè stato esteso con un nuovo metodoonComplicationDataTimelineche puoi utilizzare per restituire questi dati.DefaultComplicationDataSourcePolicyè stato esteso per consentirti di specificareComplicationTypeper le origini dati principali e secondarie.Abbiamo aggiunto il supporto per i fornitori di complicazioni sincrone in cui la complicazione viene aggiornata con una frequenza superiore al normale, fino a una volta al secondo quando il quadrante è visibile e non in modalità Ambient. Nota:i fornitori di complicazioni sincrone potrebbero avere un utilizzo limitato a causa di problemi di pressione della memoria.
È probabile che le modifiche
PendingIntentTapListenervengano ripristinate perché abbiamo risolto il problema sottostante (non è possibile avviare attività per 5 secondi dopo aver premuto il tasto Home) nel framework.
Modifiche alle API
ComplicationData.isCachedè stato modificato intapActionLostDueToSerialization, che è più utile per determinare se lo spazio della complicazione deve essere visualizzato in modo diverso per segnalare che non può essere toccato. (I6de2f)- Aggiunta di
ComplicationDataTimelineawear-complication-data-source. Può essere utilizzato per fornire una sequenza diComplicationDatacon limiti di tempo da visualizzare sul quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi in vari orari o più eventi in programma nel calendario.ComplicationRequestListenerè stato esteso con un nuovo metodoonComplicationDataTimelineche puoi utilizzare per restituire questi dati. È disponibile un nuovo wrapper KotlinSuspendingTimelineComplicationDataSourceServiceper sospendere i servizi di origine dati. (Idecdc) PendingIntentTapListenereWatchFaceControlClient.getPendingIntentForTouchEventaggiunti. Ciò può aiutare i quadranti che devono avviare intent in risposta ai tocchi a risolvere un problema per cui il framework blocca l'avvio di nuove attività per 5 secondi dopo aver premuto il pulsante Home. (I98074)- È stata introdotta una cache
ComplicationDataper quadrante. Lo scopo è consentire al quadrante di visualizzare i valori dei dati dell'ultima complicazione nota al caricamento, finché il sistema non ha avuto la possibilità di aggiornarli. È disponibile un nuovo metodo APIWatchFaceControlClient.hasComplicationCachedestinato agli OEM. Ciò potrebbe influire sulla strategia del sistema per l'invio di complicazioni a un quadrante. Inoltre,ComplicationDataha una proprietàisCacheded è consigliabile eseguire il rendering delle complicazioni memorizzate nella cache in modo diverso perchétapActionnon può essere memorizzato nella cache e sarànullin una complicazione memorizzata nella cache. (I404b0) - L'ID istanza del quadrante è ora disponibile tramite
WatchState.watchFaceInstanceId. La maggior parte dei quadranti non dovrà utilizzare questo campo, ma se esiste uno stato per quadrante che non è memorizzato nello schema, questa è la chiave da utilizzare per identificare l'istanza del quadrante. Per contribuire a questo, ora puoi fornire un ID quando chiamiWatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98) DefaultComplicationDataSourcePolicyesteso con la possibilità di impostareComplicationTypespredefinito per il fornitore principale, secondario e per il fornitore di sistema di riserva.ComplicationSlot.defaultDataSourceTypeè stato ritirato. (If0ce3)ComplicationSlot.configExtrasora è modificabile e può essere aggiornato prima di chiamareEditorSession.openComplicationDataSourceChooser(). (I6f852)WatchFace.setComplicationDeniedDialogIntentesetComplicationRationaleDialogIntentaggiunti. Questi intent vengono avviati per mostrare una finestra di dialogo con la motivazione prima di richiedere le autorizzazioni per la complicazione e un'altra finestra di dialogo che spiega che l'autorizzazione per la complicazione è necessaria quando si tenta di modificare una complicazione quando le autorizzazioni sono state negate (il selettore del fornitore non si aprirà, quindi la finestra di dialogo è necessaria). (I3a29c)- Ora è possibile definire
UserStyleSchemaeComplicationSlotsin XML. Ciò semplifica la creazione dei quadranti e velocizza le queryWatchFaceMetadataClient, in quanto non è necessario eseguire il binding al servizio per ottenere i metadati. (I85bfa) - È stato aggiunto
InteractiveWatchFaceClient.supportsPendingIntentForTouchEventin modo che un client possa determinare se un quadrante supportagetPendingIntentForTouchEvent. (I0b917) WatchFaceMetadataClienteListenableWatchFaceMetadataClientnon sono più sperimentali. Possono essere utilizzati per ottenere in modo efficiente i metadati del quadrante, ove possibile senza aprire un binder per il quadrante. (Ibb827)- È stato aggiunto il supporto per i fornitori di complicazioni sincrone in cui la complicazione viene aggiornata con una frequenza superiore al normale, fino a una volta al secondo quando il quadrante è visibile e non in modalità Ambient. Per utilizzare questa funzionalità, il fornitore deve includere un nuovo tag di metadati
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDSnel manifest e sostituireonSynchronousComplicationRequest. A seconda della natura dell'origine dati, potrebbe anche essere necessario eseguire l'override dionStartSynchronousComplicationRequestseonStopInteractiveComplicationRequestsper ricevere notifiche quando la complicazione entra ed esce dalla modalità interattiva. (I8fe9d)
Versione 1.0
Versione 1.0.1
9 febbraio 2022
androidx.wear.watchface:watchface-*:1.0.1 è stato rilasciato. La versione 1.0.1 contiene questi commit.
Correzioni di bug
- Correzione del bug relativo a tapAction di
PhotoImageComplicationDatanon gestito correttamente (I1cc30)
Versione 1.0.0
1° dicembre 2021
androidx.wear.watchface:watchface-*:1.0.0 è stato rilasciato. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Il pacchetto androidx.wear.watchface è la nuova libreria consigliata per lo sviluppo di quadranti per WearOS. Offre una serie di nuove funzionalità rispetto alla precedente libreria di supporto per indossabili.
- La personalizzazione da parte dell'utente (ad es. per modificare la tavolozza dei colori, lo stile delle lancette dell'orologio, l'aspetto degli indicatori delle ore e così via) è supportata direttamente dalla libreria (vedi
androidx.wear.watchface.style). Ora è molto più facile sviluppare un editor di quadranti orologio utilizzando androidx.wear.watchface.editor e il quadrante orologio può essere modificato dall'app complementare di sistema senza che tu debba scrivere codice aggiuntivo. - Best practice integrate. La raccolta ha generato automaticamente etichette di contenuti per screen reader per le complicazioni (puoi anche aggiungere le tue), mentre il framerate si riduce automaticamente quando la batteria è scarica e non in carica per migliorare la durata della batteria.
- Per sviluppare un quadrante sono necessarie meno righe di codice, soprattutto per le complicazioni, in cui gran parte del codice standard è stato spostato nella libreria.
Correzioni di bug
- Correggi
EditorSession.userStyle.compareAndSet(I6f676) - Correggere i ritardi molto brevi del quadrante (Iffb97)
- Invia
InteractiveWatchFaceImpl.onDestroysul thread UI (I83340) - Risoluzione di diversi problemi relativi ai ricevitori di trasmissioni (I7d25f)
Versione 1.0.0-rc01
3 novembre 2021
androidx.wear.watchface:watchface-*:1.0.0-rc01 è stato rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Correzioni di bug
Correggi dump() (chiamato da adb shell dumpsys) che è stato interrotto dalle migrazioni di flusso. (087cf9e)
Assicurati che l'ordine di writeDirectBootPrefs sia corretto. Vogliamo che writeDirectBootPrefs venga sempre eseguito dopo initStyleAndComplications, altrimenti rischiamo di ritardare l'inizializzazione del thread UI.(37650ac)
Assicurati che venga chiamato Renderer.onDestroy. Nello scenario in cui il renderer è stato creato, ma l'inizializzazione del flusso di lavoro non è stata completata e viene chiamato Engine.onDestroy, dobbiamo chiamare Renderer.onDestroy. (f9952dc)
Ottimizzazione/correzione di isBatteryLowAndNotCharging. Questa patch sposta la configurazione iniziale di isBatteryLowAndNotCharging in precedenza, il che significa che può essere eseguita in parallelo con createWatchFace. Inoltre, ora ascoltiamo ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive deve essere false dopo la chiusura (ab9774e)
Versione 1.0.0-beta01
27 ottobre 2021
androidx.wear.watchface:watchface-*:1.0.0-beta01 è stato rilasciato. La versione 1.0.0-beta01 contiene questi commit.
Versione 1.0.0-alpha24
13 ottobre 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha24 è stato rilasciato. La versione 1.0.0-alpha24 contiene questi commit.
Modifiche alle API
- Le classi nel pacchetto
androidx.wear.watchface.complicationssono state spostate in un nuovo progettowear:watchface:watchface-complications. Tieni presente che ciò significa che non puoi includere questa libreria e nessuna versione alpha precedente diwear:watchface:watchface-complications-dataperché riceverai errori relativi a classi duplicate. (I97195) - Renderer.dump è stato rinominato in Renderer.onDump ed è stato annotato con @UiThread. (I44845)
InteractiveWatchFaceClient.addWatchFaceReadyListenerè stato rinominato inaddOnWatchFaceReadyListenereremoveWatchFaceReadyListenerinremoveOnWatchFaceReadyListener. (I48fea)- EditorSession
getComplicationsPreviewDataegetComplicationsDataSourceInfonon sono più funzioni di sospensione, ma proprietàStateFlow<>il cui valore è inizialmente null. In ListenableEditorSessiongetListenableComplicationPreviewDataegetListenableComplicationsProviderInfosono stati rimossi a favore dei nuovi oggettiStateFlow<>della classe base. Se devi ascoltare le modifiche al codice Java, ti consigliamo di utilizzareandroidx.lifecycle.FlowLiveDataConversions.asLiveDataper la conversione inLiveData<>. (Ic5483)
Versione 1.0.0-alpha23
29 settembre 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha23 è stato rilasciato. La versione 1.0.0-alpha23 contiene questi commit.
Nuove funzionalità
La raccolta di quadranti ora è un unico gruppo di raccolte, pertanto le raccolte sono state spostate e devi aggiornare le importazioni di Gradle nel seguente modo:
| Vecchio | Novità |
|---|---|
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 |
Modifiche alle API
- Esegui la migrazione delle raccolte separate
androidx.wearQuadrante e Complicazioni nel gruppo di raccolteandroidx.wear.watchface. (b25f3c0) - È stato aggiunto EditorRequest.canWatchFaceSupportHeadlessEditing per consentire a un client di sapere se un editor di quadranti supporta la modifica headless. Tieni presente che si verificheranno alcuni falsi negativi perché il supporto è stato aggiunto in asop/1756809, ma restituirà il valore corretto per tutti i futuri quadranti. (ca55590)
- Il renderer ora ha un metodo dump() che può essere sostituito per aggiungere dati personalizzati alle informazioni generate dal servizio di attività dumpsys della shell ABD WatchFaceService. (95235f9)
- InteractiveWatchFaceClient.addWatchFaceReadyListener ora specifica prima l'esecutore. (563ac2f)
- StateFlowCompatHelper è stato rimosso. Al suo posto deve essere utilizzato asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
- CurrentUserStyleRepository.userStyle non è più modificabile. (I44889)
- WatchFaceReadyListener è stato rinominato in OnWatchFaceReadyListener. (Ic12a9)
Correzioni di bug
- InteractiveInstanceManager.deleteInstance per chiamare onDestroy. Questa operazione è necessaria per garantire che InteractiveWatchFaceImpl venga sottoposto a garbage collection.(fce4af8, b/199485839)