Quadrante Wear
Nota: a partire dal 10 luglio 2024, i quadranti devono utilizzare il Formato del quadrante per visualizzare installati su nuovi orologi su cui è preinstallato Wear OS 5. Scopri di più sui cambiamenti per gli utenti Centro assistenza .
Inoltre, a partire dall'inizio del 2025 (data specifica da comunicare durante Q4 2024), tutti i nuovi quadranti pubblicati su Google Play devono utilizzare il quadrante Formato.
Aggiornamento più recente | Release stabile | Candidato per l'uscita | 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. Consulta il Repository Maven di Google per ulteriori informazioni.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
Groovy
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Kotlin
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.
Consulta la documentazione di Issue Tracker per ulteriori informazioni.
Versione 1.3
Versione 1.3.0-alpha03
17 aprile 2024
Viene rilasciato androidx.wear.watchface:watchface-*:1.3.0-alpha03
. 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 non cambiano di frequente, è più efficiente che passare gli override tramiteEditorSession#renderWatchFaceToBitmap
. (I19384)
Correzioni di bug
- In precedenza,
selectComplicationDataForInstant
chiamavatoApiComplicationData
per qualsiasi sequenza temporale, il che significa che il successivo test di uguaglianza dei riferimenti === non riusciva mai. Ciò significava che le complicazioni venivano ricaricate a ogni fotogramma, con un conseguente consumo eccessivo della batteria. (717406)
Versione 1.3.0-alpha02
3 aprile 2024
Viene rilasciato androidx.wear.watchface:watchface-*:1.3.0-alpha02
. La versione 1.3.0-alpha02 contiene questi commit.
Nuove funzionalità
- Ora utilizziamo l'uguaglianza dei riferimenti per confrontare meglio e
selectedData
perché l'operatore uguale è costoso. (446b00)
Modifiche alle API
- Abbiamo aggiunto un'API dinamica senza riserva per
GoalProgressComplicationData
. (C33264)
Versione 1.3.0-alpha01
7 febbraio 2024
Viene rilasciato androidx.wear.watchface:watchface-*:1.3.0-alpha01
. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
WatchFaceServices
possono essere inizializzati contemporaneamente e devono essere stateless. A supporto di ciò, abbiamo aggiuntoStatefulWatchFaceService
, in cui un elemento aggiuntivo definito dall'utente creato dacreateExtra()
viene passato a tutti gli override richiamati durante l'inizializzazione.GlesRenderer2
ora ha un sovraccarico del costruttore che ti consente di specificare un elenco di attributi da provare a loro volta coneglChooseConfig
.
Modifiche alle API
StatefulWatchFaceService
ora supporta un override digetComplicationSlotInflationFactory
in cui viene inserito 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, gli sviluppatori in genere hanno reso statefulWatchFaceServices
. Questo è pericoloso perché è possibile creare più istanze contemporaneamente, il che può causare bug. Per risolvere questo problema, abbiamo introdottoStatefulWatchFaceService
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 ha un sovraccarico del costruttore che ti consente di specificare un elenco di attributi da provare a loro volta 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, il supporto per
SystemDataSources.DATA_SOURCE_HEART_RATE
verrà aggiunto a WearOS. Questa complicazione è garantita solo per il supporto delle complicazioniSHORT_TEXT
, ma è consigliabile cheComplicationSlot
accetti ancheSMALL_IMAGE
perché gli OEM possono scegliere di pubblicare una scorciatoia all'app per la salute anziché il valore in tempo reale. (I34223) - A partire da Android U, abbiamo aggiunto
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
che controlla cosa succede quando il sistema viene ripristinato da un backup per complicare l'origine dati conMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
. Per impostazione predefinita, il sistema presuppone che il servizio di origine dati delle complicazioni supporti il backup di tutti i dati di configurazione. In caso contrario, può aggiungere l'impostazione dei metadatiMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
su false, il che contrassegnerà lo slot della complicazione come non configurato. (I6c505).
Versione 1.2
Versione 1.2.1
24 gennaio 2024
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.1
. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- Risolto un problema di arresto anomalo su Samsung Galaxy Watch 4, 5 e 6. (43f0b0)
Versione 1.2.0
29 novembre 2023
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0
. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
- Abbiamo aggiunto il supporto di alcuni nuovi tipi di complicazioni che sono disponibili per l'uso da Android T:
GoalProgressComplicationData
, che è simile aRangedValueComplicationData
, tranne che per l'avanzamento verso un obiettivo in cui il valore minimo implicitamente è pari a zero e il valore può essere superiore atargetValue
.WeightedElementsComplicationData
, che è composto da un array di elementi (coppie di peso e colore) insieme a testo/titolo/immagine facoltativi. Questi grafici potrebbero essere mostrati sotto forma di grafico a torta in cui i colori devono essere significativi in base al contesto, poiché in genere non c'è spazio per la complicazione del rendering delle etichette.
- Abbiamo aggiunto il supporto per il campo facoltativo
ColorRanges
aRangedValueComplicationData
. Di solito 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 es. da rosso a blu per la temperatura. - Ora quasi tutti i tipi di
ComplicationData
supportanoSmallImages
. - Abbiamo aggiunto
ComplicationDisplayPolicy
in cuiDO_NOT_SHOW_WHEN_DEVICE_LOCKED
indica a un quadrante compatibile di non visualizzare la complicazione quando il dispositivo è bloccato. - 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 file manifest del proprio fornitore entro il giornoComplicationRequest#isForSafeWatchFace
. Il provider avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
per ricevere qualcosa di diverso da TargetWatchFaceSafety.UNKNOWN. UserStyleFlavors
è diventata una funzionalità non sperimentale.
Versione 1.2.0-rc01
18 ottobre 2023
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-rc01
. La versione 1.2.0-rc01 contiene questi commit.
Versione 1.2.0-beta02
6 settembre 2023
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-beta02
. La versione 1.2.0-beta02 contiene questi commit.
Nuove funzionalità
SuspendingComplicationDataSourceService#onDestroy
è ora aperto. Tieni presente che è stato rimosso il supporto per una complicazione meteo predefinita di sistema.
Modifiche alle API
- Ripristina "Esponi una nuova origine dati per le complicazioni meteo". (I6f335).
Versione 1.2.0-beta01
23 agosto 2023
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-beta01
. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- A partire da Android T, WearOS supporterà una complicazione del sistema meteo predefinita.
Modifiche alle API
- Aggiungi il sistema di riserva predefinito per il meteo per le complicazioni. (Ia0994)
- Questa patch aggiunge
WatchFaceRuntimeService
eWatchFaceControlClient.createWatchFaceRuntimeControlClient
insieme ai wrapper guava. Queste aggiungono il supporto per i runtime dei quadranti, un tipo speciale di quadrante che carica la sua definizione da un altro pacchetto. Attualmente WearOS supporta solo il runtime per Android Watch Face Format. (I2799f) - Questa patch fa seguito ad aosp/2636578, in cui rinominiamo le int defs in modo che non sia necessario modificare qualsiasi codice che dipende da
WatchFaceType
,CanvasType
,TapType
oComplicationsSlotBoundsType
. (I4098b) - File API aggiornati per annotare l'eliminazione 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 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
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha09
. La versione 1.2.0-alpha09 contiene questi commit.
Nuove funzionalità
RangedValueComplicationData.Builder
ora accettaDynamicFloat
ed è disponibile una nuovaDynamicComplicationText
come sottoclasse diComplicationText
, che 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 giornaliere e piani giornalieri. Le chiavi per le origini di integrità della piattaforma ora si trovano sotto
PlatformHealthSources.Keys
(Ib7637) - Implementa
PlatformDataProvider
per fornire battito cardiaco e passi giornalieri. L'interfacciaSensorGateway
è stata rimossa dall'API pubblica. (I55b84). - Rinomina
StateEntryValue
inDynamicDataValue
e aggiorna le API di stato per 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
sono stati rimossi 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
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha08
. 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 i metadatiandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
che eseguono l'override diandroid.support.wearable.complications.SUPPORTED_TYPES
per i quadranti sicuri. Ciò significa che un fornitore di complicazioni può scegliere di pubblicare diversi tipi di quadranti orologio attendibili o 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 dall'enum valueOf (I818fe)
- Abbiamo rimosso
renderWatchFaceToSurface
a favore dicreateRemoteWatchFaceView
, che si basa su SurfaceControlViewHost e consente al chiamante di incorporare una visualizzazione dal quadrante, che viene resa quando il client chiamaRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Abbiamo aggiunto
renderWatchFaceToSurface
aInteractiveWatchFaceClient
,HeadlessWatchFaceClient
eEditorSession
. In genere questa operazione è più efficace rispetto al rendering in bitmap. (Ieacad) ObservableStateStore
è stato rinominato inStateStore
. (Ieb0e2).- È stato aggiunto
DynamicTypeEvaluator.Builder
anziché gli argomenti del costruttore per consentire altri argomenti facoltativi, tra cuiObservableStateStore
che ora per impostazione predefinita viene impostato su 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 l'associazione del tipo dinamico. (I19908) - I fornitori di complicazioni con il privilegio
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
possono registrare i metadatiandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
che eseguono l'override diandroid.support.wearable.complications.SUPPORTED_TYPES
per i quadranti sicuri. (ID1c73) - Abbiamo rinominato
CustomValueUserStyleSettings2
inLargeCustomValueUserStyleSettings
. (Ic17ac)
Correzioni di bug
- L'utente
DynamicTypeValueReceiver#onPreUpdate
è stato rimosso. (I2dc35)
Versione 1.2.0-alpha07
22 febbraio 2023
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha07
. La versione 1.2.0-alpha07 contiene questi commit.
Nuove funzionalità
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 file manifest del proprio fornitore entro il giornoComplicationRequest#isForSafeWatchFace
. Il provider avrà bisogno dell'autorizzazionecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
per ricevere qualcosa di diverso daTargetWatchFaceSafety.UNKNOWN
.Su Android T è disponibile anche
CustomValueUserStyleSetting2
, 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 le modifiche e la larghezza di banda del Bluetooth è limitata.
Modifiche alle API
- Abbiamo aggiunto un parametro facoltativo
eglContextAttribList
aGlesRenderer
eGlesRenderer2
che ti consente di impostareEGL14.EGL_CONTEXT_CLIENT_VERSION
trasmesso suEGL14.eglCreateContext
. (I2a83e). - Abbiamo eseguito la migrazione delle librerie dei quadranti a
androidx.core.util.Consumer
anziché ajava.util.function.Consumer
. (I273f5) - Altre eccezioni generate dalle funzioni di accesso alle proprietà KT (Iff9d9)
- Abbiamo aggiunto
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
in modo che il cliente possa stabilire se deve emulare il supporto o meno per conto di vecchi quadranti. (I24c89) - Abbiamo deciso che
isForSafeWatchFace
deve essere unIntDef
multistato. (Ief2f7) - Per Android T abbiamo introdotto
ComplicationRequest.isForSafeWatchFace
, destinato all'utilizzo 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 è all'interno dell'elenco di quadranti sicuri specificati dall'origine dati nel relativo file 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
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha06
. La versione 1.2.0-alpha06 contiene questi commit.
Nuove funzionalità
- Stiamo lavorando per aggiungere il supporto per le associazioni di piattaforme di complicazioni, che non sono ancora pronte 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
- Corregge una fuga 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 quando si passava da un quadrante all'altro con più preferiti. (b38ece)
- Corregge un bug di serializzazione con perOptionScreenReaderNames che causava arresti anomali dei quadranti. (e9f466).
Versione 1.2.0-alpha05
7 dicembre 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha05
. La versione 1.2.0-alpha05 contiene questi commit.
Nuove funzionalità
Qualche tempo fa abbiamo aggiunto il supporto per
UserStyleSettings
gerarchico e da Android T ora è possibile avere più di unComplicationSlotsUserStyleSetting
in una gerarchia. Verrà attivato 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
a disposizione degli editor. Verrà ignorato dagli editor companion sui dispositivi precedenti ad Android T. (I75326) - Da Android T, sono ora supportati più
ComplicationSlotsUserStyleSettings
in una gerarchia di stili, purché ne sia attiva una sola alla volta. Abbiamo aggiunto una funzione di utilitàfindComplicationSlotsOptionForUserStyle
aUserStyleSchema
per aiutarti a trovare l'eventualeComplicationSlotsOption
attivo. (Ic2b06) RangedValuesTypes
è stato inserito 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
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha04
. La versione 1.2.0-alpha04 contiene questi commit.
Nuove funzionalità
- Per Android T abbiamo aggiunto il supporto per due nuovi tipi di complicazioni,
GoalProgressComplicationData
eWeightedElementsComplicationData
. GoalProgressComplicationData
è simile aRangedValueComplicationData
, ma il suo valore può superare il target (perRangedValueComplicationData
, il valore è bloccato nell'intervallo [min .. max]), il che influisce sul design visivo e potrebbe non essere adatto a tutti i quadranti.GoalProgressComplicationData
aggiunge il supporto per grafici a torta e analisi 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 provider di controllare se una complicazione è persistente o meno (ad esempio se viene memorizzata nella cache dopo il riavvio). La maggior parte delle complicazioni non dovrà impostare il controllo della cache, ma ciò consente di risolvere i casi d'angolo con dati inattivi per alcune complicazioni che vengono aggiornate di frequente (ad esempio, complicazioni dei dati sanitari). Abbiamo anche aggiuntoComplicationDisplayPolicy
in cuiDO_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 dispone diDeprecationLevel.WARNING
che consente di richiamare nuovamente da Java. (Ib308c) - Abbiamo risolto alcuni problemi di compatibilità Java con
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
eInteractiveWatchFaceClient
aggiungendo@JvmDefaultWithCompatibility
(Id94fc) - Abbiamo rimosso le app sperimentali
ProtoLayoutComplicationData
eListComplicationData
. La storia degli sviluppatori relativa a questi prodotti non era chiara, speriamo di rivederli 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 uguale e hash. Assicurati cheonRenderParametersChanged
riceva un valoreisForScreenshot
corretto (I04a41) - Risolte le fughe di notizie di
WatchFaceControlService
da parte di client headless. (E90e00)
Versione 1.2.0-alpha03
5 ottobre 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha03
. 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 alle API
- Ritirato
UserStyleSchema.userStyleSettings
in quantorootUserStyleSettings
diventa non sperimentale (Ie96e3) - Sposta
rootUserStyleSettings
dalla fase sperimentale (I8d6b3) - Abbiamo contrassegnato
WatchFaceColors
come sperimentale perché non è supportato da tutti i sistemi (I6d75d) - Esponi
DisconnectReasons
nell'API pubblica per farla funzionare conIntDef
. (I791f8)
Correzioni di bug
- Chiudi tutte le sezioni aperte sull'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 eventuali modifiche dello stile utente.(ba762a - È stato corretto un problema di perdita di memoria in
ComplicationDataSourceInfoRetriever
, in cui una continuazione di cotlin coroutine fungeva da radice gc e conservava l'attività dell'editor.(33ee06)
Versione 1.2.0-alpha02
21 settembre 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha02
. La versione 1.2.0-alpha02 contiene questi commit.
Nuove funzionalità
Alcuni quadranti hanno una configurazione esterna a
UserStyle
che ne influisce visivamente (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 questa operazione richiede una data di aggiornamento del sistema corrispondente per funzionare.Abbiamo anche aggiunto un'API per i quadranti per mostrarne i colori al sistema, che potrebbe scegliere la tavolozza dei colori in base a questi dati. Tieni presente che questa funzionalità è stata sperimentale in una patch successiva.
Ora quasi tutti i tipi di
ComplicationData
supportanoSmallImages
.
Modifiche alle API
- A volte Gestione sfondi può staccarsi da un motore e crearne un altro. Abbiamo aggiunto un valore int def
DisconnectReason
ed estesoClientDisconnectListener
con un nuovo metodo che include unDisconnectReason
, consentendo al listener di osservare i 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
, che è utile per i quadranti il cui stato è esterno aUserStyleSchema
e che ne influisce sull'aspetto (ad es. 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 l'esposizione di
WatchFaceColors
, ora è disponibile una semplice proprietà chiamatawatchFaceColors
sul renderer che può essere impostata dal quadrante, che dovrebbe essere aggiornata secondo 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 del quadrante più in evidenza e abbiamo aggiunto metodi apertiwatchfaceColors
enotifyWatchFaceColorsChanged
al renderer, questo consente 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 unSmallImage
multicolore dove in precedenza avrebbe dovuto utilizzare un'immagine monocromatica. (I257df)- Esegui il refactoring di
PreviewImageUpdateRequestedListener
in modo che siaConsumer<>
(Ia875d) - Sostituisci il tipo SAM (Single Abstract Method) personalizzato
OnWatchfaceColorsListener
con un tipo SAM Java generico (Consumer) (I0c489) - Abbiamo ritirato i metodi
getOrCreateInteractiveWatchFaceClient
elistenableGetOrCreateInteractiveWatchFaceClient
precedenti 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
Viene rilasciato androidx.wear.watchface:watchface-*:1.2.0-alpha01
. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
- Abbiamo aggiunto un supporto sperimentale per vari nuovi formati di complicazioni. Questa è un'area di sviluppo attivo; questi nuovi formati sono soggetti a modifiche senza preavviso e al momento
CanvasComplicationDrawable
non supporta i renderer. - Abbiamo anche aggiunto margini facoltativi agli spazi per le complicazioni in modo da semplificare il controllo delle complicazioni.
Modifiche alle API
- Il corso sperimentale
BoundingArc
è ora immutabile. (If624a) - Può essere difficile individuare piccole complicazioni. Per limitare questo problema, abbiamo introdotto il supporto dei margini che aumentano l'area toccabile senza influire sul rendering. Se non specificato (nel codice o tramite XML), i margini di
ComplciationSlots
sono pari a zero. (I14089) - La firma
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
è stata modificata per restituire un'istanza di fabbrica con valore diverso da null. È stato un errore restituire un valore null in precedenza, quindi questo rende più chiaro il contratto API. (I0fcc0) - Abbiamo aggiunto l'argomento
currentUserStyleRepository
al metodoWatchFaceService.getComplicationSlotInflationFactory
per garantire la coerenza concreateComplicationSlotsManager
. (I2ddd2). UserStyleFlavors
sono diventate una funzionalità non sperimentale. (I69cdc)- Abbiamo rimosso il campo sperimentale
ValueType
daRangedValueComplicationData
e introdotto invece l'esperimentoDiscreteRangedValueComplicationData
sperimentale, che è simile aRangedValueComplicationData
, tranne per l'intervallo di numeri interi e valore. Abbiamo anche introdotto l'esperimentoGoalProgressComplicationData
sperimentale, che è simile aRangedValueComplicationData
, tranne che per l'avanzamento 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 elemento monochromeImage, testo o titolo. (I9590c) - Abbiamo rimosso
boundsWithMargins
daComplicationSlotState
perché il software di sistema non ha un caso d'uso corrispondente. (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 grafici potrebbero essere mostrati sotto forma di grafico a torta in cui i colori devono essere significativi in base al contesto, poiché in genere non c'è spazio per la complicazione del rendering delle etichette. (I87eea) - La versione sperimentale
ColorRamps
, utilizzata facoltativamente daRangedValueComplicationData
eGoalProgressComplicationData
, ora consente di specificare una sequenza di massimo sette colori e una bandiera che indica se i colori devono essere interconnessi in modo uniforme o se devono essere visualizzati passaggi di colore a tinta unita di uguali dimensioni. (I9f5bf) - Il valore
RangedValueComplicationData.drawSegmented
è stato modificato invalueType
, un valore intero conValueType IntDef
corrispondente che fornisce il significato semantico al valore variato e può essere utilizzato dal renderer della complicazione per influenzare lo stile. (I0616b) - Abbiamo aggiunto il supporto sperimentale per il campo facoltativo
ColorRanges
inRangedValueComplicationData
. Di solito 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 es. da rosso a blu per la temperatura. (I5153a) - Abbiamo aggiunto un suggerimento sperimentale
drawSegmented
aRangedValueComplicationData
. Questo indica ai renderer di disegnare l'indicatore del valore con intervallo di date 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 predefinito dello schermo. (I0985d)
Versione 1.1
Versione 1.1.1
10 agosto 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.1
. La versione 1.1.1 contiene questi commit.
- Questa è una release per la correzione di un bug e consigliamo vivamente agli utenti della versione 1.1.0 di eseguire l'upgrade.
Correzioni di bug
L'inizializzazione del quadrante è asincrona e, se viene ricevuta una complicazione prima che il quadrante sia pronto, viene inserito nell'elenco
pendingInitialComplications
e applicata in un secondo momento. PurtroppopendingInitialComplications
è stato applicato troppo presto, il che significa che c'è stato un periodo di tempo durante l'inizializzazione del quadrante per cui le complicazioni venivano comunque applicatependingInitialComplications
e potrebbero essere ignorate. Il problema ora è stato risolto. Inoltre, questa patch corregge un bug per cuiComplicationRenderer
tentava erroneamente di caricare i segnaposto in modo asincrono. Non è stato quindi possibile aggiornare la grafica della compilation. Infine, questa patch corregge un bug, possibilmente teorico, per cui è necessario unire più elementipendingInitialComplications
. (0d03ba3)È stato risolto il problema della potenziale situazione di stallo in
InteractiveInstanceManager
in cuigetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
ha tenuto la serratura più a lungo del necessario. Di solito ci aspettiamo cheengine.setUserStyle
sia veloce, ma se per qualche motivo non lo fosse, potremmo avere un deadlock/ANR. Questa patch rimuove il lavoro non necessario dalla serratura, eliminando la possibilità di un deadlock.(5a2adca)Risolvi diversi problemi che hanno mantenuto
WatchFaceService
. A volte WakeLock può conservareWatchFaceService
e l'aggiunta di una chiamatarelease()
risolve il problema. Inoltre,StateFlows
può conservareWatchFaceService
, annullando le correzioniCoroutineScopes
sottostanti.(fd48138)Aggiungi timeout a
awaitDeferredWatchFace
* e correggiwatchfaceOverlayStyle
NullPointerException
. In circostanze normali, questo non dovrebbe scadere, ad esempio dopo una nuova installazione e in casi diDirectBoot
in cui il carico della CPU è elevato. Abbiamo anche corretto un problema non legato ai casi in cuigetWatchfaceOverlayStyle
viene chiamato dopoclose()
.(a4c3a5a)
Versione 1.1.0
15 giugno 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0
. 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 definire una gerarchia di stili nelle interfacce utente degli editor. Ora puoi specificare icone separate da utilizzare nell'editor del quadrante e dell'editor companion.
- È disponibile il supporto per l'attivazione di 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 gli stili delle "versioni", una selezione curata di stili che saranno visibili nell'editor companion.
- Quando si caricano due istanze del quadrante, ora è possibile condividere le risorse risparmiando memoria
- Quando scegli una complicazione nell'editor dei quadranti, ora è preselezionato il fornitore attuale.
Complicazioni migliorate:
- Ora puoi specificare
ComplicationType
per le origini dati principali e secondarie, in modo da offrire agli sviluppatori una maggiore flessibilità per l'esperienza immediata. - Abbiamo aggiunto
ComplicationDataTimeline
, che fornisce una sequenza di dati con limitazioni temporali da inviare al quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi in diversi orari o più eventi nel calendario imminenti. - Il
ComponentName
del fornitore di complicazioni fa parte diComplicationData
. - Ora le complicazioni vengono memorizzate nella cache, il che offre un'esperienza migliore quando passi da un quadrante all'altro.
Altre modifiche:
- Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. Ciò semplifica la costruzione del quadrante e consente di eseguire più rapidamente le query sui metadati dal sistema. - Ora i quadranti possono influire sui colori utilizzati per il rendering dell'overlay di sistema.
Versione 1.1.0-rc01
18 maggio 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-rc01
. La versione 1.1.0-rc01 contiene questi commit.
Nuove funzionalità
- Abbiamo apportato alcune modifiche all'usabilità al supporto XML dei quadranti, semplificando la specifica di
ComplicationSlotBounds
e i riferimenti di supporto. La sperimentazione con la complicanza per i bordiBoundingArc
continua e la esegue fino adrawHighlight
, sebbene l'uso non sia consigliato in quel momento.
Modifiche alle API
- Abbiamo aggiunto un sovraccarico sperimentale di
drawHighlight
che accetta un parametroBoundingArc
. (I705f8) - Il file XML del quadrante ora supporta i riferimenti delle risorse. Ti consente di utilizzare le stesse costanti sia in XML che 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 (ad es. 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, in quantoBaseEditorSession.close
è asincrono, è che rilasciamoComplicationDataSourceInfoRetriever
troppo tardi, causando un avviso di spam in logcat. Probabilmente si tratta di una soluzione innocua, ma lo spam logcat è una distrazione e va evitato.(35a5308)
Versione 1.1.0-beta02
11 maggio 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-beta02
. La versione 1.1.0-beta02 contiene questi commit.
Nuove funzionalità
- Abbiamo aggiunto un 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 per la complicazione dei bordi. Questo elemento è stato aggiunto aComplicationSlot
e trasferito aComplicationSlotState
eWatchFaceMetadataClient
. (I61a40) - Abbiamo aggiunto la possibilità di ereditare le impostazioni nel file XML
UserStyleSetting
. Consente 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 è disponibile il supporto del rendering per nessuno di questi tipi e WearOS non li riconosce al momento se viene aggiunto a un file manifest diComplicationDataSource's
. (I1811c)
Correzioni di bug
- Correggi la serializzazione del tipo
TimeLineEntry
. Non stavamo serializzando il tipoTimeLineEntry
, il che significava cheTimeLineEntries
memorizzato nella cache di tipo NoData veniva interpretato erroneamente come avente il tipo di complicazione padre che porta a NPE quando si accedeva a campi obbligatori inesistenti. (55ffdf5). - Correzione di un bug per cui
setComplicationData
eliminava campi della sequenza temporale(fb392f5) - Corregge un bug per cui molto occasionalmente
runBlockingWithTracing
generava un NPE(12ca62e) - Corregge un bug per cui a volte riceviamo
ClassNotFoundException: android.support.wearable.complications.ComplicationText
durante la ricezione di una complicazione.(217942d9) - Corregge un bug in
GlesRenderer.backgroundThreadInitInternal
per cui chiamavaonBackgroundThreadGlContextCreated
solo seEGL14.eglCreateContext
è stato chiamato. Corregge un altro bug in cui si verificava un glitch visivo nello screenshot causato daverticalFlip
.(c674ad2) - È stato corretto il controllo della versione XML di
WatchFaceService
, che era in fase di caricamento dal pacchetto sbagliato.(dfa06f3) - Il formato del cavo segnaposto ora utilizza un bundle interno. Non vogliamo che i segnaposto violino i quadranti esistenti che potrebbero utilizzare il tipo di dati 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 quadranti vecchi rendevano la stringa segnaposto non prevista). Ora invece utilizziamo un bundle interno per isolare completamente questa funzionalità.(d5e7bd2)
Versione 1.1.0-beta01
20 aprile 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-beta01
. La versione 1.1.0-beta01 contiene questi commit.
Modifiche alle API
- Ora i metodi
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) eHeadlessWatchFaceClient.getUserStyleFlavors
generano un RuntimeEccezioni deselezionato invece diWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
è stato spostato fuori dal corso per consentirne il riutilizzo. (I4e869).
Correzioni di bug
WatchFaceMetadataClient
non avrà più un arresto anomalo dopo l'invio parziale diComplicationSlotBounds
.(Iaafd)
Versione 1.1.0-alpha05
6 aprile 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-alpha05
. 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 utilizzarla per personalizzare la visualizzazione delle complicazioni. (I44a73)
Modifiche alle API
Renderer.CanvasRenderer
eRenderer.GlesRenderer
sono stati deprecati a favore diRenderer.CanvasRenderer2
eRenderer.GlesRenderer2
, che supportanoSharedAssets
, passati ai metodi di rendering. Per l'interoperabilità Java abbiamo introdottoListenableCanvasRenderer2
eListenableGlesRenderer2
. (I31ffa)- Aggiunta dell'opzione
@WatchFaceFlavorsExperimental
per definire i gusti: elenco preconfigurato di quadranti con stili (I04dd0) Renderer.sharedAssets
ora è uno StateFlow e abbiamo rimosso ilRenderer.SharedAssetsFactory
inutilizzato (I12ac5)UserStyleSchema.userStyleSettings
non è più deprecato (Iba7e3)- Abbiamo aggiunto
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
che consente a unHeadlessWatchFaceClient
di evitare l'overhead relativamente basso derivante dal passaggio dello schema tramite AIDL prima di calcolare l'hash digest. (I33597) - Abbiamo aggiunto
isUserStyleSchemaStatic
aWatchFaceMetadataClient
che si verifica solo se è possibile fare affidamento suUserStyleSchema
per non apportare modifiche, a meno che l'APK del quadrante non venga aggiornato. (I45a3f). - Abbiamo aggiunto
getDigestHash
aUserStyleSchema
, che calcola un hash digest dello schema. Può essere utilizzato per determinare in modo efficiente se il valoreUserStyleSchema
è 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 dei quadranti orologio. (If3afb)
Versione 1.1.0-alpha04
9 marzo 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-alpha04
. La versione 1.1.0-alpha04 contiene questi commit.
Modifiche alle API
- La versione aggiornata di
ComplicationData
potrebbe non essere sempre disponibile (ad es. ComplicationData scaduta nella cache), quindi 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, si suggerisce il rendering di questi segnaposto con caselle/archi grigi. (I6285d) - Abbiamo aggiunto
ComplicationData.getNextChangeInstant
che ti segnala il successivo istantaneo dopo il riferimento istantaneo in cui qualsiasi campo della complicazione potrebbe cambiare. Questo viene utilizzato internamente per pianificare i frame per gli aggiornamenti delle complicazioni. Ad es. se un quadrante normalmente si aggiorna una volta al minuto, l'impostazione della complicazione del cronometro fa sì che si aggiorni una volta al secondo. (I7ceb2) - Ora è possibile utilizzare
EditorSession.watchFaceId
su tutti i livelli API. Inoltre, il suo valore sarà ora 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 speciale affinchéPendingIntents
si attivi, anche se di recente è stato premuto il pulsante Home. (I1f2e8) - Abbiamo aggiunto
RendererParameters.isForScreenShot
che sarà vero se il rendering riguarda uno screenshot. Alcuni quadranti con animazioni devono saperlo per poter apportare modifiche e ottenere risultati ottimali. (I96d99) - Abbiamo aggiunto
WatchFaceExceptionReason
aWatchFaceException
per fornire un po' di contesto a ciò che non ha funzionato. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
è stato rimosso, ma è stato aggiuntoComplicationRequest.immediateResponseRequired
per segnalare che il provider deve rispondere rapidamente (idealmente che risponda entro 100 ms). Tieni presente che questa funzionalità è protetta dall'autorizzazione con privilegicom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
. (Ie6b23).- Nulla aggiornato nel core e appcompat per corrispondere a Tiramisu DP2 (I0cbb7)
Correzioni di bug
- Ora l'app del quadrante ha un arresto anomalo, con un'eccezione se la convalida dello schema non va a buon fine (Ia400f).
Versione 1.1.0-alpha03
9 febbraio 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-alpha03
. La versione 1.1.0-alpha03 contiene questi commit.
Modifiche alle API
- Abbiamo aggiunto il supporto sperimentale per gli schemi di stile gerarchico. Abbiamo aggiunto una nuova proprietà a
androidx.wear.watchface.style.UserStyleSetting.Option
, figlioSettings, che inizialmente è utilizzata solo daListOption
. In questo modo, è possibile descrivere una gerarchia di stili per l'utilizzo da parte delle UI di Editor, lo UserStyle sottostante non ha subito modifiche 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 costruttore facoltativo perCanvasRenderer
(il valore predefinito è false). Se impostato su true, il canvas verrà cancellato con il colore della tinta dello sfondo. (Ie01e5). - Aggiunta della chiave dei metadati
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
che consente alle origini dati per le complicazioni di indicare che possono fornire un valore predefinito senza alcuna configurazione (Icc0d4) - È normale che, quando modifichi un quadrante, ci siano sia un'istanza interattiva sia un'istanza headless. Per aiutarti a risparmiare memoria, abbiamo introdotto
Renderer.SharedAssets
, che consente a un renderer del quadrante di condividere dati immutabili (ad esempio, texture e tonalità) tra le istanze.GlesRenderer.setEglConfig
eGlesRenderer.setEglDisplay
sono deprecati, non è mai stato previsto che fossero configurabili e questo avrebbe comportato un comportamento indefinito. (I0d9e7). - Abbiamo aggiunto
setNameResourceId
esetScreenReaderNameResourceId
(che fanno riferimento alle risorse stringa) aComplicationSlot.Builder
e ai getter corrispondenti inandroidx.wear.watchface.client.ComplicationSlotState
. Consente al sistema di recuperare i nomi di ComplicationSlots da utilizzare negli editor e negli screen reader. (If6c6a). WatchfaceMetadataClient.getUserStyleSchema
egetComplicationSlotMetadataMap
ora lancianoWatchFaceException
anzichéRemoteException
. (I86f11)onSynchronousComplicationRequest
e le funzioni correlate inComplicationDataSourceService
sono stati rinominati inonImmediateComplicationRequest
e così via... (I87ba0)- Gli editor dei quadranti hanno meno spazio sullo schermo rispetto agli editor companion, quindi ha senso supportare icone diverse per gli editor dei quadranti. Questa patch aggiunge
OnWatchEditorData
(al momento contiene solo un'icona) a tutte le UserStyleSettings e, ove appropriato, alle relative classi di opzione. (If1886) - Abbiamo aggiunto
@JvmOverloads
al costruttore di ListenableGlesRenderer per migliorare l'interoperabilità Java. (I2974a)
Correzioni di bug
- Il costruttore di
ListenableGlesRenderer
è ora contrassegnato correttamente come@Throws(GlesException::class)
ed è ora possibile estendere questa classe in Java. (Iac6d0) - Corregge il bug relativo a
PhotoImageComplicationData
tapAction non la corretta gestione (I1cc30)
Versione 1.1.0-alpha02
12 gennaio 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-alpha02
. La versione 1.1.0-alpha02 contiene questi commit.
Nuove funzionalità
- Per facilitare il debug e i test,
ComplicationData
e le relative sottoclassi ora hanno eseguito l'override dei metodi hashcode, equals e toString, semplificando l'utilizzo.
Modifiche alle API
- I metodi
WatchfaceMetadataClient
restituiscono di nuovoRemoteExceptions
quando appropriato, consentendo al codice client di rilevare più facilmente gli errori dal quadrante. (I78785) ComplicationData
e le classi secondarie ora hanno hashcode, equals e toString. (I24bc6)
Versione 1.1.0-alpha01
15 dicembre 2021
Viene rilasciato androidx.wear.watchface:watchface-*:1.1.0-alpha01
. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
Ora
UserStyleSchema
eComplicationSlots
possono essere definiti in XML. Ciò semplifica la costruzione del quadrante. Inoltre, le queryWatchFaceMetadataClient
sono più veloci perché non è necessario associarsi al servizio per ottenere i metadati.WatchFaceMetadataClient
eListenableWatchFaceMetadataClient
non sono più sperimentali e faranno 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 dei metadati dei dati 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
.È ora in corso la cache di
ComplicationData
per consentire la visualizzazione delle complicazioni subito dopo il caricamento. A volteComplicationData
viene memorizzato nella memoria dal sistema e talvolta viene serializzato dalle librerie dei quadranti. Se serializzata, qualsiasi tapAction associata andrà persa. In questo caso,ComplicationData.tapActionLostDueToSerialization
restituiràtrue
e il quadrante dovrebbe visualizzare la complicazione in modo diverso (ad esempio non selezionabile o semitrasparente) per segnalare che non è possibile toccarla. Il sistema invierà l'elementoComplicationData
aggiornato con untapAction
il prima possibile.Alcuni
ComplicationData
non dovrebbero essere memorizzati nella cache per molto tempo e abbiamo aggiunto una funzionalità più genericaComplicationDataTimeline
a supporto di questa modifica. Questa funzionalità può essere utilizzata per fornire una sequenza diComplicationData
con intervallo di tempo da consegnare sul quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi in diversi orari o più eventi nel calendario imminenti.ComplicationRequestListener
è stato esteso con un nuovo metodoonComplicationDataTimeline
che puoi usare per restituire questi dati.DefaultComplicationDataSourcePolicy
è stato esteso in modo che tu possa specificare il valoreComplicationType
per le origini dati principali e secondarie.Abbiamo 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 all'interno dell'ambiente. Nota: i fornitori 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 base (il quadrante non può avviare attività per 5 secondi dopo la pressione del pulsante Home) nel framework.
Modifiche alle API
- Il campo
ComplicationData.isCached
è stato modificato intapActionLostDueToSerialization
, 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
. Questa funzionalità può essere utilizzata per fornire una sequenza diComplicationData
con intervallo di tempo da consegnare sul quadrante, che può essere memorizzata nella cache e aggiornata automaticamente. Ad esempio, le previsioni meteo di oggi in diversi orari o più eventi nel calendario imminenti.ComplicationRequestListener
è stato esteso con un nuovo metodoonComplicationDataTimeline
che puoi usare per restituire questi dati. È disponibile un nuovo wrapper kotlinSuspendingTimelineComplicationDataSourceService
per la sospensione dei servizi dell'origine dati. (Idecdc) PendingIntentTapListener
eWatchFaceControlClient.getPendingIntentForTouchEvent
aggiunti. Questo può aiutare i quadranti che devono avviare intent in risposta ai tocchi per aggirare un problema in cui il framework blocca l'avvio di nuove attività per 5 secondi dopo la pressione del pulsante Home. (I98074)- È stata introdotta una cache
ComplicationData
per quadrante. Lo scopo è consentire al quadrante di visualizzare i valori degli ultimi dati relativi alle complicazioni note al momento del caricamento, fino a quando il sistema non ha avuto la possibilità di aggiornarli. È disponibile un nuovo metodo APIWatchFaceControlClient.hasComplicationCache
destinato agli OEM. Ciò potrebbe influenzare la strategia del sistema per l'invio di complicazioni a un quadrante. Inoltre,ComplicationData
ha una proprietàisCached
e si consiglia di eseguire il rendering delle complicazioni memorizzate nella cache in modo diverso perchétapAction
non può essere memorizzato nella cache. Il risultato sarànull
in una complicazione memorizzata nella cache. (I404b0) - L'ID istanza del quadrante è ora disponibile tramite
WatchState.watchFaceInstanceId
. Questa opzione non è necessaria per la maggior parte dei quadranti, ma se uno stato per quadrante non è memorizzato nello schema, questa è la chiave da utilizzare per identificare l'istanza del quadrante. A questo scopo, ora puoi fornire un ID quando chiami il numeroWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) DefaultComplicationDataSourcePolicy
esteso con la possibilità di impostare il valoreComplicationTypes
predefinito per il fornitore principale, secondario e per il fornitore del sistema di riserva.ComplicationSlot.defaultDataSourceType
è deprecato. (If0ce3).- Ora
ComplicationSlot.configExtras
è modificabile e può essere aggiornato prima di chiamareEditorSession.openComplicationDataSourceChooser()
. (I6f852). WatchFace.setComplicationDeniedDialogIntent
esetComplicationRationaleDialogIntent
aggiunti. Questi intent vengono lanciati per mostrare una finestra di dialogo giustificativa prima di richiedere le autorizzazioni della complicazione e un'altra finestra di dialogo che spiega che è necessaria l'autorizzazione per la complicazione quando si cerca di 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. Ciò semplifica la creazione dei quadranti e rende più veloci le query diWatchFaceMetadataClient
, in quanto non è necessario associarsi al servizio per ottenere i metadati. (I85bfa) - È stato aggiunto
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
per consentire al client di determinare se un quadrante supportagetPendingIntentForTouchEvent
. (I0b917). WatchFaceMetadataClient
eListenableWatchFaceMetadataClient
non sono più sperimentali. Possono essere utilizzati per ottenere in modo efficiente i metadati del quadrante, ove possibile senza aprire un raccoglitore sul 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 è all'interno dell'ambiente. Per utilizzarlo, il provider 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 relative al momento in cui la complicazione entra ed esce dalla modalità interattiva. (I8fe9d)
Versione 1.0
Versione 1.0.1
9 febbraio 2022
Viene rilasciato androidx.wear.watchface:watchface-*:1.0.1
. La versione 1.0.1 contiene questi commit.
Correzioni di bug
- Corregge il bug relativo a
PhotoImageComplicationData
tapAction non la corretta gestione (I1cc30)
Versione 1.0.0
1 dicembre 2021
Viene rilasciato androidx.wear.watchface:watchface-*:1.0.0
. La versione 1.0.0 contiene questi commit.
Funzionalità principali di 1.0.0
Il pacchetto androidx.wear.watchface
è la nuova libreria consigliata per lo sviluppo di quadranti WearOS. Ha una serie di nuove funzionalità rispetto alla vecchia libreria di supporto per gli indossabili.
- Gli stili utente (ad es. per modificare la tavolozza dei colori, lo stile delle lancette dell'orologio, l'aspetto dei segni delle ore e così via) sono supportati direttamente dalla libreria (vedi
androidx.wear.watchface.style
). Ora è molto più facile sviluppare un editor sui quadranti utilizzando androidx.wear.watchface.editor e il quadrante può essere modificato dall'app complementare di sistema senza dover scrivere altro codice. - Best practice integrate. La raccolta genera automaticamente le etichette dei contenuti dello screen reader per le complicazioni (puoi anche aggiungere le tue) e la frequenza fotogrammi si riduce automaticamente quando la batteria è in esaurimento e non in carica per aumentarne la durata.
- È necessario meno codice per sviluppare un quadrante, soprattutto in caso di complicazioni in cui gran parte del boilerplate è stato spostato nella libreria.
Correzioni di bug
- Correggi
EditorSession.userStyle.compareAndSet
(I6f676) - Risolvere ritardi molto brevi per i quadranti (Iffb97)
- Invia
InteractiveWatchFaceImpl.onDestroy
nel thread dell'interfaccia utente (I83340) - Risolvere diversi problemi relativi ai broadcast receiver (I7d25f)
Versione 1.0.0-rc01
3 novembre 2021
Viene rilasciato androidx.wear.watchface:watchface-*:1.0.0-rc01
. La versione 1.0.0-rc01 contiene questi commit.
Correzioni di bug
Correggi dump() (chiamato dalla shell adb dumpsys) che si è interrotto dalle migrazioni del flusso. (087cf9e)
Assicurati che l'ordine corretto di writeDirectBootPrefs sia corretto. Vogliamo che i valori writeDirectBootPref vengano eseguiti sempre dopo initStyleAndComplications o rischiamo di ritardare l'init del thread dell'interfaccia utente (37650ac)
Assicurati che venga chiamato Renderer.onDestroy. Nello scenario in cui il renderer è stato creato, ma l'init WF non è stato completato e viene chiamato Engine.onDestroy, dobbiamo chiamare Renderer.onDestroy. (f9952dc)
Ottimizzazione/correzione a isBatteryLowAndNotCharging. Questa patch anticipa la configurazione iniziale di isBatteryLowAndNotCharging, perciò può essere eseguita in parallelo createWatchFace. Inoltre, ora ascoltiamo ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive sia false dopo la chiusura (ab9774e)
Versione 1.0.0-beta01
27 ottobre 2021
Viene rilasciato androidx.wear.watchface:watchface-*:1.0.0-beta01
. La versione 1.0.0-beta01 contiene questi commit.
Versione 1.0.0-alpha24
13 ottobre 2021
Viene rilasciato androidx.wear.watchface:watchface-*:1.0.0-alpha24
. 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 insieme a 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 ListenableEditorSessiongetListenableComplicationPreviewData
egetListenableComplicationsProviderInfo
sono stati rimossi a favore dei nuovi oggettiStateFlow<>
dalla classe base. Se devi ascoltare le modifiche nel codice Java, valuta la possibilità di utilizzareandroidx.lifecycle.FlowLiveDataConversions.asLiveData
per convertirlo inLiveData<>
. (Ic5483)
Versione 1.0.0-alpha23
29 settembre 2021
Viene rilasciato androidx.wear.watchface:watchface-*:1.0.0-alpha23
. La versione 1.0.0-alpha23 contiene questi commit.
Nuove funzionalità
La libreria dei quadranti ora è un singolo gruppo di librerie e, di conseguenza, le librerie sono state spostate. Dovrai aggiornare le importazioni 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 alle API
- Esegui la migrazione delle raccolte separate dei quadranti
androidx.wear
e delle complicazioni nel gruppo di raccolteandroidx.wear.watchface
. (b25f3c0). - È stato aggiunto EditorRequest.canWatchFaceSupportHeadlessEditing per comunicare al cliente se un editor dei quadranti supporta l'editing headless. Tieni presente che ci saranno alcuni falsi negativi con questo perché il supporto è stato aggiunto in asop/1756809, ma restituirà il valore corretto per tutti i quadranti futuri. (55590 circa)
- Il renderer ora ha un metodo dump() che può essere sottoposto a override per aggiungere dati personalizzati alle informazioni generate dal servizio attività dumpsys della shell di ABD WatchFaceService. (95235f9)
- Ora InteractiveWatchFaceClient.addWatchFaceReadyListener 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 opzione è necessaria per garantire che InteractiveWatchFaceImpl venga sottoposto alla garbage collection.(fce4af8, b/199485839)