Quadrante Wear

Crea applicazioni per gli smartwatch Wear OS by Google.

Nota : il Watch Face Format è obbligatorio per l'installazione dei quadranti sui dispositivi con Wear OS 5 o versioni successive preinstallate e per tutti i nuovi quadranti pubblicati su Google Play.

A partire da gennaio 2026, il Watch Face Format sarà obbligatorio per l'installazione dei 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 Aggiungi dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. 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.

Crea un nuovo problema

Per ulteriori informazioni, 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à ComplicationTextFormatting con 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 ColorUserStyleSetting in 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 ComplicationDataSourceUpdateRequester nella 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 companion, 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

  • Le classi UserStyleSetting e UserStyleOption ora hanno dei builder, che sono il modo consigliato per costruirle. (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. L'impostazione di un extra richiede l'autorizzazione privilegiata com.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 ogni ListOption. Poiché gli schemi UserStyle vengono 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 aggiunto ColorUserStyleSetting, dove l'opzione contiene un elenco di colori anziché un'icona, il che è molto più compatto. (Ib542e)
  • ColorUserStyleSetting e ColorOption richiedono 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 UserStyleSettings e UserStyleOptions, 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 temporaneamente ComplicationData dell'istanza del quadrante sottostante durante la modifica. Se le complicazioni cambiano di rado, questo metodo è più efficiente rispetto al passaggio degli override tramite EditorSession#renderWatchFaceToBitmap. (I19384)

Correzioni di bug

  • In precedenza, selectComplicationDataForInstant chiamava toApiComplicationData per 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 selectedData perché 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à

  • WatchFaceServices possono essere inizializzati contemporaneamente e, pertanto, devono essere stateless. Per supportare questa funzionalità, abbiamo aggiunto StatefulWatchFaceService, in cui un extra definito dall'utente creato da createExtra() viene passato a tutti gli override chiamati durante l'inizializzazione.
  • GlesRenderer2 ora ha un overload del costruttore che consente di specificare un elenco di attributi da provare a turno con eglChooseConfig.

Modifiche alle API

  • StatefulWatchFaceService ora supporta l'override di getComplicationSlotInflationFactory in cui viene passato l'extra definito dall'utente creato da createExtra(). (I82d9f)
  • Alcune watch face devono condividere i dati ausiliari creati durante createUserStyleSchema con gli altri metodi di inizializzazione. Poiché non esisteva un'alternativa migliore, gli sviluppatori in genere rendevano stateful il proprio WatchFaceServices. Ciò è pericoloso perché è possibile creare più istanze contemporaneamente, il che può causare bug. Per risolvere questo problema, abbiamo introdotto StatefulWatchFaceService e StatefulWatchFaceRuntimeService, in cui un tipo definito dall'utente viene creato da createExtra() e viene passato ai vari metodi di creazione come parametro. (If8a99)
  • Abbiamo aggiunto getUserStyleFlavors a InteractiveWatchFaceClient, che è di interesse principalmente per gli OEM. (I0f5d8)
  • GlesRenderer2 ora ha un overload del costruttore che consente di specificare un elenco di attributi da provare a turno con eglChooseConfig. 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_RATE verrà aggiunto a WearOS. È garantito che questa complicazione supporti solo le complicazioni SHORT_TEXT, ma è consigliabile che ComplicationSlot accetti anche SMALL_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_SUPPORTED che, a partire da Android U, controlla cosa succede quando il sistema viene ripristinato da un backup per l'origine dati della complicazione con METADATA_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 in caso contrario può aggiungere l'impostazione dei metadati METADATA_KEY_DATA_SOURCE_CONFIG_ACTION su false, il 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 che sono disponibili per l'uso da Android T:
    • GoalProgressComplicationData, simile a RangedValueComplicationData, 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 di targetValue.
    • WeightedElementsComplicationData, che consiste in un array di elementi (coppie di peso e colore) insieme a testo/titolo/immagine facoltativi. Questi 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 ColorRanges facoltativo a RangedValueComplicationData. Normalmente le complicazioni vengono visualizzate nei colori scelti dal quadrante, ma a volte è meglio che sia ComplicationDataSource a 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 ComplicationData ora supportano SmallImages.
  • Abbiamo aggiunto ComplicationDisplayPolicy, dove DO_NOT_SHOW_WHEN_DEVICE_LOCKED indica 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_FACES nel manifest del provider tramite ComplicationRequest#isForSafeWatchFace. Il fornitore avrà bisogno dell'autorizzazione com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE per 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 predefinito del sistema meteo per le complicazioni. (Ia0994)
  • Questa patch aggiunge WatchFaceRuntimeService e WatchFaceControlClient.createWatchFaceRuntimeControlClient insieme 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 int in modo che qualsiasi codice che dipende da WatchFaceType, CanvasType, TapType o ComplicationsSlotBoundsType non debba essere modificato. (I4098b)
  • File API aggiornati per annotare la soppressione della compatibilità. (I8e87a, b/287516207)
  • Questa patch espone le costanti WatchFaceType in WatchFaceTypes, le costanti CanvasType in CanvasTypes, le costanti TapType in TapTypes e le costanti ComplicationsSlotBoundsType in ComplicationsSlotBoundsType. (I3b85a, b/288750666)
  • WatchFace.OverlayStyle ha 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.Builder ora accetta DynamicFloat ed è disponibile una nuova DynamicComplicationText come sottoclasse di ComplicationText, entrambe 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 PlatformDataProvider per fornire il battito cardiaco e i passi giornalieri. L'interfaccia SensorGateway viene rimossa dall'API pubblica. (I55b84)
  • Rinomina StateEntryValue in DynamicDataValue e aggiorna le API di stato in modo che utilizzino DynamicDataKey. (If1c01)
  • Aggiungi AppDataKey per accedere allo stato push dell'app; aggiungi PlatformDataKey per accedere ai dati della piattaforma; aggiungi il supporto dello spazio dei nomi in StateStore. (I7985e)
  • I metodi enable/disablePlatformSource sono stati rimossi da DynamicTypeEvaluator. La persona che chiama deve occuparsi 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_FACE possono registrare metadati androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES che sostituiscono android.support.wearable.complications.SUPPORTED_TYPES per i 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 @Deprecated alla proprietà (I882d1, b/271441831)
  • Nome del parametro del valore per Enum.valueOf modificato (Ia9b89)
  • Altre eccezioni generate da enum valueOf (I818fe)
  • Abbiamo rimosso renderWatchFaceToSurface a favore di createRemoteWatchFaceView, che si basa su SurfaceControlViewHost e consente al chiamante di incorporare una visualizzazione dal quadrante, che viene visualizzata quando il client chiama RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • Abbiamo aggiunto renderWatchFaceToSurface a InteractiveWatchFaceClient, HeadlessWatchFaceClient e EditorSession. In genere, questa operazione è più efficiente del rendering in una bitmap. (Ieacad)
  • ObservableStateStore è stato rinominato in StateStore. (Ieb0e2)
  • È stato aggiunto DynamicTypeEvaluator.Builder anziché gli argomenti del costruttore per consentire più argomenti facoltativi, tra cui ObservableStateStore, 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 startEvaluation a BoundDynamicType per 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_FACE possono registrare i metadati androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES che sostituiscono android.support.wearable.complications.SUPPORTED_TYPES per i quadranti sicuri. (Id1c73)
  • Abbiamo rinominato CustomValueUserStyleSettings2 in LargeCustomValueUserStyleSettings. (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_FACES nel manifest del provider tramite ComplicationRequest#isForSafeWatchFace. Il fornitore avrà bisogno dell'autorizzazione com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE per ricevere qualsiasi altro elemento diverso da TargetWatchFaceSafety.UNKNOWN.

  • A partire da Android T CustomValueUserStyleSetting2 è disponibile anche un'area di archiviazione che può contenere fino a 12,5 KB. Il limite precedente per CustomValueUserStyleSetting era 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 eglContextAttribList a GlesRenderer e GlesRenderer2 che ti consente di impostare il valore EGL14.EGL_CONTEXT_CLIENT_VERSION passato a EGL14.eglCreateContext. (I2a83e)
  • Abbiamo eseguito la migrazione delle librerie dei quadranti a androidx.core.util.Consumer anziché a java.util.function.Consumer. (I273f5)
  • Altre eccezioni generate dagli accessor di proprietà KT (Iff9d9)
  • Abbiamo aggiunto InteractiveWatchFaceClient.isComplicationDisplayPolicySupported in modo che il client possa determinare se deve emulare o meno il supporto per conto dei vecchi quadranti. (I24c89)
  • Abbiamo deciso che isForSafeWatchFace dovrebbe essere un IntDef tri-state. (Ief2f7)
  • Per Android T abbiamo introdotto ComplicationRequest.isForSafeWatchFace, che è destinato all'uso OEM e richiede com.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 per CustomValueUserStyleSetting era 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 ComplicationSlot per i nuovi tipi di complicazione, GOAL_PROGRESS e WEIGHTED_ELEMENTS.

Correzioni di bug

  • Corregge una perdita in cui l'editor del quadrante 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 causa 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 UserStyleSettings gerarchiche e da Android T è ora possibile avere più di una ComplicationSlotsUserStyleSetting in una gerarchia. Solo un ComplicationSlotsUserStyleSetting sarà attivo, in base alle selezioni di stile dell'utente.

  • Stiamo migliorando il supporto dello screen reader per ListOption e ComplicationSlotsOption aggiungendo un campo screenReaderName. Prima di Android T, questo campo verrà ignorato dagli editor complementari.

Modifiche alle API

  • Abbiamo aggiunto un nuovo campo screenReaderName facoltativo a ListOption e ComplicationSlotsOption per 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ù ComplicationSlotsUserStyleSettings in una gerarchia di stili, a condizione che al massimo uno solo di questi possa essere attivo in un determinato momento. Abbiamo aggiunto una funzione di utilità findComplicationSlotsOptionForUserStyle a UserStyleSchema per aiutarti a trovare l'ComplicationSlotsOption attivo, se presente. (Ic2b06)
  • RangedValuesTypes sono stati inseriti nell'oggetto secondario di RangedValueComplicationData e rinominati in TYPE_UNDEFINED, TYPE_RATING ed è stato aggiunto un nuovo TYPE_PERCENTAGE. (I55d02)
  • Abbiamo rinominato l'esperimento DynamicFloat in FloatExpression e 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, GoalProgressComplicationData e WeightedElementsComplicationData.
  • GoalProgressComplicationData è simile a RangedValueComplicationData, ma il suo valore può superare il target (per RangedValueComplicationData il valore è bloccato nell'intervallo [min .. max]), il che ha implicazioni per il design visivo che potrebbero non essere adatte a tutti i quadranti.
  • GoalProgressComplicationData aggiunge il supporto per i grafici a torta e suddivisioni simili di dati semplici.
  • Abbiamo aggiunto il supporto facoltativo per ColorRamps a RangedValueComplicationData.
  • Per Android T, abbiamo aggiunto ComplicationPersistencePolicy e setCachePolicy a ComplicationData, 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 aggiunto ComplicationDisplayPolicy, dove DO_NOT_SHOW_WHEN_DEVICE_LOCKED indica a un quadrante compatibile di non visualizzare la complicazione quando il dispositivo è bloccato. (Ic9574)

Modifiche alle API

  • GoalProgressComplicationData, WeightedElementsComplicationData e ColorRamp non sono più sperimentali. (Ica9e2)
  • ComplicationPersistencePolicy e ComplicationDisplayPolicy sono ora contrassegnati correttamente come API T. (I31d88)
  • Il costruttore ComplicationSlotOverlay ritirato ora ha DeprecationLevel.WARNING, il che consente di chiamarlo di nuovo da Java. (Ib308c)
  • Abbiamo risolto alcuni problemi di compatibilità Java con ComplicationRequestListener, CanvasComplication, ComplicationTapFilter e InteractiveWatchFaceClient annotandoli con @JvmDefaultWithCompatibility (Id94fc)
  • Abbiamo rimosso ProtoLayoutComplicationData e ListComplicationData sperimentali. La storia dello sviluppatore per questi era poco chiara, speriamo di rivisitarla in futuro. (I9df05)
  • Abbiamo aggiunto un ValueType a RangedValueComplicationData. WeightedElementsComplicationData ora supporta un colore di sfondo. Abbiamo rimosso DiscreteRangedValueComplicationData perché la sua funzionalità è un sottoinsieme di WeightedElementsComplicationData. (I6446c)

Correzioni di bug

  • Includi isForScreenShot nel segno di uguale e nel codice hash. Assicurati che onRenderParametersChanged riceva un valore isForScreenshot corretto (I04a41)
  • Sono state corrette le perdite di WatchFaceControlService dai 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

  • Deprecata UserStyleSchema.userStyleSettings perché rootUserStyleSettings è diventato non sperimentale (Ie96e3)
  • Sposta rootUserStyleSettings fuori dalla versione sperimentale (I8d6b3)
  • Abbiamo contrassegnato WatchFaceColors come sperimentale perché non è supportato da tutti i sistemi (I6d75d)
  • Esporre DisconnectReasons nell'API pubblica per farlo funzionare conIntDef. (I791f8)

Correzioni di bug

  • Chiudi qualsiasi editor aperto sull'orologio se SysUI si scarica. Se SysUI si arresta e l'editor di quadranti non si chiude, il quadrante potrebbe rimanere in uno stato incoerente perché il sistema si basa su SysUI per 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 UserStyle che ne influenza l'aspetto visivo (ad es. la selezione di una foto di sfondo). Abbiamo aggiunto Renderer.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 ComplicationData ora supportano SmallImages.

Modifiche alle API

  • A volte il gestore degli sfondi può staccarsi da un motore e crearne un altro. Abbiamo aggiunto una definizione di DisconnectReason int ed esteso ClientDisconnectListener con un nuovo metodo che include un DisconnectReason, consentendo all'ascoltatore di osservare i distacchi del motore. (I45cce)
  • Aggiunti due parametri facoltativi nameResourceId e screenReaderResourceId al costruttore ComplicationSlotOverlay (I157e8)
  • Abbiamo aggiunto un wrapper Guava per il nuovo overload di getOrCreateInteractiveWatchFaceClient con un PreviewImageUpdateRequestedListener. (Ic31f0)
  • Abbiamo aggiunto Renderer.sendPreviewImageNeedsUpdateRequest, utile per i quadranti che hanno uno stato al di fuori di UserStyleSchema che influisce sul loro aspetto (ad es. un quadrante con un'immagine di sfondo selezionabile). Sul lato client abbiamo aggiunto PreviewImageUpdateRequestedListener come parametro facoltativo a getOrCreateInteractiveWatchFaceClient per osservare queste richieste. (Iff44a)
  • Abbiamo semplificato l'API per l'esposizione di WatchFaceColors. Ora esiste una semplice proprietà chiamata watchFaceColors nel renderer che il quadrante può impostare. Questa proprietà deve essere aggiornata in base alle necessità in risposta a eventuali modifiche dello stile. Anziché utilizzare WallpaperManager per osservare le modifiche del colore, abbiamo aggiunto OnWatchFaceColorsListener a InteractiveWatchFaceClient. (I490bc)
  • Abbiamo aggiunto una classe WatchFaceColors che contiene i tre colori più importanti del quadrante e abbiamo aggiunto i metodi aperti watchfaceColors e notifyWatchFaceColorsChanged al renderer, che consentono al sistema di ottenere i colori del quadrante tramite WallpaperManager.getWallpaperColors. (I3d611)
  • ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData (e le versioni sperimentali DiscreteRangedValueComplicationData, GoalProgressComplicationData e WeightedElementsComplicationData) ora supportano tutti SmallImages. Se un quadrante sceglie di eseguire il rendering di una complicazione con più colori, ora ha la possibilità di utilizzare un'immagine SmallImage multicolore, mentre in precedenza avrebbe dovuto utilizzare un'immagine monocromatica. (I257df)
  • Esegui il refactoring di PreviewImageUpdateRequestedListener in modo che sia un Consumer<> (Ia875d)
  • Sostituisci il tipo di metodo astratto singolo (SAM) personalizzato OnWatchfaceColorsListener con il tipo SAM Java generico (Consumer) (I0c489)
  • Abbiamo ritirato i vecchi metodi getOrCreateInteractiveWatchFaceClient e listenableGetOrCreateInteractiveWatchFaceClient che non specificano un PreviewImageUpdateRequestedListener. (Iec502)

Correzioni di bug

  • DisconnectReason.BINDER_DIED è stato rinominato in DisconnectReason.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 parte di CanvasComplicationDrawable.
  • Abbiamo anche aggiunto margini facoltativi agli spazi per le complicazioni, in modo da rendere più semplice toccare le complicazioni piccole.

Modifiche alle API

  • La classe sperimentale BoundingArc ora è immutabile. (If624a)
  • Le complicazioni piccole possono essere difficili da toccare. Per contribuire a mitigare questo problema, abbiamo introdotto il supporto dei margini, che aumentano l'area toccabile senza influire sul rendering. Se non specificati (nel codice o tramite XML), i ComplciationSlots hanno margini di dimensioni pari a zero. (I14089)
  • Modificata la firma di getComplicationSlotInflationFactory(CurrentUserStyleRepository) per restituire un'istanza di fabbrica non nulla. In precedenza era un errore restituire null, quindi questo serve solo a rendere più chiaro il contratto API. (I0fcc0)
  • Abbiamo aggiunto l'argomento currentUserStyleRepository al metodo WatchFaceService.getComplicationSlotInflationFactory per coerenza con createComplicationSlotsManager. (I2ddd2)
  • UserStyleFlavors è diventata una funzionalità non sperimentale. (I69cdc)
  • Abbiamo rimosso ValueType sperimentale da RangedValueComplicationData e abbiamo introdotto DiscreteRangedValueComplicationData sperimentale, che è simile a RangedValueComplicationData, ad eccezione dell'intervallo e del valore interi. Abbiamo anche introdotto GoalProgressComplicationData sperimentale, simile a RangedValueComplicationData, ma per il progresso verso un obiettivo in cui il valore minimo è implicitamente zero e il valore può essere maggiore di targetValue. Nota per tutte le varianti di RangedValue: deve essere specificato almeno uno tra monochromeImage, text o title. (I9590c)
  • Abbiamo rimosso boundsWithMargins da ComplicationSlotState perché 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 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)
  • ColorRamps sperimentale utilizzato facoltativamente da RangedValueComplicationData e GoalProgressComplicationData ora 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 in valueType, che è un numero intero con un ValueType IntDef corrispondente 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 ColorRanges facoltativo a RangedValueComplicationData. Normalmente le complicazioni vengono visualizzate nei colori scelti per il quadrante, ma a volte è meglio che sia ComplicationDataSource a 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 drawSegmented a RangedValueComplicationData. Questo indica ai renderer di disegnare l'indicatore del valore compreso in un intervallo con segmenti, dove 1 segmento = 1 unità. (I7d7c1)

Correzioni di bug

  • Abbiamo aggiunto la possibilità di definire ComplicationSlotBounds rispetto 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 release include correzioni di bug e consigliamo vivamente agli utenti della versione 1.1.0 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 pendingInitialComplications e applicata in un secondo momento. Purtroppo pendingInitialComplications è stato applicato troppo presto, il che significa che durante l'inizializzazione del quadrante c'era un periodo di tempo in cui le complicazioni venivano comunque inserite in pendingInitialComplications e ignorate. Il problema è stato risolto. Inoltre, questa patch corregge un bug per cui ComplicationRenderer tentava erroneamente di caricare i segnaposto in modo asincrono, senza riuscirci e impedendo l'aggiornamento del grafico di compilazione. Infine, questa patch corregge un bug teorico in cui è necessario unire più pendingInitialComplications. (0d03ba3)

  • Correzione di un potenziale deadlock in InteractiveInstanceManager in cui getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance manteneva il blocco più a lungo del necessario. Di solito ci aspettiamo che engine.setUserStyle sia veloce, ma se per qualche motivo non lo è, potremmo trovarci in una situazione di stallo/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ò conservare WatchFaceService, quindi una chiamata release() risolve il problema. Inoltre, StateFlows può conservare WatchFaceService, quindi l'annullamento di CoroutineScopes sottostante risolve il problema.(fd48138)

  • Aggiungi timeout a awaitDeferredWatchFace* e correggi watchfaceOverlayStyle NullPointerException. In circostanze normali, questo non dovrebbe scadere, anche dopo l'installazione e gli scenari DirectBoot in cui il carico della CPU è elevato. Abbiamo anche corretto un errore NullPointerException se getWatchfaceOverlayStyle viene chiamato dopo close().(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 di scrivere una gerarchia di stili tramite le UI dell'editor. Ora puoi specificare icone separate da utilizzare negli editor di quadranti e app complementari.
  • È disponibile il supporto con attivazione per più istanze di un quadrante, ciascuna con un ID univoco disponibile in tutte le superfici API.
  • Ora puoi specificare nomi leggibili per ComplicationSlots da 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 il ComplicationType per 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 momenti o più eventi in programma nel calendario.
  • Il ComponentName del fornitore di complicazioni fa parte di ComplicationData.
  • 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 UserStyleSchema e ComplicationSlots in 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 ComplicationSlotBounds e dei riferimenti supportati. Continua la sperimentazione con la complicazione sul bordo BoundingArc, che viene trasferita a drawHighlight, anche se non è consigliata per l'uso in quel momento.

Modifiche alle API

  • Abbiamo aggiunto un overload sperimentale di drawHighlight che accetta un parametro BoundingArc. (I705f8)
  • L'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 ComplicationSlotBounds nel modulo center_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 runBlockingWithTracing che eseguiva attività nel contesto errato.(4f595fe)
  • Rendi BaseEditorSession.close sincrono. Il problema con BaseEditorSession.close asincrono è che rilasciamo ComplicationDataSourceInfoRetriever troppo tardi, il che porta a spam di avvisi in logcat. Probabilmente si tratta di un problema innocuo, ma lo spam logcat è fonte di distrazione 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 a ComplicationSlot e collegato a ComplicationSlotState e WatchFaceMetadataClient. (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: ListComplicationData e ProtoLayoutComplicationData. Al momento non è disponibile il supporto per il rendering di nessuno di questi tipi e WearOS non li riconosce se aggiunti a un file manifest ComplicationDataSource's. (I1811c)

Correzioni di bug

  • Correzione della serializzazione del tipo TimeLineEntry. Non serializzavamo il tipo TimeLineEntry, il che significava che TimeLineEntries memorizzati nella cache di tipo NoData venivano interpretati erroneamente come se avessero il tipo di complicazione principale, il che portava a NPE quando si accedeva a campi obbligatori inesistenti. (55ffdf5)
  • È stato corretto un bug per cui i campi della sequenza temporale setComplicationData venivano eliminati(fb392f5)
  • Correzione di un bug per cui molto raramente runBlockingWithTracing causava un errore NPE(12ca62e)
  • Corregge un bug per cui a volte viene visualizzato ClassNotFoundException: android.support.wearable.complications.ComplicationText quando si riceve una complicazione.(217942d9)
  • Corregge un bug in GlesRenderer.backgroundThreadInitInternal in cui veniva chiamato onBackgroundThreadGlContextCreated solo se veniva chiamato EGL14.eglCreateContext. È stato corretto un altro bug che causava un problema visivo nello screenshot dovuto a verticalFlip.(c674ad2)
  • Correzione del controllo della versione XML di WatchFaceService, che veniva caricata dal pacchetto sbagliato.(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 dato NoDataComplication memorizzava il segnaposto nei campi usuali (problematico perché i vecchi quadranti avrebbero visualizzato la stringa segnaposto, cosa non prevista). Ora, invece, utilizziamo un bundle interno per isolare completamente questo dato.(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) e HeadlessWatchFaceClient.getUserStyleFlavors generano RuntimeException non controllata anziché WatchFaceException. (I0718a)
  • WatchFaceMetadataClient.WatchFaceException è stato spostato fuori dal corso per consentirne il riutilizzo. (I4e869)

Correzioni di bug

  • WatchFaceMetadataClient non si arresterà più in modo anomalo quando viene inviato ComplicationSlotBounds parziale.(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 ComplicationData esaminando ComplicationData.dataSource. Alcuni quadranti potrebbero utilizzare queste informazioni per personalizzare la visualizzazione delle complicazioni. (I44a73)

Modifiche alle API

  • Renderer.CanvasRenderer e Renderer.GlesRenderer sono stati ritirati a favore di Renderer.CanvasRenderer2 e Renderer.GlesRenderer2, che supportano SharedAssets, passati ai metodi di rendering. Per l'interoperabilità Java abbiamo introdotto ListenableCanvasRenderer2 e ListenableGlesRenderer2. (I31ffa)
  • Aggiunta della possibilità di definire @WatchFaceFlavorsExperimental: un elenco preconfigurato di quadranti con stili (I04dd0)
  • Renderer.sharedAssets ora è uno StateFlow e abbiamo rimosso Renderer.SharedAssetsFactory (I12ac5) inutilizzato
  • UserStyleSchema.userStyleSettings non è più deprecato (Iba7e3)
  • Abbiamo aggiunto HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, che consente a HeadlessWatchFaceClient di evitare il sovraccarico relativamente basso del passaggio dello schema tramite AIDL prima di calcolare l'hash del digest. (I33597)
  • Abbiamo aggiunto isUserStyleSchemaStatic a WatchFaceMetadataClient, che è vero se e solo se è possibile fare affidamento su UserStyleSchema per non cambiare a meno che l'APK del quadrante non venga aggiornato. (I45a3f)
  • Abbiamo aggiunto getDigestHash a UserStyleSchema, che calcola un hash digest dello schema. Può essere utilizzato per determinare in modo efficiente se UserStyleSchema è cambiato. (I2063d)
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED rinominato in METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • UserStyleSetting.OnWatchEditorData è stato rinominato UserStyleSetting.WatchFaceEditorData e contiene dati utilizzati esclusivamente dall'editor dei 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

  • ComplicationData aggiornati potrebbero non essere sempre disponibili (ad es. ComplicationData memorizzati nella cache scaduti), pertanto abbiamo esteso NoDataComplication con un segnaposto ComplicationData facoltativo e aggiunto ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER, che possono essere utilizzati solo nel contesto di un segnaposto NoDataComplicationData. 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.watchFaceId ora può essere utilizzato su tutti i livelli API. Inoltre, il suo valore sarà sempre coerente con WatchState.watchFaceInstanceId. (I323b9)
  • L'API getPendingIntentForTouchEvent non è 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 l'attivazione di PendingIntents, anche se il tasto Home è stato premuto di recente. (I1f2e8)
  • Abbiamo aggiunto RendererParameters.isForScreenShot, che sarà true se il rendering è per uno screenshot. Alcuni quadranti con animazioni devono conoscere questa informazione per apportare modifiche e garantire i migliori risultati. (I96d99)
  • Abbiamo aggiunto WatchFaceExceptionReason a WatchFaceException per fornire un contesto di ciò che non ha funzionato. (I01d15)
  • ComplicationDataSourceService.onImmediateComplicationRequest è stato rimosso, mentre è stato aggiunto ComplicationRequest.immediateResponseRequired per indicare che il fornitore deve rispondere rapidamente (idealmente in meno di 100 ms). Tieni presente che questa funzionalità è protetta dall'autorizzazione privilegiata com.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 da ListOption. In questo modo è possibile descrivere una gerarchia di stili da utilizzare nelle UI dell'editor. Lo UserStyle sottostante rimane invariato ed è ancora un Map<String, ByteArray>. (Iaf6f4)
  • Abbiamo aggiunto WatchFace.OverlayStyle, che consente al quadrante di configurare il rendering dell'overlay di stato del sistema. (I8520d)
  • Abbiamo introdotto clearWithBackgroundTintBeforeRenderingHighlightLayer un nuovo parametro del costruttore facoltativo per CanvasRenderer (il valore predefinito è false). Se impostato su true, il canvas verrà cancellato con il colore della tinta dello sfondo. (Ie01e5)
  • Aggiunta della chiave dei metadati androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED che 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 di condividere dati immutabili (ad es. texture e shader) tra le istanze. GlesRenderer.setEglConfig e GlesRenderer.setEglDisplay sono deprecati, non è mai stato previsto che fossero impostabili e farlo avrebbe portato a un comportamento indefinito. (I0d9e7)
  • Abbiamo aggiunto setNameResourceId e setScreenReaderNameResourceId (che fanno riferimento alle risorse stringa) a ComplicationSlot.Builder e ai getter corrispondenti in androidx.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.getUserStyleSchema e getComplicationSlotMetadataMap ora generano WatchFaceException anziché RemoteException. (I86f11)
  • onSynchronousComplicationRequest e le funzioni correlate in ComplicationDataSourceService sono state rinominate in onImmediateComplicationRequest e così via. (I87ba0)
  • Gli editor quadranti hanno molto meno spazio sullo schermo rispetto agli editor complementari, pertanto è opportuno 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 @JvmOverloads al costruttore di ListenableGlesRenderer per una migliore interoperabilità Java. (I2974a)

Correzioni di bug

  • Il costruttore di ListenableGlesRenderer ora è contrassegnato correttamente come @Throws(GlesException::class) ed è ora possibile estendere questa classe in Java. (Iac6d0)
  • Correzione del bug relativo a tapAction di PhotoImageComplicationData non 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 il test, ComplicationData e 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 WatchfaceMetadataClient generano di nuovo RemoteExceptions, se necessario, consentendo al codice client di rilevare più facilmente gli errori del quadrante. (I78785)
  • ComplicationData e 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 UserStyleSchema e ComplicationSlots in XML. Ciò semplifica la creazione dei quadranti. Inoltre, le query WatchFaceMetadataClient sono più veloci perché non devono essere associate al servizio per ottenere i metadati. WatchFaceMetadataClient e ListenableWatchFaceMetadataClient non 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 quadranti saranno visibili nel selettore di quadranti. Per attivare questa funzionalità, un quadrante 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 tramite WatchState.watchFaceInstanceId.

  • ComplicationData ora viene memorizzato nella cache per consentire la visualizzazione immediata delle complicazioni al caricamento. A volte ComplicationData viene 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.tapActionLostDueToSerialization restituirà true e il quadrante dovrebbe visualizzare la complicazione in modo diverso (ad es. in grigio o semitrasparente) per segnalare che non è possibile toccarla. Il sistema invierà ComplicationData aggiornati con un tapAction il prima possibile.

  • Alcuni ComplicationData non devono essere memorizzati nella cache per molto tempo. Per supportare questa funzionalità, abbiamo aggiunto una funzionalità più generale ComplicationDataTimeline. Può essere utilizzato per fornire una sequenza di ComplicationData con limiti di tempo da visualizzare sul quadrante, che può essere memorizzato nella cache e aggiornato automaticamente. Ad esempio, le previsioni meteo di oggi in vari momenti o più eventi in programma nel calendario. ComplicationRequestListener è stato esteso con un nuovo metodo onComplicationDataTimeline che puoi utilizzare per restituire questi dati.

  • DefaultComplicationDataSourcePolicy è stato esteso per consentirti di specificare ComplicationType per 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 PendingIntentTapListener vengano 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 in tapActionLostDueToSerialization, 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 ComplicationDataTimeline a wear-complication-data-source. Può essere utilizzato per fornire una sequenza di ComplicationData con limiti di tempo da visualizzare sul quadrante, che può essere memorizzato nella cache e aggiornato automaticamente. Ad esempio, le previsioni meteo di oggi in vari momenti o più eventi in programma nel calendario. ComplicationRequestListener è stato esteso con un nuovo metodo onComplicationDataTimeline che puoi utilizzare per restituire questi dati. È disponibile un nuovo wrapper Kotlin SuspendingTimelineComplicationDataSourceService per sospendere i servizi di origine dati. (Idecdc)
  • Aggiunta di PendingIntentTapListener e WatchFaceControlClient.getPendingIntentForTouchEvent. In questo modo, i quadranti che devono avviare intent in risposta ai tocchi possono aggirare 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 ComplicationData per 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 API WatchFaceControlClient.hasComplicationCache destinato agli OEM. Ciò potrebbe influire sulla strategia del sistema per l'invio di complicazioni a un quadrante. Inoltre, ComplicationData ha una proprietà isCached ed è consigliabile eseguire il rendering delle complicazioni memorizzate nella cache in modo diverso perché tapAction non può essere memorizzato nella cache e sarà null in una complicazione memorizzata nella cache. (I404b0)
  • L'ID istanza del quadrante è ora disponibile tramite WatchState.watchFaceInstanceId. La maggior parte dei quadranti non dovrà utilizzare questa chiave, 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 chiami WatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98)
  • DefaultComplicationDataSourcePolicy esteso con la possibilità di impostare ComplicationTypes predefinito per il fornitore primario, secondario e per il fornitore di sistema di riserva. ComplicationSlot.defaultDataSourceType è ora deprecato. (If0ce3)
  • ComplicationSlot.configExtras ora è modificabile e può essere aggiornato prima di chiamare EditorSession.openComplicationDataSourceChooser(). (I6f852)
  • Aggiunta di WatchFace.setComplicationDeniedDialogIntent e setComplicationRationaleDialogIntent. 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 UserStyleSchema e ComplicationSlots in XML. Ciò semplifica la creazione dei quadranti e velocizza le query WatchFaceMetadataClient, in quanto non è necessario eseguire il binding al servizio per ottenere i metadati. (I85bfa)
  • È stato aggiunto InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent in modo che un client possa determinare se un quadrante supporta getPendingIntentForTouchEvent. (I0b917)
  • WatchFaceMetadataClient e ListenableWatchFaceMetadataClient non sono più sperimentali. Possono essere utilizzati per ottenere in modo efficiente i metadati del quadrante, se 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_SECONDS nel manifest e sostituire onSynchronousComplicationRequest. A seconda della natura dell'origine dati, potrebbe anche essere necessario eseguire l'override di onStartSynchronousComplicationRequests e onStopInteractiveComplicationRequests per 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 PhotoImageComplicationData non 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 Wear OS. 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, soprattutto per le complicazioni in cui gran parte del boilerplate è stato spostato nella libreria, è necessario meno codice.

Correzioni di bug

  • Correggi EditorSession.userStyle.compareAndSet (I6f676)
  • Correggere i ritardi molto brevi del quadrante (Iffb97)
  • Invia InteractiveWatchFaceImpl.onDestroy sul thread UI (I83340)
  • Risoluzione di diversi problemi relativi ai ricevitori di trasmissione (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 del 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 di WF non è stata completata e viene chiamato Engine.onDestroy, è necessario chiamare Renderer.onDestroy. (f9952dc)

  • Ottimizzazione/correzione di isBatteryLowAndNotCharging. Questa patch sposta la configurazione iniziale di isBatteryLowAndNotCharging in modo che possa 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.complications sono state spostate in un nuovo progetto wear:watchface:watchface-complications. Tieni presente che ciò significa che non puoi includere questa libreria e nessuna versione alpha precedente di wear:watchface:watchface-complications-data perché riceverai errori relativi a classi duplicate. (I97195)
  • Renderer.dump è stato rinominato in Renderer.onDump ed è stato annotato con @UiThread. (I44845)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener è stato rinominato in addOnWatchFaceReadyListener e removeWatchFaceReadyListener in removeOnWatchFaceReadyListener. (I48fea)
  • EditorSession getComplicationsPreviewData e getComplicationsDataSourceInfo non sono più funzioni di sospensione, ma proprietà StateFlow<> il cui valore è inizialmente null. In ListenableEditorSession getListenableComplicationPreviewData e getListenableComplicationsProviderInfo sono stati rimossi a favore dei nuovi oggetti StateFlow<> della classe base. Se devi ascoltare le modifiche al codice Java, ti consigliamo di utilizzare androidx.lifecycle.FlowLiveDataConversions.asLiveData per la conversione in LiveData<>. (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.wear Watchface e Complicazioni nel gruppo di raccolte androidx.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)