Tampilan Jam Wear
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
15 Juni 2022 | 1.1.0 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Wear, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi aplikasi atau modul Anda:
Groovy
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.1.0" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.1.0" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.1.0" // 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.1.0" }
Kotlin
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.1.0") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.1.0" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.1.0") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0" }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.1
Versi 1.1.0
15 Juni 2022
androidx.wear.watchface:watchface-*:1.1.0
dirilis. Versi 1.1.0 berisi commit ini.
Perubahan penting sejak versi 1.0.0
Peningkatan Pengeditan:
- Kami menambahkan dukungan untuk skema hierarkis, yang memungkinkan hierarki gaya ditulis oleh UI editor. Anda kini dapat menentukan ikon terpisah untuk digunakan di editor tampilan jam dan pendamping.
- Ada dukungan keikutsertaan untuk beberapa instance tampilan jam, setiap instance memiliki ID unik yang tersedia di semua platform API.
- Anda kini dapat menentukan nama yang dapat dibaca manusia untuk
ComplicationSlots
agar dapat digunakan di editor. - Dukungan eksperimental untuk menata gaya “ragam”, serangkaian gaya pilihan yang akan terlihat dari editor pendamping.
- Saat pengeditan dua instance tampilan jam dimuat, kini instance tampilan jam dapat berbagi resource sehingga menghemat memori
- Saat memilih detail di editor tampilan jam, penyedia saat ini telah dipilih sebelumnya.
Peningkatan Detail:
- Anda kini dapat menentukan
ComplicationType
untuk sumber data utama dan sekunder, yang memberi developer lebih banyak fleksibilitas untuk pengalaman langsung. - Kami menambahkan
ComplicationDataTimeline
yang menyediakan urutan data yang dibatasi waktu agar dikirimkan ke tampilan jam yang dapat di-cache dan diupdate secara otomatis. Misalnya, perkiraan cuaca hari ini pada beberapa waktu atau beberapa acara kalender yang akan datang. ComponentName
penyedia detail adalah bagian dariComplicationData
.- Detail kini di-cache yang memberikan pengalaman yang lebih baik saat beralih antar-tampilan jam.
Perubahan lainnya:
UserStyleSchema
danComplicationSlots
sekarang dapat ditentukan dalam XML. Hal ini menyederhanakan konstruksi tampilan jam dan memungkinkan kueri metadata yang lebih cepat dari sistem.- Tampilan jam kini dapat memengaruhi warna yang digunakan untuk merender overlay sistem.
Versi 1.1.0-rc01
18 Mei 2022
androidx.wear.watchface:watchface-*:1.1.0-rc01
dirilis. Versi 1.1.0-rc01 berisi commit berikut ini.
Fitur Baru
- Kami telah membuat beberapa penyesuaian kegunaan untuk dukungan XML tampilan jam, sehingga mempermudah penentuan
ComplicationSlotBounds
dan referensi pendukung. Eksperimen dengan detail tepiBoundingArc
berlanjut, yang menuju kedrawHighlight
meskipun tidak direkomendasikan untuk digunakan pada saat itu.
Perubahan API
- Kami telah menambahkan overload
drawHighlight
eksperimental yang menerima parameterBoundingArc
. (I705f8) - XML tampilan jam kini mendukung referensi resource. Ini memungkinkan Anda menggunakan konstanta yang sama baik dalam XML maupun kode Anda. (I3ef61)
- Kami telah menambahkan kemampuan untuk menentukan
ComplicationSlotBounds
dalam bentukcenter_x
,center_y
,size_x
,size_y
. Sekarang Anda juga dapat menggunakan unit lain (yaitu dp) menggunakan referensi resource. (Iace98)
Perbaikan Bug
- Memperbaiki
runBlockingWithTracing
yang menjalankan tugas pada konteks yang salah. (4f595fe) - Menjadikan
BaseEditorSession.close
sinkron. Masalah terkaitBaseEditorSession.close
yang asinkron adalah kami merilisComplicationDataSourceInfoRetriever
terlalu lama yang menyebabkan spam peringatan di logcat. Ini mungkin tidak berbahaya tetapi spam logcat sangat mengganggu dan harus dihindari. (35a5308)
Versi 1.1.0-beta02
11 Mei 2022
androidx.wear.watchface:watchface-*:1.1.0-beta02
dirilis. Versi 1.1.0-beta02 berisi commit ini.
Fitur Baru
- Kami telah menambahkan dukungan eksperimental untuk jenis
ComplicationData
baru. Namun, dukungan ini belum siap digunakan, terus pantau halaman ini.
Perubahan API
- Kami telah menambahkan
BoundingArc
, class eksperimental yang menjelaskan geometri slot detail edge. class ini telah ditambahkan keComplicationSlot
dan ditambahkan keComplicationSlotState
danWatchFaceMetadataClient
. (I61a40) - Kami telah menambahkan kemampuan untuk mewarisi setelan dalam XML
UserStyleSetting
. Hal ini memungkinkan Anda mengurangi panjang dan berbagi setelan di antara tampilan jam. (Ief841) - Kami telah menambahkan dua jenis
ComplicationData
eksperimental baru:ListComplicationData
&ProtoLayoutComplicationData
. Saat ini, tidak ada dukungan rendering untuk salah satu jenis ini dan WearOS saat ini tidak mengenali jenis ini jika ditambahkan ke manifesComplicationDataSource's
. (I1811c)
Perbaikan Bug
- Memperbaiki serialisasi jenis
TimeLineEntry
. Kami tidak membuat serialisasi jenisTimeLineEntry
yang berarti NoData jenisTimeLineEntries
yang di-cache akan salah ditafsirkan sebagai memiliki jenis detail induk yang menyebabkan NPE saat kolom wajib diisi yang tidak ada diakses. (55ffdf5) - Memperbaiki bug ketika
setComplicationData
menghapus kolom linimasa (fb392f5) - Memperbaiki bug yang terkadang
runBlockingWithTracing
menyebabkan NPE (12ca62e) - Memperbaiki bug yang terkadang menyebabkan kami mendapatkan
ClassNotFoundException: android.support.wearable.complications.ComplicationText
saat menerima detail.(217942d9) - Memperbaiki bug di
GlesRenderer.backgroundThreadInitInternal
yang hanya memanggilonBackgroundThreadGlContextCreated
jikaEGL14.eglCreateContext
dipanggil. Memperbaiki bug lain saat ada gangguan visual dalam screenshot yang disebabkan olehverticalFlip
.(c674ad2) - Memperbaiki pemeriksaan versi XML
WatchFaceService
, yang dimuat dari paket yang salah.(dfa06f3) - Format kabel placeholder kini menggunakan paket dalam. Kami tidak ingin placeholder merusak tampilan jam yang ada dan mungkin menggunakan a.s.w.c.ComplicationData bagian dalam yang tersembunyi. Sebelumnya, format kabel untuk data
NoDataComplication
menyimpan placeholder di kolom biasa (bermasalah karena tampilan jam lama akan merender string placeholder yang tidak dimaksudkan), tetapi sekarang kami menggunakan paket dalam untuk sepenuhnya mengisolasi ini.(h5e7bd2)
Versi 1.1.0-beta01
20 April 2022
androidx.wear.watchface:watchface-*:1.1.0-beta01
dirilis. Versi 1.1.0-beta01 berisi commit berikut ini.
Perubahan API
- Metode
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) danHeadlessWatchFaceClient.getUserStyleFlavors
sekarang melempar RuntimeException yang tidak dicentang, bukanWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
telah dipindahkan ke luar class untuk memungkinkannya digunakan kembali. (I4e869)
Perbaikan Bug
WatchFaceMetadataClient
tidak akan lagi error saat mengirim sebagianComplicationSlotBounds
. (Iaafd)
Versi 1.1.0-alpha05
6 April 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha05
dirilis. Versi 1.1.0-alpha05 berisi commit berikut ini.
Fitur Baru
- Anda sekarang dapat mengetahui sumber data mana yang mengirim
ComplicationData
dengan memeriksaComplicationData.dataSource
, beberapa tampilan jam dapat menggunakan ini untuk menyesuaikan tampilan detail. (I44a73)
Perubahan API
Renderer.CanvasRenderer
danRenderer.GlesRenderer
tidak digunakan lagi dan digantikan denganRenderer.CanvasRenderer2
danRenderer.GlesRenderer2
yang mendukungSharedAssets
yang diteruskan ke metode render. Untuk interop java, kami telah memperkenalkanListenableCanvasRenderer2
danListenableGlesRenderer2
. (I31ffa)- Menambahkan kemampuan
@WatchFaceFlavorsExperimental
untuk menentukan ragam - daftar tampilan jam bergaya yang telah dikonfigurasi sebelumnya (I04dd0) Renderer.sharedAssets
kini menjadi StateFlow dan kami telah menghapusRenderer.SharedAssetsFactory
yang tidak digunakan (I12ac5)UserStyleSchema.userStyleSettings
digunakan lagi (Iba7e3)- Kami telah menambahkan
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
yang memungkinkanHeadlessWatchFaceClient
agar overhead yang relatif rendah tidak meneruskan skema melalui AIDL sebelum menghitung hash ringkasan. (I33597) - Kami telah menambahkan
isUserStyleSchemaStatic
keWatchFaceMetadataClient
yang benar jika dan hanya jikaUserStyleSchema
dapat diandalkan untuk tidak berubah, kecuali APK tampilan jam diperbarui. (I45a3f) - Kami telah menambahkan
getDigestHash
keUserStyleSchema
yang menghitung hash ringkasan dari skema. Ini dapat digunakan untuk menentukan secara efisien apakahUserStyleSchema
telah berubah. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
diganti namanya menjadiMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
(I9ba5d)UserStyleSetting.OnWatchEditorData
telah diganti namanya menjadiUserStyleSetting.WatchFaceEditorData
, yang berisi data yang hanya digunakan oleh editor tampilan jam. (If3afb)
Versi 1.1.0-alpha04
9 Maret 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha04
dirilis. Versi 1.1.0-alpha04 berisi commit ini.
Perubahan API
ComplicationData
terbaru mungkin tidak selalu tersedia (mis. ComplicationData dalam cache yang sudah tidak berlaku) sehingga kami memperluasNoDataComplication
dengan ComplicationData placeholder opsional dan menambahkanComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
yang hanya diizinkan untuk digunakan dalam konteks placeholderNoDataComplicationData
. Jika dipilih, placeholder ini disarankan untuk dirender dengan kotak/lengkungan abu-abu. (I6285d)- Kami telah menambahkan
ComplicationData.getNextChangeInstant
yang memberi tahu Anda Instant berikutnya setelah Instant referensi dengan kolom detail yang dapat berubah. Ini digunakan secara internal guna menjadwalkan frame untuk update detail. Mis. jika tampilan jam biasanya diperbarui sekali per menit, menyetel detail stopwatch akan menyebabkannya diperbarui sekali per detik. (I7ceb2) EditorSession.watchFaceId
sekarang dapat digunakan di semua API level. Selain itu, nilainya sekarang akan selalu konsisten denganWatchState.watchFaceInstanceId
. (I323b9)getPendingIntentForTouchEvent
API tidak lagi diperlukan karena masalah yang mendasarinya telah diperbaiki dalam framework, sehingga semua API terkait telah dihapus. Tampilan jam tidak perlu melakukan hal khusus untukPendingIntents
agar aktif, meskipun tombol layar utama baru saja ditekan. (I1f2e8)- Kami telah menambahkan
RendererParameters.isForScreenShot
yang akan bernilai benar jika render adalah untuk screenshot. Beberapa tampilan jam dengan animasi perlu mengetahui hal ini untuk melakukan penyesuaian guna memastikan hasil terbaik. (I96d99) - Kami telah menambahkan
WatchFaceExceptionReason
keWatchFaceException
untuk memberikan beberapa konteks terkait masalah yang terjadi. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
telah dihapus, sebagai gantinyaComplicationRequest.immediateResponseRequired
telah ditambahkan untuk menandakan bahwa penyedia harus merespons dengan cepat (idealnya merespons dalam < 100 md). Perlu diperhatikan bahwa fungsi ini dilindungi dengan izincom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
dengan hak istimewa. (Ie6b23)- Mengupdate nullability di core dan appcompat agar sesuai dengan Tiramisu DP2 (I0cbb7)
Perbaikan Bug
- Kini aplikasi tampilan jam mengalami error dengan pengecualian jika validasi skema gagal (Ia400f)
Versi 1.1.0-alpha03
9 Februari 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha03
dirilis. Versi 1.1.0-alpha03 berisi commit berikut ini.
Perubahan API
- Kami telah menambahkan dukungan eksperimental untuk skema gaya hierarkis. Kami telah menambahkan properti baru ke
androidx.wear.watchface.style.UserStyleSetting.Option
, ChildSettings yang awalnya hanya digunakan olehListOption
. Hal ini memungkinkan hierarki gaya dijelaskan untuk digunakan oleh UI Editor, UserStyle yang mendasarinya tidak berubah dan masih berupaMap<String, ByteArray>
. (Iaf6f4) - Kami telah menambahkan
WatchFace.OverlayStyle
yang memungkinkan tampilan jam mengonfigurasi rendering overlay status sistem. (I8520d) - Kami telah memperkenalkan
clearWithBackgroundTintBeforeRenderingHighlightLayer
, parameter konstruktor opsional baru untukCanvasRenderer
(default-nya adalah salah (false)). Jika parameternya disetel ke benar (true), kanvas akan dikosongkan dengan warna tint latar belakang. (Ie01e5) - Menambahkan kunci metadata
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
yang memungkinkan sumber data detail untuk menunjukkan bahwa kunci ini dapat memberikan nilai default tanpa konfigurasi apa pun (Icc0d4) - Tampilan jam umumnya diedit agar terdapat instance interaktif dan headless. Untuk membantu menghemat memori, kami telah memperkenalkan
Renderer.SharedAssets
yang memungkinkan perender tampilan jam membagikan data yang tidak dapat diubah (misalnya tekstur dan shader) di antara instance.GlesRenderer.setEglConfig
danGlesRenderer.setEglDisplay
tidak digunakan lagi. Keduanya tidak dimaksudkan agar dapat disetel, dengan menyetelnya akan menghasilkan perilaku yang tidak ditentukan. (I0d9e7) - Kami telah menambahkan
setNameResourceId
&setScreenReaderNameResourceId
(yang merujuk pada resource string) keComplicationSlot.Builder
dan pengambil yang sesuai diandroidx.wear.watchface.client.ComplicationSlotState
. Hal ini memungkinkan sistem mengambil nama ComplicationSlots untuk digunakan dalam editor dan pembaca layar. (If6c6a) WatchfaceMetadataClient.getUserStyleSchema
dangetComplicationSlotMetadataMap
kini melemparWatchFaceException
, bukanRemoteException
. (I86f11)onSynchronousComplicationRequest
dan fungsi terkait dalamComplicationDataSourceService
telah diganti namanya menjadionImmediateComplicationRequest
dll... (I87ba0)- Editor tampilan jam memiliki real estate layar yang jauh lebih sedikit dibandingkan editor pendamping sehingga akan lebih baik untuk mendukung berbagai ikon di editor tampilan jam. Patch ini menambahkan
OnWatchEditorData
(saat ini hanya berisi ikon) ke semua UserStyleSettings dan jika sesuai dengan class Option-nya. (If1886) - Kami telah menambahkan
@JvmOverloads
ke konstruktor ListenableGlesRenderer untuk interop java yang lebih baik. (I2974a)
Perbaikan Bug
- Konstruktor
ListenableGlesRenderer
kini ditandai dengan benar sebagai@Throws(GlesException::class)
, dan dapat memperluas class ini di java. (Iac6d0) - Memperbaiki bug dengan
PhotoImageComplicationData
tapAction yang tidak ditangani dengan benar (I1cc30)
Versi 1.1.0-alpha02
12 Januari 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha02
dirilis. Versi 1.1.0-alpha02 berisi commit ini.
Fitur Baru
- Untuk membantu proses debug dan pengujian,
ComplicationData
dan subclass terkait kini telah mengganti metode kode hash, sama dengan, dan toString, sehingga lebih mudah digunakan.
Perubahan API
- Metode
WatchfaceMetadataClient
sekali lagi menampilkanRemoteExceptions
jika sesuai, yang memudahkan kode klien untuk menemukan error dari tampilan jam. (I78785) ComplicationData
dan subclass kini memiliki kode hash, sama dengan, dan toString. (I24bc6)
Versi 1.1.0-alpha01
15 Desember 2021
androidx.wear.watchface:watchface-*:1.1.0-alpha01
dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Fitur Baru
UserStyleSchema
danComplicationSlots
sekarang dapat ditentukan dalam XML. Ini menyederhanakan konstruksi tampilan jam. Selain itu, kueriWatchFaceMetadataClient
lebih cepat karena tidak perlu terikat ke layanan untuk mendapatkan metadata.WatchFaceMetadataClient
danListenableWatchFaceMetadataClient
tidak lagi bersifat eksperimental dan akan menjadi bagian dari API stabil. Sistem dapat mendukung beberapa instance tampilan jam secara opsional, masing-masing dengan opsi gaya yang ditentukan pengguna secara berbeda. Ini akan terlihat di alat pilih tampilan jam. Untuk ikut serta dalam hal ini, tampilan jam harus menyertakan tag metadata berikut dalam manifesnya.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />
Beberapa tampilan jam memiliki status yang tidak ditangkap di
UserStyle
, untuk mendukung hal ini dan beberapa instance, ID instance tampilan jam kini tersedia melaluiWatchState.watchFaceInstanceId
.ComplicationData
sekarang di-cache untuk mengizinkan detail ditampilkan segera setelah dimuat. TerkadangComplicationData
di-cache dalam memori oleh sistem dan terkadang diserialkan oleh library tampilan jam. Saat diserialisasi, tapAction terkait akan hilang, jika ini terjadi,ComplicationData.tapActionLostDueToSerialization
akan menampilkantrue
dan tampilan jam akan merender detail secara berbeda (misalnya berwarna abu-abu atau semi-transparan) untuk menandakan bahwa itu tidak dapat diketuk. Sistem akan mengirimkanComplicationData
yang diperbarui dengantapAction
sesegera mungkin.Beberapa
ComplicationData
seharusnya tidak di-cache untuk waktu yang lama, untuk mendukung hal ini, kami telah menambahkan fiturComplicationDataTimeline
yang lebih umum. Ini dapat digunakan untuk menyediakan urutanComplicationData
yang dibatasi waktu agar dikirimkan ke tampilan jam yang dapat di-cache dan diupdate secara otomatis. Misalnya, perkiraan cuaca hari ini pada beberapa waktu atau beberapa acara kalender yang akan datang.ComplicationRequestListener
telah diperpanjang dengan metodeonComplicationDataTimeline
baru yang dapat Anda gunakan untuk menampilkan data ini.DefaultComplicationDataSourcePolicy
telah diperluas sehingga Anda dapat menentukanComplicationType
untuk sumber data utama dan sekunder.Kami telah menambahkan dukungan untuk penyedia detail sinkron dengan detail yang diperbarui pada frekuensi yang lebih tinggi dari biasanya, hingga sekali per detik saat tampilan jam terlihat dan non-ambient. Catatan: penyedia detail sinkron mungkin memiliki penggunaan terbatas karena masalah tekanan memori.
Perubahan
PendingIntentTapListener
kemungkinan akan dikembalikan karena kami menyelesaikan masalah yang mendasarinya (tampilan jam tidak dapat meluncurkan aktivitas selama 5 detik setelah menekan tombol layar utama) dalam framework.
Perubahan API
ComplicationData.isCached
telah diubah menjaditapActionLostDueToSerialization
yang lebih berguna saat menentukan apakah slot detail harus dirender secara berbeda untuk menandakan bahwa slot detail tidak dapat diketuk. (I6de2f)- Menambahkan
ComplicationDataTimeline
kewear-complication-data-source
. Ini dapat digunakan untuk menyediakan urutanComplicationData
yang dibatasi waktu agar dikirimkan ke tampilan jam yang dapat di-cache dan diupdate secara otomatis. Misalnya, perkiraan cuaca hari ini pada beberapa waktu atau beberapa acara kalender yang akan datang.ComplicationRequestListener
telah diperpanjang dengan metodeonComplicationDataTimeline
baru yang dapat Anda gunakan untuk menampilkan data ini. Terdapat wrapper kotlin baruSuspendingTimelineComplicationDataSourceService
untuk menangguhkan layanan sumber data. (Idecdc) - Menambahkan
PendingIntentTapListener
danWatchFaceControlClient.getPendingIntentForTouchEvent
Hal ini dapat membantu tampilan jam yang perlu meluncurkan intent sebagai respons terhadap ketukan untuk mengatasi masalah saat framework memblokir aktivitas baru selama 5 detik setelah menekan tombol layar utama. (I98074) - Memperkenalkan cache
ComplicationData
per tampilan jam. Hal ini bertujuan agar tampilan jam dapat menampilkan nilai data detail terakhir yang diketahui setelah memuat hingga sistem memiliki kesempatan untuk memperbaruinya. Ada metode API baruWatchFaceControlClient.hasComplicationCache
yang ditujukan untuk OEM. Hal ini dapat memengaruhi strategi sistem untuk mengirim detail ke tampilan jam. Selain itu,ComplicationData
memiliki propertiisCached
dan sebaiknya detail yang di-cache dirender secara berbeda karenatapAction
tidak dapat di-cache dan akan menjadinull
dalam detail yang di-cache. (I404b0) - ID instance tampilan jam kini tersedia melalui
WatchState.watchFaceInstanceId
. Sebagian besar tampilan jam tidak perlu menggunakan ini, tetapi jika ada status tampilan per jam yang tidak disimpan dalam Schema, ini adalah kunci yang digunakan untuk mengidentifikasi instance tampilan jam. Untuk membantu mendukung hal ini, Anda sekarang dapat memberikan ID saat memanggilWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) - Memperluas
DefaultComplicationDataSourcePolicy
dengan kemampuan menetapkanComplicationTypes
default untuk penyedia utama dan sekunder serta untuk penyedia sistem penggantian.ComplicationSlot.defaultDataSourceType
tidak digunakan lagi. (If0ce3) ComplicationSlot.configExtras
sekarang dapat berubah dan dapat diperbarui sebelum memanggilEditorSession.openComplicationDataSourceChooser()
. (I6f852)- Menambahkan
WatchFace.setComplicationDeniedDialogIntent
dansetComplicationRationaleDialogIntent
. Intent ini diluncurkan untuk menampilkan dialog alasan sebelum meminta izin detail, dan dialog lain yang menjelaskan bahwa izin detail diperlukan saat mencoba mengedit detail saat izin ditolak (pemilih penyedia akan gagal dibuka sehingga dialog diperlukan). (I3a29c) UserStyleSchema
danComplicationSlots
sekarang dapat ditentukan dalam XML. Hal ini menyederhanakan konstruksi tampilan jam dan membuat kueriWatchFaceMetadataClient
menjadi lebih cepat karena kueri tidak perlu terikat ke layanan untuk mendapatkan metadata. (I85bfa)- Menambahkan
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
sehingga klien dapat menentukan apakah tampilan jam mendukunggetPendingIntentForTouchEvent
. (I0b917) WatchFaceMetadataClient
danListenableWatchFaceMetadataClient
tidak lagi bersifat eksperimental. API ini dapat digunakan untuk mendapatkan metadata tampilan jam secara efisien, jika memungkinkan tanpa membuka binder ke tampilan jam. (Ibb827)- Menambahkan dukungan untuk penyedia detail sinkron ketika detail diupdate pada frekuensi yang lebih tinggi dari biasanya, hingga sekali per detik saat tampilan jam terlihat dan non-ambient. Untuk menggunakan tag ini, penyedia harus menyertakan tag metadata
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
baru dalam manifesnya dan menggantionSynchronousComplicationRequest
. Bergantung pada sifat sumber datanya, sumber data juga mungkin perlu menggantionStartSynchronousComplicationRequests
danonStopInteractiveComplicationRequests
untuk mendapatkan notifikasi saat detail masuk dan keluar dari mode interaktif. (I8fe9d)
Versi 1.0
Versi 1.0.1
9 Februari 2022
androidx.wear.watchface:watchface-*:1.0.1
dirilis. Versi 1.0.1 berisi commit berikut ini.
Perbaikan Bug
- Memperbaiki bug dengan
PhotoImageComplicationData
tapAction yang tidak ditangani dengan benar (I1cc30)
Versi 1.0.0
1 Desember 2021
androidx.wear.watchface:watchface-*:1.0.0
dirilis. Versi 1.0.0 berisi commit berikut ini.
Fitur Utama 1.0.0
Paket androidx.wear.watchface
adalah library baru yang direkomendasikan untuk mengembangkan tampilan jam WearOS. Library ini memiliki sejumlah fitur baru dibandingkan dengan Wearable Support Library lama.
- Gaya pengguna (misalnya untuk mengubah palet warna, gaya jarum jam, tampilan tanda jam, dll.) didukung langsung oleh library (lihat
androidx.wear.watchface.style
). Kini jauh lebih mudah untuk mengembangkan editor tampilan jam menggunakan androidx.wear.watchface.editor dan tampilan jam Anda dapat diedit dari aplikasi pendamping sistem tanpa perlu menulis kode tambahan. - Praktik terbaik digunakan. Library akan otomatis membuat label konten pembaca layar untuk detail (Anda juga dapat menambahkan label sendiri), dan kecepatan frame akan otomatis turun saat baterai hampir habis dan tidak mengisi daya untuk meningkatkan masa pakai baterai.
- Kode yang diperlukan untuk mengembangkan tampilan jam lebih sedikit, terutama untuk detail yang sebagian boilerplate-nya telah dipindahkan ke library.
Perbaikan Bug
- Memperbaiki
EditorSession.userStyle.compareAndSet
(I6f676) - Memperbaiki penundaan tampilan jam yang sangat singkat (Iffb97)
- Mengirim
InteractiveWatchFaceImpl.onDestroy
pada UI thread (I83340) - Memperbaiki beberapa masalah dengan penerima siaran (I7d25f)
Versi 1.0.0-rc01
3 November 2021
androidx.wear.watchface:watchface-*:1.0.0-rc01
dirilis. Versi 1.0.0-rc01 berisi commit berikut ini.
Perbaikan Bug
Memperbaiki dump() (dipanggil oleh adb shell dumpsys) yang rusak oleh migrasi flow. (087cf9e)
Memastikan pengurutan writeDirectBootPrefs yang sesuai. Kita ingin writeDirectBootPrefs selalu berjalan setelah initStyleAndComplications atau kita berisiko menunda init UI thread.(37650ac)
Memastikan Renderer.onDestroy dipanggil. Dalam skenario ketika perender telah dibuat, tetapi init WF belum selesai dan Engine.onDestroy dipanggil, kita perlu memanggil Renderer.onDestroy. (f9952dc)
Pengoptimalan/perbaikan untuk isBatteryLowAndNotCharging. Patch ini memindahkan penyiapan awal isBatteryLowAndNotCharging sebelumnya yang berarti dapat dilakukan secara paralel dengan createWatchFace. Selain itu, sekarang kita mendengarkan ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive menjadi false setelah ditutup (ab9774e)
Versi 1.0.0-beta01
27 Oktober 2021
androidx.wear.watchface:watchface-*:1.0.0-beta01
dirilis. Versi 1.0.0-beta01 berisi commit berikut ini.
Versi 1.0.0-alpha24
13 Oktober 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha24
dirilis. Versi 1.0.0-alpha24 berisi commit berikut ini.
Perubahan API
- Class dalam paket
androidx.wear.watchface.complications
telah dipindahkan ke projectwear:watchface:watchface-complications
yang baru. Perlu diketahui bahwa ini artinya Anda tidak dapat menyertakan library ini serta versi alfawear:watchface:watchface-complications-data
sebelumnya karena Anda akan mengalami error terkait class duplikat. (I97195) - Nama Renderer.dump telah diganti menjadi Renderer.onDump dan telah dianotasi dengan @UiThread. (I44845)
- Nama
InteractiveWatchFaceClient.addWatchFaceReadyListener
telah diganti menjadiaddOnWatchFaceReadyListener
dan namaremoveWatchFaceReadyListener
diganti menjadiremoveOnWatchFaceReadyListener
. (I48fea) - EditorSession
getComplicationsPreviewData
dangetComplicationsDataSourceInfo
tidak lagi menangguhkan fungsi, tetapi keduanya merupakan propertiStateFlow<>
yang nilai awalnya null. Di ListenableEditorSession,getListenableComplicationPreviewData
dangetListenableComplicationsProviderInfo
telah dihapus dan diganti dengan objekStateFlow<>
baru dari class dasar. Jika Anda harus memproses perubahan dalam kode java, sebaiknya gunakanandroidx.lifecycle.FlowLiveDataConversions.asLiveData
untuk mengonversi keLiveData<>
. (Ic5483)
Version 1.0.0-alpha23
29 September 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha23
dirilis. Versi 1.0.0-alpha23 berisi commit berikut ini.
Fitur Baru
Library tampilan jam sekarang menjadi grup library tunggal. Oleh sebab itu, library telah dipindahkan dan Anda harus mengupdate impor gradle seperti berikut:
Lama | Baru |
---|---|
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 |
Perubahan API
- Memigrasikan library Tampilan jam dan detail
androidx.wear
yang terpisah menjadi grup libraryandroidx.wear.watchface
. (b25f3c0) - Menambahkan EditorRequest.canWatchFaceSupportHeadlessEditing untuk memberi tahu klien jika editor tampilan jam mendukung pengeditan headless. Perlu diketahui bahwa akan ada beberapa negatif palsu karena dukungan ditambahkan di asop/1756809, tetapi akan menampilkan nilai yang benar untuk semua tampilan jam di masa mendatang. (ca55590)
- Perender sekarang memiliki metode dump() yang dapat diganti untuk menambahkan data kustom ke informasi yang dihasilkan oleh layanan aktivitas ABD shell dumpsys WatchFaceService. (95235f9)
- InteractiveWatchFaceClient.addWatchFaceReadyListener sekarang menentukan eksekutor terlebih dahulu. (563ac2f)
- StateFlowCompatHelper telah dihapus. Sebagai gantinya, asLiveData (androidx.lifecycle.asLiveData) harus digunakan. (bd35d3)
- CurrentUserStyleRepository.userStyle tidak lagi dapat diubah. (I44889)
- WatchFaceReadyListener telah diganti namanya menjadi OnWatchFaceReadyListener. (Ic12a9)
Perbaikan Bug
- InteractiveInstanceManager.deleteInstance untuk memanggil onDestroy. Ini diperlukan untuk memastikan InteractiveWatchFaceImpl mendapatkan pembersihan sampah memori. (fce4af8, b/199485839)