Come indossare il quadrante
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
17 aprile 2024 | 1.2.1 | - | - | 1.3.0-alpha03 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza su 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 artefatti necessari nel file build.gradle
per
l'app o il modulo:
Trendy
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, vedi Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.3
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 alle API
- Abbiamo aggiunto
EditorSession#setOverrideComplications
, che imposta temporaneamente il valoreComplicationData
dell'istanza del quadrante sottostante durante la modifica. Se le complicazioni cambiano raramente, questo metodo è più efficiente rispetto al passaggio degli override tramiteEditorSession#renderWatchFaceToBitmap
. (I19384)
Correzioni di bug
- In precedenza
selectComplicationDataForInstant
chiamavatoApiComplicationData
per qualsiasi sequenza temporale, il che significa che il successivo test di uguaglianza di riferimento === non andrebbe mai a buon fine. Ciò significava che le complicazioni venivano ricaricate a ogni fotogramma, con il 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 rendimento migliore e
selectedData
perché l'operatore uguale a è costoso. (446b00)
Modifiche alle API
- Abbiamo aggiunto un'API dinamica senza riserva 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
possono essere inizializzati contemporaneamente e, di conseguenza, devono essere stateless. A supporto di ciò, abbiamo aggiuntoStatefulWatchFaceService
in cui un extra definito dall'utente creato dacreateExtra()
viene passato a tutti gli override chiamati durante l'inizializzazione.GlesRenderer2
ora presenta un sovraccarico del costruttore che consente di specificare un elenco di attributi da provare a turno coneglChooseConfig
.
Modifiche alle API
StatefulWatchFaceService
ora supporta un override digetComplicationSlotInflationFactory
in cui viene passato l'elemento aggiuntivo 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, gli sviluppatori in genere rendevano il loroWatchFaceServices
stateful. Questo è pericoloso perché possono essere create più istanze contemporaneamente, il che può causare bug. Per risolvere il problema, abbiamo introdotto i criteriStatefulWatchFaceService
eStatefulWatchFaceRuntimeService
, in cui un tipo definito dall'utente viene creato dacreateExtra()
e viene trasmesso ai vari metodi di creazione come parametro. (If8a99) - Abbiamo aggiunto
getUserStyleFlavors
aInteractiveWatchFaceClient
, che interessa principalmente gli OEM. (I0f5d8). GlesRenderer2
ora presenta un sovraccarico del costruttore che consente di specificare un elenco di attributi da provare a turno coneglChooseConfig
. Questo, ad esempio, ti consente di provare prima una configurazione con anti-aliasing e di passare a una configurazione senza, se necessario. (I1ba74)- Da Android U, verrà aggiunto il supporto di
SystemDataSources.DATA_SOURCE_HEART_RATE
a WearOS. Per questa complicazione è garantito che supportino solo le complicazioniSHORT_TEXT
, ma è consigliabile cheComplicationSlot
accetti ancheSMALL_IMAGE
perché gli OEM potrebbero scegliere di pubblicare una scorciatoia per l'app di integrità anziché il valore attivo. (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 delle complicazioni supporti il backup dei dati di configurazione. In caso contrario, può aggiungere l'impostazione dei metadatiMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
su false, per contrassegnare lo slot 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
- Risolto il problema di 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 sono disponibili per l'utilizzo da Android T:
GoalProgressComplicationData
, che è simile aRangedValueComplicationData
, tranne per il progresso verso un obiettivo in cui il valore minimo è implicitamente pari a zero e il valore può essere superiore atargetValue
.WeightedElementsComplicationData
, che è costituito da un array di elementi (coppie di peso e colore) insieme a testo/titolo/immagine facoltativi. Questi possono essere visualizzati in un grafico a torta in cui i colori devono essere significativi per via del contesto, dato che in genere una complicazione non c'è spazio per visualizzare le etichette.
- Abbiamo aggiunto il supporto della funzionalità
ColorRanges
facoltativa aRangedValueComplicationData
. Normalmente le complicazioni vengono visualizzate con colori scelti dal quadrante, ma a volteComplicationDataSource
è la posizione migliore per impostare i colori, ad esempio quando hanno un particolare significato semantico. Ad esempio, da rosso a 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 visualizzare la complicazione quando il dispositivo è bloccato. - A partire da Android T, gli OEM saranno in grado di determinare se una richiesta di complicazione proviene da un quadrante nell'elenco definito dai metadati
android.support.wearable.complications.SAFE_WATCH_FACES
nel file manifest del loro fornitore daComplicationRequest#isForSafeWatchFace
. Il fornitore avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
per ricevere informazioni diverse 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 per una complicazione meteo predefinita di sistema è stato rimosso.
Modifiche alle API
- Ripristina l'opzione "Esponi una nuova origine dati per 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à ora una complicazione del sistema meteorologico predefinito.
Modifiche alle API
- Aggiungi il riserva di sistema predefinito per le condizioni meteorologiche per eventuali complicazioni. (Ia0994)
- Questa patch aggiunge
WatchFaceRuntimeService
eWatchFaceControlClient.createWatchFaceRuntimeControlClient
insieme ai wrapper guava. Queste aggiungono il supporto per i tempi di esecuzione dei quadranti, un tipo speciale di quadrante che carica la definizione da un altro pacchetto. Attualmente WearOS supporta solo il runtime per Android Watch Face Format. (I2799f) - Questa patch è un follow-up di aosp/2636578 in cui rinominiamo le def int in modo che non sia necessario modificare qualsiasi codice che dipende da
WatchFaceType
,CanvasType
,TapType
oComplicationsSlotBoundsType
. (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). - L'utilizzo di
WatchFace.OverlayStyle
è molto basso e non è ben supportato dagli OEM, quindi lo rimuoveremo in un secondo momento con l'intenzione di rimuoverlo. (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 una nuovaDynamicComplicationText
è disponibile come sottoclasseComplicationText
, entrambe possono utilizzare espressioni dinamiche e associazioni di piattaforme che vengono aggiornate a 1 Hz sui dispositivi Wear 4 supportati.
Modifiche alle API
- Sono stati aggiunti tipi dinamici per distanza giornaliera, calorie bruciate giornaliere e piani giornalieri. Le chiavi per le fonti sanitarie della piattaforma sono ora sotto
PlatformHealthSources.Keys
(Ib7637) - Implementa
PlatformDataProvider
per fornire rilevazione del battito cardiaco e passi giornalieri. L'interfacciaSensorGateway
è stata rimossa dall'API pubblica. (I55b84) - Rinomina
StateEntryValue
inDynamicDataValue
e aggiorna le API di stato in modo da utilizzareDynamicDataKey
. (If1c01) - Aggiungi
AppDataKey
per accedere allo stato di push dell'app; aggiungiPlatformDataKey
per accedere ai dati della piattaforma; Aggiungi il supporto dello spazio dei nomi inStateStore
. (I7985e). enable
metodo sudisablePlatformSource
è stato rimosso daDynamicTypeEvaluator
. Il chiamante deve essere responsabile degli aggiornamenti. (I78c6d)- Consenti la limitazione delle dimensioni dei tipi di dati associati. (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 l'autorizzazione
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
con privilegi 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 potrebbe scegliere di gestire tipi diversi di 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 dicreateRemoteWatchFaceView
, che si basa su SurfaceControlViewHost e consente al chiamante di incorporare una vista dal quadrante, che viene visualizzata quando il client chiamaRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Abbiamo aggiunto
renderWatchFaceToSurface
aInteractiveWatchFaceClient
,HeadlessWatchFaceClient
eEditorSession
. In genere questo risultato offre prestazioni migliori rispetto al rendering su bitmap. (Ieacad) ObservableStateStore
è stato rinominato inStateStore
. (Ieb0e2).- Sono stati aggiunti
DynamicTypeEvaluator.Builder
al posto degli argomenti del costruttore per consentire più argomenti facoltativi, inclusoObservableStateStore
che ora mostra per impostazione predefinita un archivio vuoto. (I6f832) - Ordine dei parametri sottoposto a refactoring in
DynamicTypeEvaluator
. (Ic1ba4) - L'esecutore è stato aggiunto ai metodi
DynamicTypeEvaluator.bind
. (I346ab) - Abbiamo aggiunto il metodo
startEvaluation
aBoundDynamicType
per attivare la valutazione dopo aver associato il tipo dinamico. (I19908) - I fornitori di complicazioni con l'autorizzazione
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
con privilegi 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
- Il partner
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 saranno in grado di determinare se una richiesta di complicazione proviene da un quadrante nell'elenco definito dai metadati
android.support.wearable.complications.SAFE_WATCH_FACES
nel file manifest del loro fornitore daComplicationRequest#isForSafeWatchFace
. Il provider avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
per ricevere contenuti diversi daTargetWatchFaceSafety.UNKNOWN
.Inoltre, a partire da Android T
CustomValueUserStyleSetting2
è disponibile l'utilizzo, che può contenere fino a 12,5 kB. Il limite precedente perCustomValueUserStyleSetting
era di 1 kB. Nonostante l'aumento dei limiti di dimensione, 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 Bluetooth è limitata.
Modifiche alle API
- Abbiamo aggiunto un parametro facoltativo
eglContextAttribList
aGlesRenderer
eGlesRenderer2
che ti consente di impostare il valoreEGL14.EGL_CONTEXT_CLIENT_VERSION
trasmesso aEGL14.eglCreateContext
. (I2a83e). - Abbiamo eseguito la migrazione delle librerie di quadranti in
androidx.core.util.Consumer
anziché injava.util.function.Consumer
. (I273f5). - Altre eccezioni generate dalle funzioni di accesso delle proprietà KT (Iff9d9)
- Abbiamo aggiunto
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
in modo che il cliente possa stabilire se deve emulare o meno il supporto per i vecchi quadranti. (I24c89) - Abbiamo deciso che
isForSafeWatchFace
deve essere unIntDef
a tre stati. (Ief2f7). - Per Android T abbiamo introdotto
ComplicationRequest.isForSafeWatchFace
, destinato all'uso OEM, che richiedecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. Per le origini dati nell'immagine di sistema, restituisce true se il quadrante richiedente si trova nell'elenco di quadranti sicuri specificati dall'origine dati nel file manifest. (I0cbb6). - Per Android T abbiamo aggiunto
CustomValueUserStyleSetting2
, che può contenere fino a 12,5 kB. Il limite precedente perCustomValueUserStyleSetting
era di 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à
- Il supporto per le associazioni di piattaforme di complicazioni è ancora in corso, ma non è ancora possibile utilizzarlo, ma continua a seguirci.
- Abbiamo aggiunto il supporto del codice XML
ComplicationSlot
per i nuovi tipi di complicazione GOAL_PROGRESS e WEIGHTED_ELEMENTS.
Correzioni di bug
- Correzione di una perdita di dati in cui l'editor dei quadranti non veniva rilasciato correttamente sui dispositivi Samsung. (3b5987)
- Corregge un bug per cui a volte le complicazioni non venivano visualizzate correttamente passando da un quadrante all'altro con preferiti diversi. (b38ece)
- Corregge un bug di serializzazione di perOptionScreenReaderNames che causava l'arresto anomalo del quadrante. (e9f466)
Versione 1.2.0-alpha05
7 dicembre 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha05
viene rilasciato. La versione 1.2.0-alpha05 contiene questi commit.
Nuove funzionalità
Qualche tempo fa abbiamo aggiunto il supporto per la gerarchia
UserStyleSettings
e 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
. Prima di Android T, questo campo verrà ignorato dagli editor companion.
Modifiche alle API
- Abbiamo aggiunto un nuovo campo facoltativo
screenReaderName
aListOption
eComplicationSlotsOption
per l'uso da parte degli editor e che verrà ignorato dagli editor companion sui dispositivi precedenti ad Android T. (I75326) - Da Android T, ora sono supportati più
ComplicationSlotsUserStyleSettings
in una gerarchia di stili, purché ne sia attivo al massimo uno alla volta. Abbiamo aggiunto una funzione di utilitàfindComplicationSlotsOptionForUserStyle
aUserStyleSchema
per aiutarti a trovare l'eventualeComplicationSlotsOption
attivo. (Ic2b06) RangedValuesTypes
è stato importato nell'oggetto companion diRangedValueComplicationData
e rinominato inTYPE_UNDEFINED
,TYPE_RATING
ed è stato aggiunto un nuovoTYPE_PERCENTAGE
. (I55d02).- Abbiamo rinominato l'esperimento
DynamicFloat
inFloatExpression
e lo 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
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 sul design visivo che potrebbe non essere adatto 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 consentono a un provider 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 questo può risolvere i casi limite con dati inattivi per alcune complicazioni che si aggiornano di frequente (ad esempio complicazioni dei dati sulla salute). Abbiamo anche aggiuntoComplicationDisplayPolicy
doveDO_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
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 richiamare nuovamente da Java. (Ib308c) - Abbiamo risolto alcuni problemi di compatibilità Java con
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
eInteractiveWatchFaceClient
annotandoli con@JvmDefaultWithCompatibility
(Id94fc) - Abbiamo rimosso gli esperimenti sperimentali
ProtoLayoutComplicationData
eListComplicationData
. La storia dello sviluppatore non è chiara, ci auguriamo di rivederla in futuro. (I9df05). - Abbiamo aggiunto di nuovo
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 hash e uguale a. Assicurati cheonRenderParametersChanged
riceva un valore diisForScreenshot
corretto (I04a41) - Risolte le perdite di
WatchFaceControlService
da 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 relativi all'editor dei quadranti.
Modifiche alle API
UserStyleSchema.userStyleSettings
deprecato in quantorootUserStyleSettings
diventa non sperimentale (Ie96e3)- Sposta
rootUserStyleSettings
fuori dalla versione sperimentale (I8d6b3) - Abbiamo contrassegnato come sperimentale
WatchFaceColors
perché non è supportato da tutti i sistemi (I6d75d) - Esponi
DisconnectReasons
nell'API pubblica per adattarlo aIntDef
. (I791f8).
Correzioni di bug
- Chiudi qualsiasi apertura dell'editor dell'orologio se
SysUI
muore. SeSysUI
muore e l'editor del quadrante non si chiude, il quadrante potrebbe essere lasciato in uno stato incoerente perché il sistema si basa suSysUI
per rendere persistenti le modifiche allo stile dell'utente.(ba762a - Correggi una perdita di memoria in
ComplicationDataSourceInfoRetriever
, dove una continuazione di coroutine kotlin funzionava come radice GC e conservava l'attività di 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 li influisce visivamente (ad esempio la selezione di una foto di sfondo). Abbiamo aggiuntoRenderer.sendPreviewImageNeedsUpdateRequest
che consente al quadrante di richiedere un'immagine di anteprima aggiornata. Tieni presente che questa operazione richiede una data di aggiornamento del sistema corrispondente per funzionare.Abbiamo anche aggiunto un'API per i quadranti per esporre i colori al sistema, che può scegliere la tavolozza dei colori di conseguenza. Tieni presente che questa funzionalità è stata resa sperimentale in una patch successiva.
Quasi tutti i tipi di
ComplicationData
ora supportanoSmallImages
.
Modifiche alle API
- A volte, Gestore sfondi a volte può scollegarsi da un motore e crearne un altro. Abbiamo aggiunto una definizione int def in
DisconnectReason
ed estesoClientDisconnectListener
con un nuovo metodo che includeDisconnectReason
, consentendo al listener di osservare gli scollegamenti del motore. (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
, una funzionalità utile per i quadranti con stato al di fuori diUserStyleSchema
che influisce sull'aspetto del quadrante (ad esempio, un quadrante con un'immagine di sfondo selezionabile). Sul lato client abbiamo aggiuntoPreviewImageUpdateRequestedListener
come parametro facoltativo agetOrCreateInteractiveWatchFaceClient
per osservare queste richieste. (Iff44a). - Abbiamo semplificato l'API per esporre
WatchFaceColors
. Ora sul renderer è possibile impostare una semplice proprietà chiamatawatchFaceColors
che può essere impostata sul quadrante. Deve essere aggiornata secondo necessità in risposta a qualsiasi modifica di stile. Anziché utilizzareWallpaperManager
per osservare i cambiamenti 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 eseguire il rendering di una complicazione con più colori, ora ha la possibilità di utilizzare unSmallImage
multicolore, laddove in precedenza avrebbe dovuto utilizzare un'immagine monocromatica. (I257df)- Esegui il refactoring di
PreviewImageUpdateRequestedListener
in modo da diventareConsumer<>
(Ia875d) - Sostituisci il tipo SAM (Single Abstract Method) personalizzato
OnWatchfaceColorsListener
con un tipo SAM Java generico (consumer) (I0c489) - Abbiamo ritirato i metodi precedenti
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 modifica senza preavviso e al momento il renderer non è supportato da
CanvasComplicationDrawable
. - Abbiamo anche aggiunto margini facoltativi agli slot delle complicazioni, il che semplifica la selezione delle piccole complicazioni.
Modifiche alle API
- La classe sperimentale
BoundingArc
ora è immutabile. (If624a). - Piccole complicazioni possono essere difficili da toccare. Per contribuire a mitigare questo problema, abbiamo introdotto il supporto per i margini che aumentano l'area toccabile senza influire sul rendering. Se non diversamente specificato (nel codice o tramite XML),
ComplciationSlots
ha margini pari a zero. (I14089) - Firma
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
modificata per restituire un'istanza di fabbrica con valore non null. Si è trattato di un errore restituire null in precedenza, quindi questo è solo un modo per rendere più chiaro il contratto dell'API. (I0fcc0) - Abbiamo aggiunto l'argomento
currentUserStyleRepository
al metodoWatchFaceService.getComplicationSlotInflationFactory
per garantire la coerenza concreateComplicationSlotsManager
. (I2ddd2). UserStyleFlavors
è diventata una funzionalità non sperimentale. (I69cdc)- Abbiamo rimosso il campo sperimentale
ValueType
daRangedValueComplicationData
e introdotto invece l'esperimento sperimentaleDiscreteRangedValueComplicationData
, che è simile aRangedValueComplicationData
, ad eccezione dell'intervallo di numeri interi e del valore. Abbiamo anche introdotto l'esperimentoGoalProgressComplicationData
sperimentale, simile aRangedValueComplicationData
, tranne per il progresso verso un obiettivo in cui il valore minimo è implicitamente pari a zero e il valore può essere superiore atargetValue
. Nota per tutte le varianti diRangedValue
. È necessario specificare almeno un'immagine monocromatica, il testo o il titolo. (I9590c) - Abbiamo rimosso
boundsWithMargins
daComplicationSlotState
perché il software di sistema non supporta 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 possono essere visualizzati in un grafico a torta in cui i colori devono essere significativi per via del contesto, dato che in genere una complicazione non c'è spazio per visualizzare le etichette. (I87eea) - L'esperimento
ColorRamps
sperimentale facoltativamente utilizzato daRangedValueComplicationData
eGoalProgressComplicationData
ora consente di specificare una sequenza di massimo sette colori e un flag che indica se i colori devono essere interconnessi uniformemente o se devono essere visualizzati in tinta unita passi di colore di dimensioni uguali. (I9f5bf) RangedValueComplicationData.drawSegmented
è stato modificato invalueType
, che è un valore intero conValueType IntDef
corrispondente che fornisce un significato semantico al valore con intervallo e può essere utilizzato dal renderer della complicazione per influenzare lo stile. (I0616b)- Abbiamo aggiunto il supporto sperimentale per l'elemento
ColorRanges
facoltativo aRangedValueComplicationData
. Normalmente le complicazioni vengono visualizzate con colori scelti dal quadrante, ma a volteComplicationDataSource
è la posizione migliore per impostare i colori, ad esempio quando hanno un particolare significato semantico. Ad esempio, da rosso a blu per la temperatura. (I5153a) - Abbiamo aggiunto un suggerimento sperimentale
drawSegmented
aRangedValueComplicationData
. Questo indica ai renderer di tracciare l'indicatore del valore con intervalli con segmenti, dove 1 segmento = 1 unità. (I7d7c1).
Correzioni di bug
- Abbiamo aggiunto la possibilità di definire
ComplicationSlotBounds
in relazione 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.
- Questa è una release per la correzione di bug e gli utenti della versione 1.1.0 sono 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. Purtroppo l'applicazionependingInitialComplications
è stata applicata troppo presto, il che significa che è stato previsto un intervallo di tempo durante l'inizializzazione del quadrante, in cui le complicazioni venivano comunque applicate apendingInitialComplications
e verrebbero ignorate. Il problema ora è stato risolto. Inoltre, questa patch corregge un bug per cuiComplicationRenderer
tentava erroneamente di caricare i segnaposto in modo asincrono, cosa che non comportava l'aggiornamento dell'immagine della compilazione. Infine questa patch corregge un bug teorico per cui piùpendingInitialComplications
devono essere uniti. (0d03ba3)Correggi il potenziale deadlock in
InteractiveInstanceManager
, dovegetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
ha tenuto la serratura più a lungo del necessario. In genere ci aspettiamo cheengine.setUserStyle
sia veloce, ma se per qualche motivo non lo è, potremmo ritrovarci con un deadlock/ANR. Questa patch rimuove il lavoro superfluo dalla serratura, eliminando il potenziale per un deadlock.(5a2adca)Risolvi diversi problemi che hanno conservato
WatchFaceService
. A volte WakeLock può mantenereWatchFaceService
e l'aggiunta di una chiamatarelease()
risolve questo problema. AncheStateFlows
può conservareWatchFaceService
, annullando le correzioni diCoroutineScopes
sottostanti.(fd48138)Aggiungi timeout a
awaitDeferredWatchFace
* e correggiwatchfaceOverlayStyle
NullPointerException
. In circostanze normali, questo non dovrebbe scadere, anche in seguito a una nuova installazione e in scenariDirectBoot
in cui il carico della CPU è elevato. Abbiamo inoltre corretto un NPE segetWatchfaceOverlayStyle
viene chiamato dopo il giornoclose()
.(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
Modifica migliorata:
- Abbiamo aggiunto il supporto per gli schemi gerarchici, che consentono di scrivere una gerarchia di stili dalle UI degli editor. Ora puoi specificare icone separate da utilizzare nell'editor dei quadranti e dei companion.
- È disponibile il supporto per l'attivazione per più istanze di un quadrante, ogni istanza ha un ID univoco disponibile su tutte le piattaforme API.
- Ora puoi specificare nomi leggibili per
ComplicationSlots
da utilizzare negli editor. - Supporto sperimentale per lo stile dei "sapori", una selezione curata di stili che sarà visibile nell'editor companion.
- Quando vengono caricate due istanze del quadrante orologio, è ora possibile condividere le risorse, risparmiando memoria
- Quando selezioni una complicazione nell'editor del quadrante, il fornitore corrente è ora preselezionato.
Complicazioni migliorate:
- Ora puoi specificare il
ComplicationType
per le origini dati primarie e secondarie, offrendo agli sviluppatori una maggiore flessibilità per l'esperienza immediata. - Abbiamo aggiunto
ComplicationDataTimeline
, che fornisce una sequenza di dati con limiti di tempo da inviare sul quadrante orologio, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo del giorno in vari orari o più eventi nel calendario imminenti. - Il valore
ComponentName
del fornitore di complicazioni fa parte diComplicationData
. - Ora le complicazioni vengono memorizzate nella cache per offrire un'esperienza migliore quando passi da un quadrante all'altro.
Altre modifiche:
- Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. Questo semplifica la creazione del quadrante e consente di query sui metadati più veloci dal sistema. - I quadranti ora 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 del formato XML per i quadranti, in modo da rendere più facile specificare
ComplicationSlotBounds
e supportare i riferimenti. La sperimentazione con la complicazione a livello perimetraleBoundingArc
continua, eseguendo i passaggi fino adrawHighlight
, anche se al momento non è consigliato l'utilizzo.
Modifiche alle 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 in XML sia nel codice. (I3ef61)
- Abbiamo aggiunto la possibilità di definire
ComplicationSlotBounds
nei modulicenter_x
,center_y
,size_x
esize_y
. Ora è anche possibile utilizzare unità diverse (dp) utilizzando i riferimenti alle risorse. (Iace98)
Correzioni di bug
- Correggi
runBlockingWithTracing
che eseguiva attività nel contesto sbagliato.(4f595fe) - Rendi sincrono
BaseEditorSession.close
. Il problema conBaseEditorSession.close
che è asincrono è che rilasciamoComplicationDataSourceInfoRetriever
troppo tardi per generare avvisi di spam in logcat. Probabilmente è stato innocuo, ma lo spam logcat è fonte di distrazione e dovrebbe 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'uso, ma tieni d'occhio questa pagina.
Modifiche alle API
- Abbiamo aggiunto
BoundingArc
, una classe sperimentale che descrive la geometria di un'area con complicazioni di bordo. Questo elemento è stato aggiunto aComplicationSlot
ed è stato spostato inComplicationSlotState
eWatchFaceMetadataClient
. (I61a40) - Abbiamo aggiunto la possibilità di ereditare le impostazioni nel file XML
UserStyleSetting
. Ti permette di ridurre il livello di dettaglio e di 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 al momento WearOS non li riconosce se aggiunto a un file manifestComplicationDataSource's
. (I1811c)
Correzioni di bug
- Correggi la serializzazione di tipo
TimeLineEntry
. Non stavamo serializzando il tipoTimeLineEntry
, il che significava cheTimeLineEntries
memorizzato nella cache di tipo NoData sarebbe erroneamente interpretato come un tipo di complicazione padre che generava NPE quando si accedeva a campi obbligatori inesistenti. (55ffdf5). - Correggi un bug per cui
setComplicationData
ha eliminato i campi della sequenza temporale(fb392f5) - Corregge un bug per cui molto occasionalmente
runBlockingWithTracing
portava a un NPE(12ca62e) - Corregge un bug per cui a volte riceviamo
ClassNotFoundException: android.support.wearable.complications.ComplicationText
quando riceviamo una complicazione.(217942d9) - Correzione di un bug in
GlesRenderer.backgroundThreadInitInternal
in cui veniva chiamato soloonBackgroundThreadGlContextCreated
seEGL14.eglCreateContext
è stato chiamato. Corregge un altro bug per cui si verificava un glitch visivo nello screenshot causato daverticalFlip
.(c674ad2) - Correggi il controllo della versione XML di
WatchFaceService
, poiché si stava caricando dal pacchetto sbagliato.(dfa06f3) - Il formato cavo segnaposto ora utilizza un bundle interno. Non vogliamo che i segnaposto interrompano i quadranti esistenti che potrebbero utilizzare il valore interno nascosto a.s.w.c.ComplicationData. In precedenza, il formato del cavo di un dato
NoDataComplication
memorizzava il segnaposto nei normali campi (problematico perché i vecchi quadranti avrebbero visualizzato la stringa segnaposto che non era destinata), ora invece utilizziamo un bundle interno per isolare completamente questo aspetto.(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 alle API
- Ora i metodi
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) eHeadlessWatchFaceClient.getUserStyleFlavors
hanno deselezionato RuntimeEccezioni anzichéWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
è stato spostato fuori dal corso per consentirne il riutilizzo. (I4e869).
Correzioni di bug
WatchFaceMetadataClient
non si arresta in modo anomalo quando viene inviato unComplicationSlotBounds
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
ispezionandoComplicationData.dataSource
. Alcuni quadranti potrebbero utilizzarlo per personalizzare la visualizzazione della complicazione. (I44a73)
Modifiche alle API
Renderer.CanvasRenderer
eRenderer.GlesRenderer
sono stati deprecati a favore diRenderer.CanvasRenderer2
eRenderer.GlesRenderer2
, che supportanoSharedAssets
, che vengono trasmessi ai metodi di rendering. Per l'interoperabilità Java abbiamo introdottoListenableCanvasRenderer2
eListenableGlesRenderer2
. (I31ffa)- Aggiunta la funzionalità
@WatchFaceFlavorsExperimental
per la definizione dei sapori: elenco preconfigurato di quadranti con stili applicati (I04dd0) Renderer.sharedAssets
ora è uno StateFlow e abbiamo rimosso iRenderer.SharedAssetsFactory
inutilizzati (I12ac5)UserStyleSchema.userStyleSettings
non è più deprecato (Iba7e3)- Abbiamo aggiunto
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
, che consente a unHeadlessWatchFaceClient
di evitare l'overhead relativamente basso del passaggio dello schema ad AIDL prima del calcolo dell'hash del digest. (I33597) - Abbiamo aggiunto
isUserStyleSchemaStatic
aWatchFaceMetadataClient
, il che è valido solo se è possibile fare affidamento suUserStyleSchema
per la modifica, 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 sul 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 alle API
ComplicationData
aggiornato potrebbe non essere sempre disponibile (ad esempio, ComplicationData scaduto nella cache) quindi abbiamo estesoNoDataComplication
con un segnaposto facoltativo ComplicationData e abbiamo aggiuntoComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
che possono essere utilizzati solo nel contesto di un segnapostoNoDataComplicationData
. Se selezionati, il rendering di questi segnaposto è consigliato con caselle grigie/archi. (I6285d)- Abbiamo aggiunto
ComplicationData.getNextChangeInstant
, che indica il prossimo Istantaneo dopo l'Istantaneo di riferimento in cui qualsiasi campo della complicazione può cambiare. Viene utilizzato internamente per pianificare i frame per gli aggiornamenti della complicazione. Ad esempio, se un quadrante normalmente si aggiorna una volta al minuto, l'impostazione della complicazione del cronometro ne comporterà l'aggiornamento una volta al secondo. (I7ceb2). - Ora è possibile utilizzare
EditorSession.watchFaceId
a tutti i livelli API. Inoltre, il suo valore ora sarà sempre coerente conWatchState.watchFaceInstanceId
. (I323b9) - L'API
getPendingIntentForTouchEvent
non è più necessaria poiché il problema di base è stato risolto nel framework, pertanto tutte le API correlate sono state rimosse. I quadranti non devono fare nulla di particolare per consentire l'attivazione diPendingIntents
, anche se è stato premuto di recente il pulsante Home. (I1f2e8). - Abbiamo aggiunto
RendererParameters.isForScreenShot
, che sarà true se il rendering è per uno screenshot. Alcuni quadranti orologio dotati di animazioni devono saperlo per poter apportare modifiche e ottenere risultati ottimali. (I96d99) - Abbiamo aggiunto
WatchFaceExceptionReason
aWatchFaceException
per contestualizzare cosa non ha funzionato. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
è stato rimosso, ma è stato aggiuntoComplicationRequest.immediateResponseRequired
per segnalare che il provider deve rispondere rapidamente (idealmente per rispondere entro 100 ms). Tieni presente che questa funzionalità è protetta dall'autorizzazionecom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
privilegiata. (Ie6b23).- Valore nulla aggiornato nel core e nell'appcompat per 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 alle API
- Abbiamo aggiunto il supporto sperimentale per gli schemi in stile gerarchico. Abbiamo aggiunto in
androidx.wear.watchface.style.UserStyleSetting.Option
una nuova proprietà, childSettings, che viene inizialmente utilizzata solo daListOption
. In questo modo, è possibile descrivere una gerarchia di stili per l'utilizzo da parte delle UI di Editor; lo stile UserStyle sottostante rimane invariato ed è ancoraMap<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 facoltativo del costruttore perCanvasRenderer
(il valore predefinito è false). Se il valore è impostato su true, il canvas verrà cancellato con il colore di tinta di sfondo. (Ie01e5). - È stata aggiunta la chiave di 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) - È comune che durante la modifica di un quadrante ci siano sia un'istanza interattiva che un'istanza headless. Per aiutarti a risparmiare memoria, abbiamo introdotto
Renderer.SharedAssets
, che consente a un renderer di un quadrante di condividere dati immutabili (ad esempio, texture e smoother) tra le istanze.GlesRenderer.setEglConfig
eGlesRenderer.setEglDisplay
sono deprecati, non è mai stato previsto che questi valori fossero configurabili e questo avrebbe portato a un comportamento indefinito. (I0d9e7). - Abbiamo aggiunto
setNameResourceId
esetScreenReaderNameResourceId
(che fanno riferimento alle risorse stringa) aComplicationSlot.Builder
e i getter corrispondenti inandroidx.wear.watchface.client.ComplicationSlotState
. Ciò consente al sistema di recuperare i nomi delle complicazioni da utilizzare negli editor e negli screen reader. (If6c6a). WatchfaceMetadataClient.getUserStyleSchema
egetComplicationSlotMetadataMap
ora lancianoWatchFaceException
invece diRemoteException
. (I86f11)onSynchronousComplicationRequest
e le funzioni correlate inComplicationDataSourceService
sono state rinominate inonImmediateComplicationRequest
e così via... (I87ba0)- Gli editor dei quadranti hanno uno spazio sullo schermo molto inferiore rispetto agli editor associati, quindi ha senso supportare icone diverse per questi editor. Questa patch aggiunge
OnWatchEditorData
(al momento contiene solo un'icona) a tutte le impostazioni UserStyleSettings e, ove appropriato, alle relative classi Functions. (If1886) - Abbiamo aggiunto
@JvmOverloads
al costruttore di AscoltaableGlesRenderer per una migliore interoperabilità Java. (I2974a)
Correzioni di bug
- Il costruttore di
ListenableGlesRenderer
è ora contrassegnato correttamente come@Throws(GlesException::class)
e ora è possibile estendere questa classe in Java. (Iac6d0) - Corregge il bug relativo a
PhotoImageComplicationData
tapAction non 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, Uguas e toString, rendendoli più semplici da utilizzare.
Modifiche alle API
- I metodi
WatchfaceMetadataClient
generano ancora una voltaRemoteExceptions
, ove appropriato, consentendo al codice client di individuare più facilmente gli errori dal 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
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. Questo semplifica la creazione del quadrante. Inoltre, le queryWatchFaceMetadataClient
sono più veloci perché non deve essere associato al servizio per ottenere i metadati.WatchFaceMetadataClient
eListenableWatchFaceMetadataClient
non sono più sperimentali e diventeranno parte dell'API stabile. Il sistema sarà in grado di supportare facoltativamente 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 di 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 questa 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 dopo il caricamento. A volteComplicationData
viene memorizzato nella cache dal sistema e talvolta è serializzato dalle librerie di quadranti. Una volta serializzata, qualsiasi operazione tapAction associata andrà persa, in questo casoComplicationData.tapActionLostDueToSerialization
restituiràtrue
e il quadrante dovrebbe visualizzare la complicazione in modo diverso (ad esempio se non selezionabile o semitrasparente) per indicare che non può essere toccata. Il sistema invierà il codiceComplicationData
aggiornato contapAction
il prima possibile.Alcuni
ComplicationData
non devono essere memorizzati nella cache per molto tempo. A supporto di questa funzionalità, abbiamo aggiunto una funzionalità più generaleComplicationDataTimeline
. Può essere utilizzato per fornire una sequenza diComplicationData
con vincoli temporali da caricare sul quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo del giorno in vari orari o più eventi nel calendario imminenti.ComplicationRequestListener
è stato esteso con un nuovo metodoonComplicationDataTimeline
che puoi utilizzare per restituire questi dati.DefaultComplicationDataSourcePolicy
è stato esteso in modo che tu possa specificareComplicationType
per le origini dati principali e secondarie.Abbiamo aggiunto il supporto per i fornitori di complicazioni sincroni in cui la complicazione viene aggiornata con una frequenza maggiore del normale, fino a una volta al secondo quando il quadrante è visibile e non atmosferico. Nota:i provider di complicazioni sincrone potrebbero avere un utilizzo limitato a causa di problemi di pressione della memoria.
È probabile che le modifiche a
PendingIntentTapListener
vengano annullate perché abbiamo risolto il problema di fondo (non è possibile per il quadrante avviare attività per 5 secondi dopo aver premuto il pulsante Home) nel framework.
Modifiche alle API
ComplicationData.isCached
è stato modificato intapActionLostDueToSerialization
, il che è più utile per determinare se l'area della complicazione deve essere visualizzata in modo diverso per indicare che non può essere toccata. (I6de2f)- Elemento
ComplicationDataTimeline
aggiunto alla raccoltawear-complication-data-source
. Può essere utilizzato per fornire una sequenza diComplicationData
con vincoli temporali da caricare sul quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo del giorno in vari orari o più eventi nel calendario imminenti.ComplicationRequestListener
è stato esteso con un nuovo metodoonComplicationDataTimeline
che puoi utilizzare per restituire questi dati. È disponibile un nuovo wrapper kotlinSuspendingTimelineComplicationDataSourceService
per la sospensione dei servizi di origine dati. (Idecdc) PendingIntentTapListener
eWatchFaceControlClient.getPendingIntentForTouchEvent
aggiunti. Questo può aiutare i quadranti che devono lanciare intent in risposta ai tocchi per aggirare un problema in 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 ogni quadrante. Lo scopo è consentire al quadrante di visualizzare i valori dei dati delle ultime complicazioni note al momento del caricamento fino a quando il sistema non ha avuto la possibilità di aggiornarli. Esiste un nuovo metodo APIWatchFaceControlClient.hasComplicationCache
destinato agli OEM. Ciò può influenzare la strategia del sistema per l'invio di complicazioni a un quadrante. Inoltre,ComplicationData
ha una proprietàisCached
e si consiglia di visualizzare le complicazioni memorizzate in modo diverso poiché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
. Non è necessario utilizzare questa opzione per la maggior parte dei quadranti, ma se esiste uno stato per quadrante che non è memorizzato nello schema, questa è la chiave da utilizzare per identificare l'istanza del quadrante. A supporto di ciò, ora puoi fornire un ID quando chiami il numeroWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) - Estensione di
DefaultComplicationDataSourcePolicy
estesa con la possibilità di impostare il valoreComplicationTypes
predefinito per il fornitore principale, secondario e per il fornitore di sistema di riserva. L'APIComplicationSlot.defaultDataSourceType
è deprecata. (If0ce3) - Ora
ComplicationSlot.configExtras
è modificabile e può essere aggiornato prima di chiamare il numeroEditorSession.openComplicationDataSourceChooser()
. (I6f852) WatchFace.setComplicationDeniedDialogIntent
esetComplicationRationaleDialogIntent
aggiunti. Questi intent vengono avviati per mostrare una finestra di dialogo di motivazione prima di richiedere le autorizzazioni per la complicazione e un'altra finestra di dialogo che spiega che è necessaria l'autorizzazione per le complicazioni quando si prova a modificare una complicazione quando le autorizzazioni sono state negate (il selettore del provider non si aprirà, quindi la finestra di dialogo è necessaria). (I3a29c).- Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. Questo semplifica la creazione del quadrante e velocizza le queryWatchFaceMetadataClient
in quanto non devono essere associate al servizio per ottenere 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. e, se possibile, possono essere utilizzati per ottenere in modo efficiente i metadati del quadrante, senza aprire un raccoglitore al quadrante. (Ibb827)- Aggiunto il supporto per i fornitori di complicazioni sincrone in cui la complicazione viene aggiornata a una frequenza maggiore del normale, fino a una volta al secondo quando il quadrante è visibile e non atmosferico. Per utilizzarlo, il fornitore deve includere un nuovo tag di 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 eseguire l'override dionStartSynchronousComplicationRequests
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 a
PhotoImageComplicationData
tapAction non 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 raccolta consigliata per lo sviluppo di quadranti WearOS. Ha una serie di nuove funzionalità rispetto alla precedente libreria di assistenza per dispositivi indossabili.
- Lo stile dell'utente (ad esempio per modificare la tavolozza dei colori, lo stile delle lancette, l'aspetto delle indicazioni dei orari e così via) è supportato direttamente dalla raccolta (vedi
androidx.wear.watchface.style
). Ora è molto più semplice sviluppare un editor per i quadranti su androidx.wear.watchface.editor e il quadrante può essere modificato dall'app complementare di sistema senza dover scrivere codice aggiuntivo. - Best practice integrate. La raccolta genera automaticamente etichette dei contenuti dello screen reader per le complicazioni (puoi anche aggiungerne di personalizzate) e la frequenza fotogrammi diminuisce automaticamente quando la batteria è in esaurimento e non si ricarica per aumentare la durata della batteria.
- È necessario meno codice per sviluppare un quadrante, soprattutto per le complicazioni in cui gran parte del boilerplate è stato spostato nella libreria.
Correzioni di bug
- Correggi
EditorSession.userStyle.compareAndSet
(I6f676) - Risolvere il problema dei ritardi molto brevi del quadrante (Iffb97)
- Invia
InteractiveWatchFaceImpl.onDestroy
nel thread dell'interfaccia utente (I83340) - Risolvere diversi problemi relativi ai ricevitori di trasmissioni (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
Correggi il dump() (chiamato da adb shell dumpsys) che si è interrotto dalle migrazioni dei flussi. (087cf9e).
Assicurati che i valori writeDirectBootPrefs siano ordinati correttamente. Vogliamo che writeDirectBootPrefs venga eseguito sempre dopo initStyleAndComplications altrimenti rischiamo di ritardare l'init del thread dell'interfaccia utente.(37650ac)
Assicurati che Renderer.onDestroy sia chiamato. Nello scenario in cui il renderer è stato creato ma l'inizializzazione WF non è stata completata e viene chiamato Engine.onDestroy, dobbiamo chiamare Renderer.onDestroy. (f9952dc)
Ottimizzazione/correzione diBatteriaBasso AndNonRicarica. Questa patch sposta in anticipo la configurazione iniziale di isBatteryLowAndNotCharging, il che significa che può essere eseguita in parallelo con createWatchFace. Inoltre, ora ascoltiamo ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive deve essere false dopo la chiusura (ab9774e)
Versione 1.0.0-beta01
27 ottobre 2021
androidx.wear.watchface:watchface-*:1.0.0-beta01
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 alle API
- I corsi nel pacchetto
androidx.wear.watchface.complications
sono stati spostati in un nuovo progettowear:watchface:watchface-complications
. Tieni presente che non puoi includere questa libreria e qualsiasi versione alpha precedente diwear:watchface:watchface-complications-data
perché riceverai errori relativi ai corsi duplicati. (I97195) - Renderer.dump è stato rinominato in Renderer.onDump ed è stato annotato con @UiThread. (I44845)
InteractiveWatchFaceClient.addWatchFaceReadyListener
è stato rinominato inaddOnWatchFaceReadyListener
eremoveWatchFaceReadyListener
è stato rinominato inremoveOnWatchFaceReadyListener
. (I48fea).- EditorSession
getComplicationsPreviewData
egetComplicationsDataSourceInfo
non sono più funzioni di sospensione, ma sono proprietàStateFlow<>
il cui valore inizialmente è null. In AscoltaableEditorSession,getListenableComplicationPreviewData
egetListenableComplicationsProviderInfo
sono stati rimossi a favore dei nuovi oggettiStateFlow<>
della classe base. Se devi ascoltare le modifiche nel codice Java, potresti utilizzareandroidx.lifecycle.FlowLiveDataConversions.asLiveData
per convertirlo 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à
Ora la libreria di quadranti è un singolo gruppo di librerie. Di conseguenza, le librerie sono state spostate e dovrai 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 librerie separate del quadrante e delle complicazioni di
androidx.wear
in un gruppo di librerieandroidx.wear.watchface
. (b25f3c0). - È stato aggiunto EditorRequest.canWatchFaceSupportHeadlessEditing per comunicare a un cliente se un editor del quadrante supporta l'editing headless. Nota 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 ha un metodo dump() che può essere ignorato 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. Usa invece 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 riceva i garbage collection.(fce4af8, b/199485839)