Quadrante Wear
Nota: Watch Face Format è obbligatorio per l'installazione dei quadranti sui dispositivi con Wear OS 5 preinstallato a partire dal 10 luglio 2024 e per tutti i nuovi quadranti pubblicati su Google Play a partire dal 27 gennaio 2025.
Scopri di più sulle modifiche rivolte agli utenti in questo articolo del Centro assistenza.
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Versione alpha |
---|---|---|---|---|
18 settembre 2024 | 1.2.1 | - | - | 1.3.0-alpha04 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza da Wear, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
Alla moda
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 ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, 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 ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 1.3
Versione 1.3.0-alpha04
18 settembre 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha04
viene rilasciato. La versione 1.3.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per il caricamento differito delle icone in
UserStyleSettings
eUserStyleOptions
, che offre un miglioramento delle prestazioni per il 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 state modificate) tramite il nuovo
Watchface.setUpdateScreenshotOnConfigurationChange
. Per impostazione predefinita, questa impostazione è disattivata. (I765a1)
Correzioni di bug
- È stato rimosso il riepilogo manuale dell'accesso alle nuove API di piattaforma, poiché avviene automaticamente tramite la definizione del modello 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 clienti 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
viene rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche all'API
- Abbiamo aggiunto
EditorSession#setOverrideComplications
che imposta temporaneamenteComplicationData
dell'istanza del quadrante sottostante durante la modifica. Se le complicazioni cambiano di rado, questa operazione è più efficiente del passaggio delle sostituzioni tramiteEditorSession#renderWatchFaceToBitmap
. (I19384)
Correzioni di bug
- In precedenza,
selectComplicationDataForInstant
chiamavatoApiComplicationData
per qualsiasi sequenza temporale, il che significa che il successivo test di uguaglianza del riferimento === non andava mai a buon fine. Ciò significava che le complicazioni venivano ricaricate a ogni fotogramma, con un conseguente consumo della batteria. (717406)
Versione 1.3.0-alpha02
3 aprile 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Nuove funzionalità
- Ora utilizziamo l'uguaglianza di riferimento per confrontare il valore migliore e
selectedData
perché l'operatore di uguaglianza è costoso. (446b00)
Modifiche all'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
viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
WatchFaceServices
può essere inizializzato contemporaneamente e, di conseguenza, non deve avere stato. Per supportare questa funzionalità, abbiamo aggiuntoStatefulWatchFaceService
in cui un extra definito dall'utente creato dacreateExtra()
viene passato a tutte le sostituzioni chiamate durante l'inizializzazione.GlesRenderer2
ora dispone di un sovraccarico del costruttore che ti consente di specificare un elenco di attributi da provare a turno coneglChooseConfig
.
Modifiche all'API
StatefulWatchFaceService
ora supporta un'override digetComplicationSlotInflationFactory
a cui viene passato l'extra definito dall'utente creato dacreateExtra()
. (I82d9f)- Alcuni quadranti devono condividere i dati ausiliari creati durante
createUserStyleSchema
con gli altri metodi di inizializzazione. Poiché non esisteva un'alternativa migliore, in genere gli sviluppatori rendevanoWatchFaceServices
stateful. Questo è pericoloso perché è possibile creare più istanze contemporaneamente, il che può causare bug. Per risolvere il problema, abbiamo introdottoStatefulWatchFaceService
eStatefulWatchFaceRuntimeService
, in cui un tipo definito dall'utente viene creato dacreateExtra()
e viene passato ai vari metodi di creazione come parametro. (If8a99) - Abbiamo aggiunto
getUserStyleFlavors
aInteractiveWatchFaceClient
, che è di interesse principalmente per gli OEM. (I0f5d8) GlesRenderer2
ora dispone di un sovraccarico del costruttore che ti consente di specificare un elenco di attributi da provare a turno coneglChooseConfig
. Ad esempio, puoi provare prima una configurazione con l'anti-aliasing e, se necessario, passare a una senza. (I1ba74)- A partire da Android U, il supporto di
SystemDataSources.DATA_SOURCE_HEART_RATE
verrà aggiunto a Wear OS. Questa complicazione supporta solo le complicazioniSHORT_TEXT
, ma è consigliabile cheComplicationSlot
accetti 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_SUPPORTED
che, a partire da Android U, controlla cosa succede quando il sistema viene ripristinato da un backup per l'origine dati delle complicazioni conMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
. Per impostazione predefinita, il sistema presuppone che il servizio dell'origine dati della complicazione supporti il backup di tutti i dati di configurazione, ma in caso contrario può aggiungere l'impostazione dei metadatiMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
a false, il che segnerà 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
viene rilasciato. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- È stato corretto 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
viene 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 possono essere utilizzati su Android T:
GoalProgressComplicationData
, che è 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
, composto da un array di elementi (coppie di spessore e colore) insieme a testo/titolo/immagine facoltativi. Questi dati potrebbero essere visualizzati come un grafico a torta in cui i colori devono avere un significato in base al contesto, poiché in genere in una complicazione non c'è spazio per visualizzare le etichette.
- Abbiamo aggiunto il supporto per
ColorRanges
facoltativo aRangedValueComplicationData
. In genere, le complicazioni vengono visualizzate nei colori scelti dal quadrante, ma a volteComplicationDataSource
è la risorsa più adatta per 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 supportanoSmallImages
. - Abbiamo aggiunto
ComplicationDisplayPolicy
doveDO_NOT_SHOW_WHEN_DEVICE_LOCKED
indica a un quadrante compatibile di non mostrare 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 entro il giornoComplicationRequest#isForSafeWatchFace
. Il fornitore avrà bisogno dell'autorizzazionecom.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
viene 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
viene rilasciato. La versione 1.2.0-beta02 contiene questi commit.
Nuove funzionalità
SuspendingComplicationDataSourceService#onDestroy
è ora aperto. Tieni presente che il supporto di una complicazione meteo predefinita del sistema è stato rimosso.
Modifiche all'API
- Ripristina "Esponi 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
viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- A partire da Android T, WearOS supporterà una complicazione predefinita per il sistema meteo.
Modifiche all'API
- Aggiungi il valore predefinito di sistema per il meteo per le complicazioni. (Ia0994)
- Questa patch aggiunge
WatchFaceRuntimeService
eWatchFaceControlClient.createWatchFaceRuntimeControlClient
insieme ai wrapper di Guava. Questi pacchetti aggiungono il supporto per i runtime dei quadranti, 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 Android. (I2799f) - Questa patch fa seguito a aosp/2636578, in cui abbiamo rinominato le definizioni di interi in modo che qualsiasi codice che dipende da
WatchFaceType
,CanvasType
,TapType
oComplicationsSlotBoundsType
non debba essere modificato. (I4098b) - File API aggiornati per annotare la soppressione della compatibilità. (I8e87a, b/287516207)
- Questa patch espone le costanti
WatchFaceType
inWatchFaceTypes
, le costantiCanvasType
inCanvasTypes
, le costantiTapType
inTapTypes
e le costantiComplicationsSlotBoundsType
inComplicationsSlotBoundsType
. (I3b85a, b/288750666) WatchFace.OverlayStyle
ha un utilizzo molto ridotto 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
viene rilasciato. La versione 1.2.0-alpha09 contiene questi commit.
Nuove funzionalità
RangedValueComplicationData.Builder
ora accettaDynamicFloat
e un nuovoDynamicComplicationText
è disponibile come sottoclasse diComplicationText
. Entrambi possono utilizzare espressioni dinamiche e associazioni alla piattaforma che vengono aggiornate a 1 Hz sui dispositivi Wear 4 supportati.
Modifiche all'API
- Sono stati aggiunti tipi dinamici per distanza giornaliera, calorie giornaliere e piani giornalieri. Le chiavi per le origini dell'integrità della piattaforma ora si trovano in
PlatformHealthSources.Keys
(Ib7637) - Implementa
PlatformDataProvider
per fornire il battito cardiaco e i passi giornalieri. L'interfacciaSensorGateway
viene rimossa dall'API pubblica. (I55b84) - Rinomina
StateEntryValue
inDynamicDataValue
e aggiorna le API di stato per utilizzareDynamicDataKey
. (If1c01) - Aggiungi
AppDataKey
per accedere allo stato dell'app inviata; aggiungiPlatformDataKey
per accedere ai dati della piattaforma; aggiungi il supporto dello spazio dei nomi inStateStore
. (I7985e) - I metodi
enable
/disablePlatformSource
sono stati rimossi daDynamicTypeEvaluator
. L'utente che effettua la chiamata deve essere responsabile degli aggiornamenti. (I78c6d) - Consente di limitare le dimensioni dei tipi di dati vincolati. (Ie2966)
Versione 1.2.0-alpha08
19 aprile 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha08
viene 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 metadatiandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
che sostituisconoandroid.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 all'API
- Propagazione della classe
@Deprecated
alla proprietà (I882d1, b/271441831) - Il nome del parametro di valore per
Enum.valueOf
è stato modificato (Ia9b89) - Altre eccezioni lanciate da valueOf dell'enum (I818fe)
- Abbiamo rimosso
renderWatchFaceToSurface
in favore dicreateRemoteWatchFaceView
, che è basato su SurfaceControlViewHost e consente all'autore della chiamata di incorporare una visualizzazione dal quadrante, che viene visualizzata quando il client chiamaRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Abbiamo aggiunto
renderWatchFaceToSurface
aInteractiveWatchFaceClient
,HeadlessWatchFaceClient
eEditorSession
. In genere, le prestazioni saranno migliori rispetto al rendering in una bitmap. (Ieacad) ObservableStateStore
è stato rinominato inStateStore
. (Ieb0e2)- È stato aggiunto
DynamicTypeEvaluator.Builder
anziché gli argomenti del costruttore per consentire più argomenti facoltativi, tra cuiObservableStateStore
, che ora per impostazione predefinita è un negozio vuoto. (I6f832) - Ordine dei parametri ristrutturato in
DynamicTypeEvaluator
. (Ic1ba4) - L'executor è stato aggiunto ai metodi
DynamicTypeEvaluator.bind
. (I346ab) - Abbiamo aggiunto il metodo
startEvaluation
aBoundDynamicType
per attivare la valutazione dopo il vincolo del tipo dinamico. (I19908) - I fornitori di complicazioni con il privilegio
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
possono registrare metadatiandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
che sostituisconoandroid.support.wearable.complications.SUPPORTED_TYPES
per i quadranti sicuri. (Id1c73) - Abbiamo rinominato
CustomValueUserStyleSettings2
inLargeCustomValueUserStyleSettings
. (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
viene 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 entro il giornoComplicationRequest#isForSafeWatchFace
. Il fornitore avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
per ricevere qualsiasi cosa diversa daTargetWatchFaceSafety.UNKNOWN
.Inoltre, da Android T
CustomValueUserStyleSetting2
è disponibile per l'utilizzo, che può contenere fino a 12,5 KB. Il limite precedente perCustomValueUserStyleSetting
era 1 KB. Nonostante l'aumento dei limiti di dimensioni, gli sviluppatori di quadranti sono invitati a mantenere i dati ridotti perché le impostazioni vengono inviate tramite Bluetooth durante la modifica e la larghezza di banda del Bluetooth è limitata.
Modifiche all'API
- Abbiamo aggiunto un parametro facoltativo
eglContextAttribList
aGlesRenderer
eGlesRenderer2
che consente di impostareEGL14.EGL_CONTEXT_CLIENT_VERSION
passato aEGL14.eglCreateContext
. (I2a83e) - Abbiamo eseguito la migrazione delle librerie dei quadranti a
androidx.core.util.Consumer
anziché ajava.util.function.Consumer
. (I273f5) - Altre eccezioni lanciate dagli accessori delle 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
deve essere un valoreIntDef
a tre stati. (Ief2f7) - Per Android T abbiamo introdotto
ComplicationRequest.isForSafeWatchFace
, destinato all'uso da parte degli OEM e che richiedecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. Per le origini dati nell'immagine di sistema, restituirà true se il quadrante che richiede è 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 perCustomValueUserStyleSetting
era 1 KB. (I0b100)
Versione 1.2.0-alpha06
25 gennaio 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha06
viene rilasciato. La versione 1.2.0-alpha06 contiene questi commit.
Nuove funzionalità
- Stiamo lavorando per aggiungere il supporto per le associazioni alla piattaforma delle complicazioni, che non è ancora pronta per l'uso, ma continua a seguirci.
- Abbiamo aggiunto il supporto XML
ComplicationSlot
per i nuovi tipi di complicazioni GOAL_PROGRESS e WEIGHTED_ELEMENTS.
Correzioni di bug
- È stato corretto un problema per cui l'editor dei quadranti non veniva rilasciato correttamente sui dispositivi Samsung. (3b5987)
- È stato risolto un bug per cui a volte le complicazioni non venivano visualizzate correttamente quando si passava da un quadrante con più preferiti all'altro. (b38ece)
- È stato corretto un bug di serializzazione con perOptionScreenReaderNames che causava arresti anomali del quadrante. (e9f466)
Versione 1.2.0-alpha05
7 dicembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha05
viene rilasciato. La versione 1.2.0-alpha05 contiene questi commit.
Nuove funzionalità
Qualche tempo fa abbiamo aggiunto il supporto per i
UserStyleSettings
gerarchici e, a partire da Android T, è ora possibile avere più di unComplicationSlotsUserStyleSetting
in una gerarchia. Sarà attivo un soloComplicationSlotsUserStyleSetting
, in base alle selezioni di stile dell'utente.Stiamo migliorando il supporto degli screen reader per
ListOption
eComplicationSlotsOption
aggiungendo un camposcreenReaderName
. Tieni presente che prima di Android T questo campo verrà ignorato dagli editor di app complementari.
Modifiche all'API
- Abbiamo aggiunto un nuovo campo facoltativo
screenReaderName
aListOption
eComplicationSlotsOption
per l'utilizzo da parte degli editor. Verrà ignorato dagli editor di app complementari sui dispositivi precedenti ad Android T. (I75326) - A partire da Android T, in una gerarchia di stili sono ora supportati più
ComplicationSlotsUserStyleSettings
, purché al massimo uno di questi possa essere attivo alla volta. Abbiamo aggiunto una funzione di utilitàfindComplicationSlotsOptionForUserStyle
aUserStyleSchema
per aiutarti a trovare l'eventualeComplicationSlotsOption
attivo. (Ic2b06) RangedValuesTypes
sono stati inseriti nell'oggetto associato diRangedValueComplicationData
e rinominati inTYPE_UNDEFINED
,TYPE_RATING
ed è stato aggiunto un nuovoTYPE_PERCENTAGE
. (I55d02)- Abbiamo rinominato
DynamicFloat
sperimentale inFloatExpression
e lo abbiamo contrassegnato come@hide
. (Idf4f1) - Aggiunta di un'annotazione
@JvmDefaultWithCompatibility
(I8f206)
Versione 1.2.0-alpha04
9 novembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha04
viene rilasciato. La versione 1.2.0-alpha04 contiene questi commit.
Nuove funzionalità
- Per Android T abbiamo aggiunto il supporto di due nuovi tipi di complicazioni,
GoalProgressComplicationData
eWeightedElementsComplicationData
. GoalProgressComplicationData
è simile aRangedValueComplicationData
, ma il suo valore può superare il target (perRangedValueComplicationData
il valore è limitato all'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
aRangedValueComplicationData
. - Per Android T, abbiamo aggiunto
ComplicationPersistencePolicy
esetCachePolicy
aComplicationData
, che attualmente consente a un fornitore di controllare se una complicazione è persistente o meno (ovvero se è memorizzata nella cache dopo il riavvio). Per la maggior parte delle complicazioni non sarà necessario impostare il controllo della cache, ma in questo modo è possibile correggere i casi limite con dati non aggiornati per alcune complicazioni che si aggiornano di frequente (ad es. le complicazioni relative ai dati sanitari). Abbiamo anche aggiuntoComplicationDisplayPolicy
, doveDO_NOT_SHOW_WHEN_DEVICE_LOCKED
indica a un quadrante compatibile di non mostrare la complicazione quando il dispositivo è bloccato. (Ic9574)
Modifiche all'API
GoalProgressComplicationData
,WeightedElementsComplicationData
eColorRamp
non sono più sperimentali. (Ica9e2)ComplicationPersistencePolicy
eComplicationDisplayPolicy
sono ora contrassegnati correttamente come API T. (I31d88)- Il costruttore
ComplicationSlotOverlay
deprecato ora haDeprecationLevel.WARNING
che consente di chiamarlo di nuovo da Java. (Ib308c) - Abbiamo risolto alcuni problemi di compatibilità con Java per
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
eInteractiveWatchFaceClient
annotandoli con@JvmDefaultWithCompatibility
(Id94fc) - Abbiamo rimosso
ProtoLayoutComplicationData
eListComplicationData
sperimentali. La storia dello sviluppatore per questi contenuti non è chiara, ma ci auguriamo di poterla rivedere in futuro. (I9df05) - Abbiamo aggiunto un
ValueType
aRangedValueComplicationData
.WeightedElementsComplicationData
ora supporta un colore di sfondo. Abbiamo rimossoDiscreteRangedValueComplicationData
perché la sua funzionalità è un sottoinsieme diWeightedElementsComplicationData
. (I6446c)
Correzioni di bug
- Includi
isForScreenShot
nel codice uguale e hash. Assicurati cheonRenderParametersChanged
riceva un valoreisForScreenshot
corretto (I04a41) - Sono stati corretti i problemi di perdita di
WatchFaceControlService
dai client headless. (e90e00)
Versione 1.2.0-alpha03
5 ottobre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha03
viene rilasciato. La versione 1.2.0-alpha03 contiene questi commit.
Nuove funzionalità
- Nessuna nuova funzionalità, ma abbiamo corretto un paio di bug dell'editor dei quadranti.
Modifiche all'API
UserStyleSchema.userStyleSettings
è deprecato perchérootUserStyleSettings
non è più sperimentale (Ie96e3)- Rimuovere
rootUserStyleSettings
dalla versione sperimentale (I8d6b3) - Abbiamo contrassegnato
WatchFaceColors
come sperimentale perché non è supportato da tutti i sistemi (I6d75d) - Esponi
DisconnectReasons
nell'API pubblica per farlo funzionare conIntDef
. (I791f8)
Correzioni di bug
- Se
SysUI
si spegne, chiudi tutti gli editor aperti sull'orologio. SeSysUI
si arresta in modo anomalo e l'editor del quadrante non si chiude, il quadrante potrebbe rimanere in uno stato incoerente perché il sistema si basa suSysUI
per mantenere le modifiche allo stile dell'utente.(ba762a - È stata corretta una perdita di memoria in
ComplicationDataSourceInfoRetriever
, in cui una continuazione della co-routine Kotlin fungeva da radice GC e conservava l'attività dell'editor.(33ee06)
Versione 1.2.0-alpha02
21 settembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha02
viene rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Nuove funzionalità
Alcuni quadranti hanno una configurazione esterna a
UserStyle
che influisce sulla visualizzazione (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 è necessaria un'aggiornamento del sistema corrispondente.Abbiamo anche aggiunto un'API per i quadranti per esporre i relativi colori al sistema, che potrebbe scegliere la propria tavolozza dei colori in base a questi. Tieni presente che questa funzionalità è stata resa sperimentale in una patch successiva.
Quasi tutti i tipi di
ComplicationData
ora supportanoSmallImages
.
Modifiche all'API
- A volte, il gestore dei wallpaper può scollegarsi da un motore e crearne un altro. Abbiamo aggiunto una definizione di
DisconnectReason
int e abbiamo estesoClientDisconnectListener
con un nuovo metodo che include unDisconnectReason
, consentendo all'ascoltatore di osservare i distacchi dell'engine. (I45cce) - Sono stati aggiunti due parametri facoltativi
nameResourceId
escreenReaderResourceId
al costruttoreComplicationSlotOverlay
(I157e8) - Abbiamo aggiunto un wrapper Guava per il nuovo sovraccarico di
getOrCreateInteractiveWatchFaceClient
con unPreviewImageUpdateRequestedListener
. (Ic31f0) - Abbiamo aggiunto
Renderer.sendPreviewImageNeedsUpdateRequest
, utile per i quadranti che hanno uno stato esterno aUserStyleSchema
che influisce sul loro aspetto (ad es. un quadrante con un'immagine di sfondo selezionabile). Lato client, abbiamo aggiuntoPreviewImageUpdateRequestedListener
come parametro facoltativo agetOrCreateInteractiveWatchFaceClient
per osservare queste richieste. (Iff44a) - Abbiamo semplificato l'API per l'esposizione di
WatchFaceColors
. Ora nel Renderer è presente una semplice proprietà chiamatawatchFaceColors
che può essere impostata dal quadrante. Questa proprietà deve essere aggiornata in base alle necessità in risposta a eventuali modifiche dello stile. Anziché utilizzareWallpaperManager
per osservare le variazioni di colore, abbiamo aggiuntoOnWatchFaceColorsListener
aInteractiveWatchFaceClient
. (I490bc) - Abbiamo aggiunto una classe
WatchFaceColors
che contiene i tre colori più importanti del quadrante e abbiamo aggiunto i metodi apertiwatchfaceColors
enotifyWatchFaceColorsChanged
al Renderer, che consentono al sistema di ottenere i colori del quadrante tramiteWallpaperManager.getWallpaperColors
. (I3d611) ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(eDiscreteRangedValueComplicationData
,GoalProgressComplicationData
eWeightedElementsComplicationData
sperimentali) ora supportano tuttiSmallImages
. Se un quadrante sceglie di visualizzare una complicazione con più colori, ora ha la possibilità di utilizzare un'immagineSmallImage
multicolore, mentre in precedenza doveva utilizzare un'immagine monocromatica. (I257df)- Esegui il refactoring di
PreviewImageUpdateRequestedListener
in modo che sia unConsumer<>
(Ia875d) - Sostituire il tipo di metodo astratto singolo (SAM) personalizzato
OnWatchfaceColorsListener
con il tipo SAM Java generico (Consumer) (I0c489) - Abbiamo ritirato i vecchi metodi
getOrCreateInteractiveWatchFaceClient
elistenableGetOrCreateInteractiveWatchFaceClient
che 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
viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
- Abbiamo aggiunto il supporto sperimentale per vari nuovi formati di complicazioni. Si tratta di un'area in fase di sviluppo attivo; questi nuovi formati sono soggetti a modifiche senza preavviso e al momento non sono supportati dal renderer di
CanvasComplicationDrawable
. - Abbiamo anche aggiunto margini facoltativi agli spazi delle complicazioni, che rendono più facile toccare le complicazioni di piccole dimensioni.
Modifiche all'API
- La classe sperimentale
BoundingArc
è ora immutabile. (If624a) - Le complicazioni piccole possono essere difficili da toccare. Per contribuire ad attenuare questo problema, abbiamo introdotto il supporto per i margini che aumentano l'area tocabile senza influire sul rendering. Se non specificato (in codice o tramite XML),
ComplciationSlots
ha margini di dimensioni zero. (I14089) - È stata modificata la firma di
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
in modo da restituire un'istanza di fabbrica non null. In precedenza era un errore restituire null, quindi questo rende solo più chiaro il contratto dell'API. (I0fcc0) - Abbiamo aggiunto l'argomento
currentUserStyleRepository
al metodoWatchFaceService.getComplicationSlotInflationFactory
per garantire la coerenza concreateComplicationSlotsManager
. (I2ddd2) UserStyleFlavors
sono diventate funzionalità non sperimentali. (I69cdc)- Abbiamo rimosso il parametro sperimentale
ValueType
daRangedValueComplicationData
e abbiamo introdotto il parametro sperimentaleDiscreteRangedValueComplicationData
, che è simile aRangedValueComplicationData
, tranne per l'intervallo e il valore interi. Abbiamo anche introdotto il parametro sperimentaleGoalProgressComplicationData
, simile aRangedValueComplicationData
, tranne per il fatto che si riferisce all'avanzamento verso un obiettivo in cui il valore minimo è zero per impostazione predefinita e il valore può essere maggiore ditargetValue
. Nota: per tutte le variantiRangedValue
, è necessario specificare almeno uno tra monochromeImage, text o title. (I9590c) - Abbiamo rimosso
boundsWithMargins
daComplicationSlotState
perché il software di sistema non ha un caso d'uso per questo. (I42e26) - Abbiamo aggiunto il supporto sperimentale per
WeightedElementsComplicationData
, che consiste in un array di elementi (coppie di spessore e colore) insieme a testo/titolo/immagine facoltativi. Questi dati potrebbero essere visualizzati come un grafico a torta in cui i colori devono avere un significato in base al contesto, poiché in genere in una complicazione non c'è spazio per visualizzare le etichette. (I87eea) - Il parametro sperimentale
ColorRamps
, facoltativo, utilizzato daRangedValueComplicationData
eGoalProgressComplicationData
ora consente di specificare una sequenza di massimo sette colori e un flag che indica se i colori devono essere sottoposti a tweening graduale o se devono essere visualizzati passaggi di colore solidi di dimensioni uguali. (I9f5bf) RangedValueComplicationData.drawSegmented
è stato modificato invalueType
, che è un int con unValueType IntDef
corrispondente che fornisce un significato semantico al valore compreso nell'intervallo e può essere utilizzato dal visualizzatore della complicazione per influenzare lo stile. (I0616b)- Abbiamo aggiunto il supporto sperimentale per gli indicatori facoltativi
ColorRanges
eRangedValueComplicationData
. In genere, le complicazioni vengono visualizzate nei colori scelti dal quadrante, ma a volteComplicationDataSource
è la risorsa più adatta per 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
drawSegmented
sperimentale aRangedValueComplicationData
. Questo indica ai visualizzatori 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
in base 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
viene rilasciato. La versione 1.1.1 contiene questi commit.
- Si tratta di una release di correzione di bug e gli utenti della versione 1.1.0 sono vivamente invitati a 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. PurtroppopendingInitialComplications
è stato applicato troppo presto, il che significa che durante l'inizializzazione del quadrante le complicazioni venivano comunque inserite inpendingInitialComplications
e ignorate. Il problema è stato risolto. Inoltre, questa patch corregge un bug per cuiComplicationRenderer
tentava erroneamente di caricare i segnaposto in modo asincrono, il che non andava a buon fine e causava l'aggiornamento costante del grafico di compilazione. Infine, questa patch corregge un bug, speriamo teorico, in cui è necessario unire piùpendingInitialComplications
. (0d03ba3)Risolvere un potenziale deadlock in
InteractiveInstanceManager
in cuigetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
teneva bloccata la serratura più a lungo del necessario. Di solito ci aspettiamo cheengine.setUserStyle
sia veloce, ma se per qualche motivo non lo è, potremmo finire con un deadlock/ANR. Questa patch rimuove il lavoro non necessario dalla serratura, eliminando la possibilità di un deadlock.(5a2adca)Sono stati corretti diversi problemi che hanno mantenuto
WatchFaceService
. A volte WakeLock può conservareWatchFaceService
. Aggiungendo una chiamatarelease()
, il problema viene risolto. Inoltre,StateFlows
può conservareWatchFaceService
, annullando le correzioni diCoroutineScopes
sottostanti.(fd48138)Aggiungi i timeout a
awaitDeferredWatchFace
* e correggiwatchfaceOverlayStyle
NullPointerException
. In circostanze normali, questo non dovrebbe scadere, anche dopo una nuova installazione e in scenariDirectBoot
in cui il carico della CPU è elevato. Abbiamo anche corretto un errore NPE segetWatchfaceOverlayStyle
viene chiamato dopoclose()
.(a4c3a5a)
Versione 1.1.0
15 giugno 2022
androidx.wear.watchface:watchface-*:1.1.0
viene rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
Modifiche migliorate:
- Abbiamo aggiunto il supporto per gli schemi gerarchici, che consente di descrivere una gerarchia di stili dalle UI degli editor. Ora puoi specificare icone separate da utilizzare negli editor di quadranti e companion.
- È disponibile il supporto per l'attivazione di più istanze di un quadrante, ciascuna con un ID univoco disponibile su tutte le piattaforme API.
- Ora puoi specificare nomi leggibili per
ComplicationSlots
da utilizzare negli editor. - Supporto sperimentale per i "flavor" di stile, una selezione selezionata di stili che sarà visibile dall'editor complementare.
- Quando vengono caricate due istanze del quadrante, ora è possibile che le istanze condividano le risorse, risparmiando memoria
- Quando scegli una complicazione nell'editor del quadrante, il fornitore corrente è ora preselezionato.
Complicazioni migliorate:
- Ora puoi specificare
ComplicationType
per le origini dati principali e secondarie, offrendo agli sviluppatori una maggiore flessibilità per l'esperienza out-of-the-box. - Abbiamo aggiunto
ComplicationDataTimeline
che fornisce una sequenza di dati con limiti di tempo da inviare al quadrante, che possono essere memorizzati nella cache e aggiornati automaticamente. Ad esempio, le previsioni meteo di oggi a vari orari o più eventi imminenti nel calendario. - Il
ComponentName
del fornitore della complicazione fa parte delComplicationData
. - Le complicazioni vengono ora memorizzate nella cache, il che offre un'esperienza migliore quando si passa da un quadrante all'altro.
Altre modifiche:
- Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. In questo modo, la creazione del quadrante viene semplificata e le query sui metadati dal sistema vengono eseguite più rapidamente. - Ora i quadranti possono influenzare i colori utilizzati per il rendering dell'overlay di sistema.
Versione 1.1.0-rc01
18 maggio 2022
androidx.wear.watchface:watchface-*:1.1.0-rc01
viene rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Nuove funzionalità
- Abbiamo apportato alcune modifiche all'usabilità del supporto XML dei quadranti, semplificando la specifica di
ComplicationSlotBounds
e dei riferimenti di supporto. L'esperimento con la complicazione lateraleBoundingArc
continua, passando adrawHighlight
, anche se non è consigliato per l'uso in quel momento.
Modifiche all'API
- Abbiamo aggiunto un sovraccarico sperimentale di
drawHighlight
che accetta un parametroBoundingArc
. (I705f8) - Il file XML del quadrante ora supporta i riferimenti alle risorse. Ti consente di utilizzare le stesse costanti sia nel codice XML che nel codice. (I3ef61)
- Abbiamo aggiunto la possibilità di definire
ComplicationSlotBounds
nei formaticenter_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
- Correggi
runBlockingWithTracing
che eseguiva attività nel contesto sbagliato.(4f595fe) - Rendi
BaseEditorSession.close
sincrono. Il problema con l'asynchronicità diBaseEditorSession.close
è che viene rilasciato troppo tardi, causando spam di avvisi in logcat.ComplicationDataSourceInfoRetriever
Probabilmente era innocuo, ma lo spam di logcat distrae e deve essere evitato.(35a5308)
Versione 1.1.0-beta02
11 maggio 2022
androidx.wear.watchface:watchface-*:1.1.0-beta02
viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Nuove funzionalità
- Abbiamo aggiunto il supporto sperimentale per i nuovi tipi di
ComplicationData
, che non sono ancora pronti per l'utilizzo, ma continua a seguirci.
Modifiche all'API
- Abbiamo aggiunto
BoundingArc
, una classe sperimentale che descrive la geometria di uno spazio per complicazioni laterali. Questo è stato aggiunto aComplicationSlot
e collegato aComplicationSlotState
eWatchFaceMetadataClient
. (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
eProtoLayoutComplicationData
. Al momento non è supportato il rendering per nessuno di questi tipi e WearOS non li riconosce se aggiunti a un manifestComplicationDataSource's
. (I1811c)
Correzioni di bug
- Correggi la serializzazione del tipo
TimeLineEntry
. Non stavamo serializzando il tipoTimeLineEntry
, il che significa cheTimeLineEntries
memorizzato nella cache di tipo NoData veniva interpretato erroneamente come avente il tipo della complicazione principale, causando errori NPE quando si accedeva a campi obbligatori inesistenti. (55ffdf5) - È stato corretto un bug per cui
setComplicationData
ha eliminato i campi della sequenza temporale(fb392f5) - È stato corretto un bug per cui, molto raramente,
runBlockingWithTracing
causava un NPE(12ca62e) - È stato corretto un bug per cui a volte viene visualizzato
ClassNotFoundException: android.support.wearable.complications.ComplicationText
quando si riceve una complicazione.(217942d9) - È stato corretto un bug in
GlesRenderer.backgroundThreadInitInternal
per cui veniva chiamatoonBackgroundThreadGlContextCreated
solo se veniva chiamatoEGL14.eglCreateContext
. È stato corretto un altro bug relativo a un problema visivo nello screenshot causato daverticalFlip
.(c674ad2) - Correggi il controllo della versione XML di
WatchFaceService
, che veniva caricato dal pacchetto sbagliato.(dfa06f3) - Il formato del cavo segnaposto ora utilizza un bundle interno. Non vogliamo che i segnaposto danneggino i quadranti esistenti che potrebbero utilizzare a.s.w.c.ComplicationData interno nascosto. In precedenza, il formato di trasmissione dei dati
NoDataComplication
memorizzava il segnaposto nei campi usuali (problematico perché i vecchi quadranti visualizzavano la stringa segnaposto non prevista), ora utilizziamo 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
viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.
Modifiche all'API
- Ora i metodi
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) eHeadlessWatchFaceClient.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 avrà più arresti anomali quando viene inviatoComplicationSlotBounds
parziale.(Iaafd)
Versione 1.1.0-alpha05
6 aprile 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha05
viene rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora puoi capire quale origine dati ha inviato un
ComplicationData
esaminandoComplicationData.dataSource
. Alcuni quadranti potrebbero utilizzarlo per personalizzare la visualizzazione delle complicazioni. (I44a73)
Modifiche all'API
Renderer.CanvasRenderer
eRenderer.GlesRenderer
sono stati ritirati a favore diRenderer.CanvasRenderer2
eRenderer.GlesRenderer2
che supportanoSharedAssets
e vengono passati ai metodi di rendering. Per l'interoperabilità Java abbiamo introdottoListenableCanvasRenderer2
eListenableGlesRenderer2
. (I31ffa)- È stata aggiunta la possibilità per
@WatchFaceFlavorsExperimental
di definire i gusti, ovvero un elenco preconfigurato di quadranti stilizzati (I04dd0) Renderer.sharedAssets
ora è un StateFlow e abbiamo rimossoRenderer.SharedAssetsFactory
inutilizzato (I12ac5)UserStyleSchema.userStyleSettings
non è più deprecato (Iba7e3)- Abbiamo aggiunto
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
che consente aHeadlessWatchFaceClient
di evitare il sovraccarico relativamente ridotto del passaggio dello schema tramite AIDL prima di calcolare l'hash del digest. (I33597) - Abbiamo aggiunto
isUserStyleSchemaStatic
aWatchFaceMetadataClient
, che è vero se e solo se si può fare affidamento sul fatto cheUserStyleSchema
non cambierà a meno che l'APK del quadrante non venga aggiornato. (I45a3f) - Abbiamo aggiunto
getDigestHash
aUserStyleSchema
, che calcola un hash digest dello schema. Questo può essere utilizzato per determinare in modo efficiente seUserStyleSchema
è cambiato. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
rinominato inMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
(I9ba5d)UserStyleSetting.OnWatchEditorData
è stato rinominato inUserStyleSetting.WatchFaceEditorData
e contiene dati utilizzati esclusivamente dall'editor del quadrante. (If3afb)
Versione 1.1.0-alpha04
9 marzo 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha04
viene rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche all'API
- I dati
ComplicationData
aggiornati potrebbero non essere sempre disponibili (ad es. dati ComplicationData memorizzati nella cache scaduti), pertanto abbiamo estesoNoDataComplication
con un segnaposto facoltativo ComplicationData e aggiuntoComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
che possono essere utilizzati solo nel contesto di un segnapostoNoDataComplicationData
. Se selezionati, è consigliabile eseguire il rendering di questi segnaposto con caselle/archi grigi. (I6285d) - Abbiamo aggiunto
ComplicationData.getNextChangeInstant
, che indica l'istante successivo a quello di riferimento in cui qualsiasi campo della complicazione può cambiare. 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 ne comporterà l'aggiornamento una volta al secondo. (I7ceb2) EditorSession.watchFaceId
ora può essere utilizzato su tutti i livelli dell'API. Inoltre, il suo valore ora sarà sempre coerente conWatchState.watchFaceInstanceId
. (I323b9)- L'API
getPendingIntentForTouchEvent
non è più necessaria poiché il problema di fondo è stato risolto nel framework, pertanto 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. Alcuni quadranti con animazioni devono conoscere questo dato per apportare le modifiche necessarie e garantire i risultati migliori. (I96d99) - Abbiamo aggiunto
WatchFaceExceptionReason
aWatchFaceException
per fornire un contesto su cosa non è andato a buon fine. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
è stato rimosso, ma è stato aggiuntoComplicationRequest.immediateResponseRequired
per 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)- La nullabilità in core e appcompat è stata aggiornata in modo da corrispondere a Tiramisu DP2 (I0cbb7)
Correzioni di bug
- Ora l'app del quadrante si arresta in modo anomalo con un'eccezione se la convalida dello schema non va a buon fine (Ia400f)
Versione 1.1.0-alpha03
9 febbraio 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha03
viene rilasciato. La versione 1.1.0-alpha03 contiene questi commit.
Modifiche all'API
- Abbiamo aggiunto il supporto sperimentale per gli schemi di stili gerarchici. Abbiamo aggiunto una nuova proprietà a
androidx.wear.watchface.style.UserStyleSetting.Option
, childSettings, che inizialmente viene utilizzata solo daListOption
. In questo modo è possibile descrivere una gerarchia di stili da utilizzare nelle UI di Editor. Lo stile utente sottostante rimane invariato ed è ancora unMap<String, ByteArray>
. (Iaf6f4) - Abbiamo aggiunto
WatchFace.OverlayStyle
che consente al quadrante di configurare il rendering dell'overlay dello stato del sistema. (I8520d) - Abbiamo introdotto
clearWithBackgroundTintBeforeRenderingHighlightLayer
, un nuovo parametro facoltativo del costruttore perCanvasRenderer
(il valore predefinito è false). Se impostato su true, la tela viene cancellata con il colore di tinta di sfondo. (Ie01e5) - È stata aggiunta la 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 modifichi un quadrante, è normale che esistano sia un'istanza interattiva che una headless. Per contribuire a 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
eGlesRenderer.setEglDisplay
sono deprecati, non è mai stato previsto che potessero essere impostati e ciò avrebbe comportato un comportamento non definito. (I0d9e7) - Abbiamo aggiunto
setNameResourceId
esetScreenReaderNameResourceId
(che fanno riferimento alle risorse stringa) aComplicationSlot.Builder
e ai getter corrispondenti inandroidx.wear.watchface.client.ComplicationSlotState
. In questo modo, il sistema può recuperare i nomi di ComplicationSlots per utilizzarli in editor e screen reader. (If6c6a) WatchfaceMetadataClient.getUserStyleSchema
egetComplicationSlotMetadataMap
ora generanoWatchFaceException
anzichéRemoteException
. (I86f11)onSynchronousComplicationRequest
e le funzioni correlate inComplicationDataSourceService
sono state rinominate inonImmediateComplicationRequest
e così via. (I87ba0)- Gli editor dei quadranti hanno molto meno spazio sullo schermo rispetto agli editor companion, quindi ha senso supportare icone diverse per gli editor dei quadranti. Questa patch aggiunge
OnWatchEditorData
(che al momento contiene solo un'icona) a tutti gli UserStyleSettings e, se opportuno, alle relative classi Option. (If1886) - Abbiamo aggiunto
@JvmOverloads
al costruttore di ListenableGlesRenderer per una migliore interoperabilità con 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) - Corregge il bug relativo al fatto che
PhotoImageComplicationData
tapAction non viene gestito correttamente (I1cc30)
Versione 1.1.0-alpha02
12 gennaio 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha02
viene rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Nuove funzionalità
- Per facilitare il debug e i test,
ComplicationData
e le sottoclassi correlate ora hanno sostituito i metodi hashcode, equals e toString, rendendo più facile il loro utilizzo.
Modifiche all'API
- I metodi
WatchfaceMetadataClient
generano di nuovoRemoteExceptions
, se opportuno, consentendo al codice client di rilevare più facilmente gli errori del quadrante. (I78785) ComplicationData
e le classi secondarie ora hanno hashcode, equals e toString. (I24bc6)
Versione 1.1.0-alpha01
15 dicembre 2021
androidx.wear.watchface:watchface-*:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. In questo modo, la creazione del quadrante è più semplice. Inoltre, le queryWatchFaceMetadataClient
sono più veloci perché non devono eseguire il binding al servizio per recuperare i metadati.WatchFaceMetadataClient
eListenableWatchFaceMetadataClient
non sono più sperimentali e faranno parte dell'API stabile. Il sistema potrà eventualmente supportare più istanze di un quadrante, ciascuna con opzioni di stile distinte definite dall'utente. Questi dati saranno visibili nel selettore dei quadranti. Per attivare questa funzionalità, un quadrante deve includere il seguente tag dei metadati nel file 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 stato e più istanze, l'ID istanza del quadrante è ora disponibile tramiteWatchState.watchFaceInstanceId
.ComplicationData
viene ora memorizzato nella cache per consentire la visualizzazione delle complicazioni immediatamente al caricamento. A volteComplicationData
viene memorizzato nella cache in memoria dal sistema e a volte viene serializzato dalle librerie dei quadranti. Quando viene serializzata, qualsiasi tapAction associato andrà perso.In questo caso,ComplicationData.tapActionLostDueToSerialization
restituiràtrue
e il quadrante dovrebbe visualizzare la complicazione in modo diverso (ad es. disattivata o semitrasparente) per indicare che non può essere toccata. Il sistema invieràComplicationData
aggiornato con untapAction
il prima possibile.Alcuni
ComplicationData
non devono essere memorizzati nella cache per molto tempo. Per supportare questa esigenza, abbiamo aggiunto una funzionalità più generaleComplicationDataTimeline
. Questo può essere utilizzato per fornire una sequenza diComplicationData
con limitazioni di tempo da inviare al quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi a vari orari o più eventi imminenti nel calendario.ComplicationRequestListener
è stato esteso con un nuovo metodoonComplicationDataTimeline
che puoi utilizzare per restituire questi dati.DefaultComplicationDataSourcePolicy
è stato esteso in modo da poter specificareComplicationType
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: l'utilizzo dei fornitori di complicazioni sincrone potrebbe essere limitato a causa di problemi di utilizzo della memoria.
È probabile che le modifiche
PendingIntentTapListener
vengano annullate perché abbiamo risolto il problema di fondo (non è possibile che il quadrante avvii attività per 5 secondi dopo aver premuto il tasto Home) nel framework.
Modifiche all'API
ComplicationData.isCached
è stato modificato intapActionLostDueToSerialization
, che è più utile per determinare se lo spazio delle complicazioni deve essere visualizzato in modo diverso per indicare che non può essere toccato. (I6de2f)ComplicationDataTimeline
aggiunto awear-complication-data-source
. Questo può essere utilizzato per fornire una sequenza diComplicationData
con limiti di tempo da inviare al quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi a vari orari o più eventi imminenti nel calendario.ComplicationRequestListener
è stato esteso con un nuovo metodoonComplicationDataTimeline
che puoi utilizzare per restituire questi dati. È disponibile un nuovo wrapperSuspendingTimelineComplicationDataSourceService
Kotlin per la sospensione dei servizi delle origini dati. (Idecdc)PendingIntentTapListener
eWatchFaceControlClient.getPendingIntentForTouchEvent
aggiunti. 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 tasto Home. (I98074)- È stata introdotta una cache
ComplicationData
per quadrante. Lo scopo è consentire al quadrante di visualizzare i valori dei dati delle complicazioni noti per ultimi al caricamento finché il sistema non ha avuto la possibilità di aggiornarli. Esiste un nuovo metodo APIWatchFaceControlClient.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à utilizzarla, ma se esiste uno stato per quadrante non memorizzato nello schema, questa è la chiave da utilizzare per identificare l'istanza del quadrante. Per supportare questa operazione, ora puoi fornire un ID quando chiamiWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) DefaultComplicationDataSourcePolicy
esteso con la possibilità di impostare ilComplicationTypes
predefinito per il fornitore principale, secondario e per il fornitore di sistema di riserva.ComplicationSlot.defaultDataSourceType
è stato deprecato. (If0ce3)ComplicationSlot.configExtras
ora è mutabile e può essere aggiornato prima di chiamareEditorSession.openComplicationDataSourceChooser()
. (I6f852)WatchFace.setComplicationDeniedDialogIntent
esetComplicationRationaleDialogIntent
aggiunti. Questi intent vengono avviati per mostrare una finestra di dialogo con una motivazione prima di richiedere le autorizzazioni per le complicazioni e un'altra finestra di dialogo che spiega che l'autorizzazione per le complicazioni è necessaria quando si tenta di modificare una complicazione quando le autorizzazioni sono state negate (il selettore del fornitore non si aprirà, quindi è necessaria la finestra di dialogo). (I3a29c)- Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. In questo modo, la creazione del quadrante è semplificata e le queryWatchFaceMetadataClient
sono più veloci perché non devono essere associate al servizio per recuperare i metadati. (I85bfa) - È stato aggiunto
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
in modo che un client possa determinare se un quadrante supportagetPendingIntentForTouchEvent
. (I0b917) WatchFaceMetadataClient
eListenableWatchFaceMetadataClient
non sono più sperimentali. Possono essere utilizzati per ottenere in modo efficiente i metadati del quadrante, se possibile senza aprire un rilegatore 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 utilizzarlo, il provider deve includere un nuovo tag metadati
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
nel file manifest e sostituireonSynchronousComplicationRequest
. A seconda della natura dell'origine dati, potrebbe anche essere necessario sostituireonStartSynchronousComplicationRequests
eonStopInteractiveComplicationRequests
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
viene rilasciato. La versione 1.0.1 contiene questi commit.
Correzioni di bug
- Corregge il bug relativo al fatto che
PhotoImageComplicationData
tapAction non viene gestito correttamente (I1cc30)
Versione 1.0.0
1° dicembre 2021
androidx.wear.watchface:watchface-*:1.0.0
viene 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 WearOS. Offre una serie di nuove funzionalità rispetto alla precedente raccolta di supporto per i dispositivi indossabili.
- Lo stile dell'utente (ad es. per cambiare la tavolozza dei colori, lo stile delle lancette, l'aspetto degli indici delle ore e così via) è supportato direttamente dalla libreria (vedi
androidx.wear.watchface.style
). Ora è molto più facile sviluppare un editor di quadranti utilizzando androidx.wear.watchface.editor e il quadrante può essere modificato dall'app complementare di sistema senza dover scrivere codice aggiuntivo. - Best practice integrate. La libreria genera automaticamente etichette dei contenuti dello screen reader per le complicazioni (puoi anche aggiungerne di tue) e la frequenza dei fotogrammi diminuisce automaticamente quando la batteria è in esaurimento e non è in carica per prolungarne la durata.
- È necessario meno codice per sviluppare un quadrante, in particolare per le complicazioni, in cui gran parte del codice boilerplate è stato spostato nella libreria.
Correzioni di bug
- Correzione
EditorSession.userStyle.compareAndSet
(I6f676) - Correggere i ritardi molto brevi dei quadranti (Iffb97)
- Invio di
InteractiveWatchFaceImpl.onDestroy
nel thread dell'interfaccia utente (I83340) - Risolvere diversi problemi relativi ai broadcast receiver (I7d25f)
Versione 1.0.0-rc01
3 novembre 2021
androidx.wear.watchface:watchface-*:1.0.0-rc01
viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Correzioni di bug
Correggere dump() (chiamato da adb shell dumpsys) che è stato danneggiato dalle migrazioni dei flussi. (087cf9e)
Assicurati l'ordinamento corretto di writeDirectBootPrefs. Vogliamo che writeDirectBootPrefs venga eseguito sempre dopo initStyleAndComplications, altrimenti rischiamo di ritardare l'inizializzazione del thread dell'interfaccia utente.(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, dobbiamo chiamare Renderer.onDestroy. (f9952dc)
Ottimizzazione/correzione di isBatteryLowAndNotCharging. Questa patch sposta la configurazione iniziale di isBatteryLowAndNotCharging in un momento precedente, il che significa che può essere eseguita in parallelo con createWatchFace. Inoltre, ora ascoltiamo ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive deve essere falso dopo la chiusura (ab9774e)
Versione 1.0.0-beta01
27 ottobre 2021
androidx.wear.watchface:watchface-*:1.0.0-beta01
viene 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
viene rilasciato. La versione 1.0.0-alpha24 contiene questi commit.
Modifiche all'API
- Le classi del pacchetto
androidx.wear.watchface.complications
sono state spostate in un nuovo progettowear:watchface:watchface-complications
. Tieni presente che ciò significa che non puoi includere questa libreria né qualsiasi versione alpha precedente diwear: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 inaddOnWatchFaceReadyListener
eremoveWatchFaceReadyListener
inremoveOnWatchFaceReadyListener
. (I48fea)- EditorSession
getComplicationsPreviewData
egetComplicationsDataSourceInfo
non sono più funzioni di sospensione, ma proprietàStateFlow<>
il cui valore è inizialmente nullo. In ListenableEditorSession,getListenableComplicationPreviewData
egetListenableComplicationsProviderInfo
sono stati rimossi a favore dei nuovi oggettiStateFlow<>
della classe di base. Se devi ascoltare le modifiche nel codice Java, ti consigliamo di utilizzareandroidx.lifecycle.FlowLiveDataConversions.asLiveData
per convertire inLiveData<>
. (Ic5483)
Versione 1.0.0-alpha23
29 settembre 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha23
viene rilasciato. La versione 1.0.0-alpha23 contiene questi commit.
Nuove funzionalità
La libreria del quadrante ora è un singolo gruppo di librerie, pertanto le librerie sono state spostate e dovrai aggiornare le importazioni di Gradle come segue:
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 all'API
- Esegui la migrazione delle librerie di quadranti e complicazioni
androidx.wear
separate nel gruppo di librerieandroidx.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 ci saranno alcuni falsi negativi perché il supporto è stato aggiunto in asop/1756809, ma restituirà il valore corretto per tutti i quadranti futuri. (ca55590)
- Il Renderer ora dispone di un metodo dump() che può essere sostituito per aggiungere dati personalizzati alle informazioni generate dal servizio di attività WatchFaceService di ABD shell dumpsys. (95235f9)
- InteractiveWatchFaceClient.addWatchFaceReadyListener ora specifica prima l'esecutore. (563ac2f)
- StateFlowCompatHelper è stato rimosso. Utilizza invece asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
- CurrentUserStyleRepository.userStyle non è più mutabile. (I44889)
- WatchFaceReadyListener è stato rinominato in OnWatchFaceReadyListener. (Ic12a9)
Correzioni di bug
- InteractiveInstanceManager.deleteInstance per chiamare onDestroy. Questo è necessario per garantire che InteractiveWatchFaceImpl venga sottoposto al garbage collection.(fce4af8, b/199485839)