Wear Watchface
Catatan: Mulai 10 Juli 2024, tampilan jam harus menggunakan Format Tampilan Jam agar diinstal di smartwatch baru yang diluncurkan dengan Wear OS 5 yang telah diinstal sebelumnya. Pelajari lebih lanjut tentang perubahan yang dihadapi pengguna Pusat Bantuan artikel ini.
Selain itu, mulai awal tahun 2025 (tanggal spesifik akan diumumkan selama K4 2024), semua tampilan jam baru yang dipublikasikan di Google Play harus menggunakan Tampilan Jam Format.
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
17 April 2024 | 1.2.1 | - | - | 1.3.0-alpha03 |
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.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" }
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.3
Versi 1.3.0-alpha03
17 April 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha03
dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Perubahan API
- Kami telah menambahkan
EditorSession#setOverrideComplications
yang untuk sementara menetapkanComplicationData
instance tampilan jam pokok saat mengedit. Jika detail jarang berubah, hal ini lebih efisien daripada meneruskan penggantian melaluiEditorSession#renderWatchFaceToBitmap
. (I19384)
Perbaikan Bug
- Sebelumnya,
selectComplicationDataForInstant
memanggiltoApiComplicationData
untuk linimasa apa pun, yang berarti pengujian kesetaraan referensi === berikutnya akan selalu gagal. Artinya, detail dimuat ulang setiap frame yang menyebabkan pengurasan baterai. (717406)
Versi 1.3.0-alpha02
3 April 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha02
dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Fitur Baru
- Sekarang kami menggunakan kesetaraan referensi untuk membandingkan yang terbaik dan
selectedData
karena operator sama dengan lebih mahal. (446b00)
Perubahan API
- Kami telah menambahkan API dinamis tanpa penggantian untuk
GoalProgressComplicationData
. (c33264)
Versi 1.3.0-alpha01
7 Februari 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha01
dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Fitur Baru
WatchFaceServices
dapat diinisialisasi secara serentak dan harus stateless. Untuk mendukung hal ini, kami telah menambahkanStatefulWatchFaceService
dengan tambahan yang ditentukan pengguna yang dibuat olehcreateExtra()
dan diteruskan ke semua penggantian yang dipanggil selama inisialisasi.GlesRenderer2
kini memiliki overload konstruktor yang memungkinkan Anda menentukan daftar atribut untuk dicoba secara bergantian denganeglChooseConfig
.
Perubahan API
StatefulWatchFaceService
kini mendukung penggantiangetComplicationSlotInflationFactory
tempat tambahan buatan pengguna yang dibuat olehcreateExtra()
diteruskan. I82d9f- Beberapa tampilan jam perlu membagikan data tambahan yang dibuat selama
createUserStyleSchema
dengan metode inisialisasi lainnya. Karena tidak ada alternatif yang lebih baik, developer biasanya membuatWatchFaceServices
mereka menjadi stateful. Ini berbahaya karena beberapa instance dapat dibuat secara serentak yang dapat menyebabkan bug. Untuk mengatasi hal ini, kami telah memperkenalkanStatefulWatchFaceService
danStatefulWatchFaceRuntimeService
tempat jenis yang ditentukan pengguna dibuat olehcreateExtra()
dan diteruskan ke berbagai metode pembuatan sebagai parameter. (If8a99) - Kami telah menambahkan
getUserStyleFlavors
keInteractiveWatchFaceClient
, yang terutama menarik bagi OEM. (I0f5d8) GlesRenderer2
kini memiliki overload konstruktor yang memungkinkan Anda menentukan daftar atribut untuk dicoba secara bergantian denganeglChooseConfig
. Misalnya, hal ini memungkinkan Anda mencoba konfigurasi dengan anti-aliasing terlebih dahulu dan kembali ke konfigurasi tersebut jika perlu. (I1ba74)- Mulai Android U, dukungan untuk
SystemDataSources.DATA_SOURCE_HEART_RATE
akan ditambahkan ke WearOS. Detail ini hanya dijamin mendukung detailSHORT_TEXT
, tetapi sebaiknyaComplicationSlot
juga menerimaSMALL_IMAGE
karena OEM dapat memilih untuk menayangkan pintasan ke aplikasi kesehatannya, bukan nilai aktif. (I34223) - Kami telah menambahkan
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
yang mulai dari Android U dan seterusnya, mengontrol apa yang terjadi saat sistem dipulihkan dari cadangan untuk sumber data detail denganMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
. Secara default, sistem berasumsi bahwa layanan sumber data detail mendukung pencadangan data konfigurasi apa pun, tetapi jika tidak, sistem dapat menambahkan setelan metadataMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
ke salah yang akan menandai slot detail sebagai tidak dikonfigurasi. (I6c505)
Versi 1.2
Versi 1.2.1
24 Januari 2024
androidx.wear.watchface:watchface-*:1.2.1
dirilis. Versi 1.2.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki error pada Samsung Galaxy Watch 4, 5 & 6. (43f0b0)
Versi 1.2.0
29 November 2023
androidx.wear.watchface:watchface-*:1.2.0
dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
- Kami telah menambahkan dukungan beberapa jenis detail baru yang tersedia untuk digunakan dari Android T:
GoalProgressComplicationData
yang mirip denganRangedValueComplicationData
, kecuali untuk progres menuju sasaran dengan nilai minimum secara implisit adalah nol, dan nilainya diizinkan lebih besar daritargetValue
.WeightedElementsComplicationData
yang terdiri dari array Elemen (pasangan bobot dan warna) beserta teks/judul/gambar opsional. Dukungan ini mungkin ditampilkan sebagai diagram lingkaran dengan warna yang bermakna tergantung konteksnya, karena biasanya tidak ada ruang dalam detail untuk merender label.
- Kami telah menambahkan dukungan untuk
ColorRanges
opsional keRangedValueComplicationData
. Detail biasanya akan dirender dalam warna pilihan tampilan jam, tetapi terkadangComplicationDataSource
paling cocok ditempatkan untuk menetapkan warna, misalnya saat memiliki makna semantik tertentu. Misalnya, merah ke biru untuk suhu. - Hampir setiap jenis
ComplicationData
kini mendukungSmallImages
. - Kami telah menambahkan
ComplicationDisplayPolicy
denganDO_NOT_SHOW_WHEN_DEVICE_LOCKED
menginstruksikan tampilan jam yang kompatibel untuk tidak menampilkan detail saat perangkat terkunci. - Dari Android T, OEM akan dapat menentukan apakah permintaan detail berasal dari tampilan jam dalam daftar yang ditentukan oleh metadata
android.support.wearable.complications.SAFE_WATCH_FACES
dalam manifes penyedianya olehComplicationRequest#isForSafeWatchFace
. Penyedia akan memerlukan izincom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
untuk menerima hal selain TargetViewsSafety.UNKNOWN`. UserStyleFlavors
telah menjadi fitur non-eksperimental.
Versi 1.2.0-rc01
18 Oktober 2023
androidx.wear.watchface:watchface-*:1.2.0-rc01
dirilis. Versi 1.2.0-rc01 berisi commit ini.
Versi 1.2.0-beta02
6 September 2023
androidx.wear.watchface:watchface-*:1.2.0-beta02
dirilis. Versi 1.2.0-beta02 berisi commit ini.
Fitur Baru
SuspendingComplicationDataSourceService#onDestroy
sekarang buka. Perlu diketahui bahwa dukungan untuk detail cuaca default sistem telah dihapus.
Perubahan API
- Batalkan opsi "Ekspos sumber data baru untuk detail cuaca". (I6f335)
Versi 1.2.0-beta01
23 Agustus 2023
androidx.wear.watchface:watchface-*:1.2.0-beta01
dirilis. Versi 1.2.0-beta01 berisi commit ini.
Fitur Baru
- Mulai Android T, WearOS kini akan mendukung detail sistem cuaca default.
Perubahan API
- Menambahkan penggantian sistem default cuaca untuk detail. (Ia0994)
- Patch ini menambahkan
WatchFaceRuntimeService
danWatchFaceControlClient.createWatchFaceRuntimeControlClient
beserta wrapper guava. Hal ini menambahkan dukungan untuk runtime tampilan jam yang merupakan jenis tampilan jam khusus yang memuat definisinya dari paket lain. Saat ini WearOS hanya mendukung runtime untuk Format Tampilan Jam Android. (I2799f) - Patch ini adalah tindak lanjut dari AOSP/2636578 di mana kita mengganti nama int def sehingga kode apa pun yang bergantung pada
WatchFaceType
,CanvasType
,TapType
, atauComplicationsSlotBoundsType
tidak perlu diubah. (I4098b) - Memperbarui file API untuk memberi anotasi pada penyembunyian kompatibilitas. (I8e87a, b/287516207)
- Patch ini mengekspos konstanta
WatchFaceType
dalamWatchFaceTypes
, konstantaCanvasType
dalamCanvasTypes
, konstantaTapType
dalamTapTypes
, dan konstantaComplicationsSlotBoundsType
diComplicationsSlotBoundsType
. (I3b85a, b/288750666) WatchFace.OverlayStyle
memiliki penggunaan yang sangat rendah dan tidak didukung dengan baik oleh OEM sehingga kami mengurangi nilainya dengan niat menghapusnya di lain waktu. (I7344a)
Versi 1.2.0-alpha09
21 Juni 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha09
dirilis. Versi 1.2.0-alpha09 berisi commit ini.
Fitur Baru
RangedValueComplicationData.Builder
kini menerimaDynamicFloat
, danDynamicComplicationText
baru tersedia sebagai subclassComplicationText
, yang keduanya dapat menggunakan ekspresi dinamis serta binding platform yang diupdate pada 1 Hz di perangkat Wear 4 yang didukung.
Perubahan API
- Menambahkan jenis dinamis untuk jarak harian, kalori harian, dan lantai harian. Kunci untuk sumber kondisi platform sekarang berada di bawah
PlatformHealthSources.Keys
(Ib7637) - Terapkan
PlatformDataProvider
untuk memberikan detak jantung dan langkah harian. AntarmukaSensorGateway
dihapus dari API publik. (I55b84) - Ganti nama
StateEntryValue
menjadiDynamicDataValue
, dan update API status untuk menggunakanDynamicDataKey
. (If1c01) - Menambahkan
AppDataKey
untuk mengakses status yang dikirim aplikasi; MenambahkanPlatformDataKey
untuk mengakses data platform; Menambahkan dukungan namespace diStateStore
. (I7985e) enable
/disablePlatformSource
metode telah dihapus dariDynamicTypeEvaluator
. Pemanggil harus bertanggung jawab atas update. (I78c6d)- Mengizinkan pembatasan ukuran jenis data yang dibatasi. (Ie2966)
Versi 1.2.0-alpha08
19 April 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha08
dirilis. Versi 1.2.0-alpha08 berisi commit ini.
Fitur Baru
- Mulai Android T, penyedia detail dengan
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
dengan hak istimewa dapat mendaftarkan metadataandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
yang menggantikanandroid.support.wearable.complications.SUPPORTED_TYPES
untuk tampilan jam yang aman. Ini berarti penyedia detail dapat memilih untuk menyajikan berbagai jenis ke tampilan jam tepercaya vs tidak tepercaya.
Perubahan API
- Penyebaran class
@Deprecated
ke properti (I882d1, b/271441831) - Nama parameter nilai untuk
Enum.valueOf
diubah (Ia9b89) - Lebih banyak pengecualian yang ditampilkan dari enum valueOf (I818fe)
- Kami telah menghapus
renderWatchFaceToSurface
dan mendukungcreateRemoteWatchFaceView
yang dibuat berdasarkan SurfaceControlViewHost dan memungkinkan pemanggil menyematkan tampilan dari tampilan jam, yang dirender saat klien memanggilRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Kami telah menambahkan
renderWatchFaceToSurface
keInteractiveWatchFaceClient
,HeadlessWatchFaceClient
, danEditorSession
. Biasanya ini akan lebih berperforma tinggi daripada merender ke bitmap. (Ieacad) ObservableStateStore
diganti namanya menjadiStateStore
. (Ieb0e2)- Menambahkan
DynamicTypeEvaluator.Builder
, bukan argumen konstruktor untuk mengizinkan lebih banyak argumen opsional, termasukObservableStateStore
yang sekarang ditetapkan secara default ke penyimpanan kosong. (I6f832) - Urutan parameter telah difaktorkan ulang di
DynamicTypeEvaluator
. (Ic1ba4) - Executor telah ditambahkan ke metode
DynamicTypeEvaluator.bind
. (I346ab) - Kami telah menambahkan metode
startEvaluation
keBoundDynamicType
untuk memicu evaluasi setelah jenis dinamis terikat. (I19908) - Penyedia detail dengan
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
dengan hak istimewa dapat mendaftarkan metadataandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
yang menggantikanandroid.support.wearable.complications.SUPPORTED_TYPES
untuk tampilan jam yang aman. (Id1c73) - Kami telah mengganti nama
CustomValueUserStyleSettings2
menjadiLargeCustomValueUserStyleSettings
. (Ic17ac)
Perbaikan Bug
DynamicTypeValueReceiver#onPreUpdate
telah dihapus (I2dc35)
Versi 1.2.0-alpha07
22 Februari 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha07
dirilis. Versi 1.2.0-alpha07 berisi commit ini.
Fitur Baru
Dari Android T, OEM akan dapat menentukan apakah permintaan detail berasal dari tampilan jam dalam daftar yang ditentukan oleh metadata
android.support.wearable.complications.SAFE_WATCH_FACES
dalam manifes penyedianya olehComplicationRequest#isForSafeWatchFace
. Penyedia akan memerlukan izincom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
untuk menerima apa pun selainTargetWatchFaceSafety.UNKNOWN
.Selain itu, mulai dari Android T
CustomValueUserStyleSetting2
tersedia untuk digunakan yang dapat menampung hingga 12,5 kb. Batas sebelumnya untukCustomValueUserStyleSetting
adalah 1 kb. Meskipun batas ukuran ditingkatkan, developer tampilan jam dianjurkan untuk membuat data tetap berukuran kecil karena setelan akan dikirim melalui bluetooth selama pengeditan dan bandwidth bluetooth dibatasi.
Perubahan API
- Kami telah menambahkan parameter opsional
eglContextAttribList
keGlesRenderer
&GlesRenderer2
yang memungkinkan Anda menetapkanEGL14.EGL_CONTEXT_CLIENT_VERSION
yang diteruskan keEGL14.eglCreateContext
. (I2a83e) - Kami telah memigrasikan library tampilan jam ke
androidx.core.util.Consumer
, bukanjava.util.function.Consumer
. (I273f5) - Lebih banyak pengecualian yang ditampilkan dari pengakses properti KT (Iff9d9)
- Kami telah menambahkan
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
sehingga klien dapat menentukan apakah harus mengemulasi dukungan atau tidak atas nama tampilan jam lama. (I24c89) - Kami telah memutuskan bahwa
isForSafeWatchFace
harus berupaIntDef
tiga status. (Ief2f7) - Untuk Android T, kami telah memperkenalkan
ComplicationRequest.isForSafeWatchFace
yang ditujukan untuk penggunaan OEM dan memerlukancom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. Untuk sumber data dalam image sistem, hal ini akan menampilkan benar (true) jika tampilan jam yang meminta ada dalam daftar tampilan jam aman yang ditentukan oleh sumber data dalam manifesnya. (I0cbb6) - Untuk Android T, kami telah menambahkan
CustomValueUserStyleSetting2
yang dapat menampung hingga 12,5 kb. Batas sebelumnya untukCustomValueUserStyleSetting
adalah 1 kb. (I0b100)
Versi 1.2.0-alpha06
25 Januari 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha06
dirilis. Versi 1.2.0-alpha06 berisi commit ini.
Fitur Baru
- Saat ini tengah berupaya menambahkan dukungan untuk detail binding platform. Ini belum siap digunakan, tetapi nantikan kabar terbarunya!
- Kami telah menambahkan dukungan
ComplicationSlot
XML untuk jenis detail baru, GOAL_PROGRESS dan WEIGHTED_ELEMENTS.
Perbaikan Bug
- Memperbaiki kebocoran saat editor tampilan jam tidak dirilis dengan benar di perangkat Samsung. (3b5987)
- Memperbaiki bug saat detail terkadang tidak ditampilkan dengan benar ketika berganti-ganti tampilan jam dengan beberapa favorit. (b38ece)
- Memperbaiki bug serialisasi dengan perOptionScreenReaderNames yang menyebabkan terjadinya error pada tampilan jam. (e9f466)
Versi 1.2.0-alpha05
7 Desember 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha05
dirilis. Versi 1.2.0-alpha05 berisi commit ini.
Fitur Baru
Beberapa waktu lalu kami menambahkan dukungan untuk
UserStyleSettings
hierarkis, dan dari Android T, Anda kini dapat memiliki lebih dari satuComplicationSlotsUserStyleSetting
dalam hierarki. Hanya satuComplicationSlotsUserStyleSetting
yang akan aktif, berdasarkan pilihan gaya pengguna.Kami meningkatkan dukungan pembaca layar untuk
ListOption
danComplicationSlotsOption
dengan menambahkan kolomscreenReaderName
. Perhatikan bahwa sebelum Android T, kolom ini akan diabaikan oleh editor pendamping.
Perubahan API
- Kami telah menambahkan kolom
screenReaderName
opsional baru keListOption
danComplicationSlotsOption
untuk digunakan oleh editor - akan diabaikan oleh editor pendamping di perangkat sebelum Android T. (I75326) - Mulai Android T, beberapa
ComplicationSlotsUserStyleSettings
kini didukung dalam hierarki gaya selama hanya salah satunya yang dapat aktif pada satu waktu. Kami telah menambahkan fungsi utilitasfindComplicationSlotsOptionForUserStyle
keUserStyleSchema
untuk membantu menemukanComplicationSlotsOption
aktif jika ada. (Ic2b06) RangedValuesTypes
telah ditarik ke dalam objek pendampingRangedValueComplicationData
dan diganti namanya menjadiTYPE_UNDEFINED
,TYPE_RATING
danTYPE_PERCENTAGE
baru telah ditambahkan. (I55d02)- Kami telah mengganti nama
DynamicFloat
eksperimental menjadiFloatExpression
dan menandainya sebagai@hide
. (Idf4f1) - Menambahkan anotasi
@JvmDefaultWithCompatibility
(I8f206)
Versi 1.2.0-alpha04
9 November 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha04
dirilis. Versi 1.2.0-alpha04 berisi commit ini.
Fitur Baru
- Untuk Android T, kami telah menambahkan dukungan untuk dua jenis detail baru,
GoalProgressComplicationData
danWeightedElementsComplicationData
. GoalProgressComplicationData
mirip denganRangedValueComplicationData
tetapi nilainya diizinkan untuk melewati target (untukRangedValueComplicationData
, nilai ditetapkan ke rentang [min .. maks]) yang memiliki implikasi untuk desain visual yang mungkin hanya cocok untuk sebagian tampilan jam.GoalProgressComplicationData
menambahkan dukungan untuk diagram lingkaran dan pengelompokan data sederhana yang serupa.- Kami telah menambahkan dukungan opsional untuk
ColorRamps
keRangedValueComplicationData
. - Untuk Android T, kami telah menambahkan
ComplicationPersistencePolicy
dansetCachePolicy
keComplicationData
yang saat ini memungkinkan penyedia mengontrol apakah detail dipertahankan atau tidak (yaitu apakah di-cache setelah mulai ulang). Sebagian besar detail tidak perlu menyetel kontrol cache, tetapi melakukan hal tersebut dapat memperbaiki kasus dengan beberapa keadaan ekstrem dengan data yang sudah tidak berlaku untuk beberapa detail yang sering diperbarui (misalnya, detail data kesehatan). Kami juga telah menambahkanComplicationDisplayPolicy
tempatDO_NOT_SHOW_WHEN_DEVICE_LOCKED
menginstruksikan tampilan jam yang kompatibel untuk tidak menampilkan detail saat perangkat terkunci. (Ic9574)
Perubahan API
GoalProgressComplicationData
,WeightedElementsComplicationData
, danColorRamp
tidak lagi bersifat eksperimental. (Ica9e2)ComplicationPersistencePolicy
danComplicationDisplayPolicy
sekarang ditandai dengan benar sebagai T API. (I31d88)- Konstruktor
ComplicationSlotOverlay
yang sudah tidak digunakan lagi sekarang memilikiDeprecationLevel.WARNING
, yang memungkinkannya dipanggil dari Java sekali lagi. (Ib308c) - Kami telah memperbaiki beberapa masalah kompatibilitas Java dengan
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
, danInteractiveWatchFaceClient
dengan menganotasinya dengan@JvmDefaultWithCompatibility
(Id94fc) - Kami telah menghapus
ProtoLayoutComplicationData
danListComplicationData
eksperimental. Pengalaman developer tentang hal ini tidak jelas, kami berharap dapat membukanya kembali di masa mendatang. (I9df05) - Kami telah menambahkan
ValueType
kembali keRangedValueComplicationData
.WeightedElementsComplicationData
kini mendukung warna latar belakang. Kami telah menghapusDiscreteRangedValueComplicationData
karena fungsinya adalah subset dariWeightedElementsComplicationData
. (I6446c)
Perbaikan Bug
- Menyertakan
isForScreenShot
di kode sama dengan dan hash. PastikanonRenderParametersChanged
mendapatkan nilaiisForScreenshot
yang benar (I04a41) - Memperbaiki kebocoran
WatchFaceControlService
dari klien headless. (e90e00)
Versi 1.2.0-alpha03
5 Oktober 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha03
dirilis. Versi 1.2.0-alpha03 berisi commit ini.
Fitur Baru
- Tidak ada fitur baru, tetapi kami telah memperbaiki beberapa bug editor tampilan jam.
Perubahan API
UserStyleSchema.userStyleSettings
tidak digunakan lagi karenarootUserStyleSettings
menjadi non-eksperimental (Ie96e3)- Memindahkan
rootUserStyleSettings
dari eksperimental (I8d6b3) - Kami menandai
WatchFaceColors
sebagai eksperimental karena tidak didukung oleh semua sistem (I6d75d) - Mengekspos
DisconnectReasons
di API publik agar dapat berfungsi denganIntDef
. (I791f8)
Perbaikan Bug
- Menutup semua editor tampilan jam yang terbuka jika
SysUI
mati. JikaSysUI
mati dan editor tampilan jam tidak tertutup, tampilan jam dapat dibiarkan dalam status yang tidak konsisten karena sistem bergantung padaSysUI
untuk mempertahankan setiap perubahan gaya pengguna.(ba762a - Memperbaiki kebocoran memori dalam
ComplicationDataSourceInfoRetriever
jika kelanjutan coroutine kotlin bertindak sebagai root gc dan mempertahankan aktivitas editor.(33ee06)
Versi 1.2.0-alpha02
21 September 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha02
dirilis. Versi 1.2.0-alpha02 berisi commit ini.
Fitur Baru
Beberapa tampilan jam memiliki konfigurasi di luar
UserStyle
yang memengaruhinya secara visual, (misalnya memilih foto latar belakang). Kami telah menambahkanRenderer.sendPreviewImageNeedsUpdateRequest
yang memungkinkan tampilan jam meminta gambar pratinjau yang diperbarui. Perlu diperhatikan bahwa penambahan ini memerlukan update sistem terkait agar dapat berfungsi.Kami juga telah menambahkan API untuk tampilan jam guna mengekspos warna ke sistem yang dapat memilih palet warnanya berdasarkan hal ini. Perhatikan bahwa fitur ini telah dibuat eksperimental dalam patch selanjutnya.
Hampir semua jenis
ComplicationData
kini mendukungSmallImages
.
Perubahan API
- Pengelola wallpaper terkadang dapat terlepas dari mesin dan membuat wallpaper lagi. Kami telah menambahkan int def
DisconnectReason
dan memperluasClientDisconnectListener
dengan metode baru yang menyertakanDisconnectReason
, yang memungkinkan pemroses mengamati terlepasnya mesin. (I45cce) - Menambahkan dua parameter opsional
nameResourceId
danscreenReaderResourceId
ke konstruktorComplicationSlotOverlay
(I157e8) - Kami telah menambahkan wrapper guava untuk overload
getOrCreateInteractiveWatchFaceClient
yang baru denganPreviewImageUpdateRequestedListener
. (Ic31f0) - Kami telah menambahkan
Renderer.sendPreviewImageNeedsUpdateRequest
yang berguna untuk tampilan jam yang memiliki status di luarUserStyleSchema
yang memengaruhi tampilan (misalnya, tampilan jam dengan gambar latar yang dapat dipilih). Di sisi klien, kami telah menambahkanPreviewImageUpdateRequestedListener
sebagai parameter opsional kegetOrCreateInteractiveWatchFaceClient
untuk mengamati permintaan ini. (Iff44a) - Kami telah menyederhanakan API untuk mengekspos
WatchFaceColors
. Sekarang telah ada properti sederhana bernamawatchFaceColors
di Perender yang dapat disetel oleh tampilan jam, dan harus diperbarui sesuai kebutuhan sebagai respons terhadap setiap perubahan gaya. Kami telah menambahkanOnWatchFaceColorsListener
keInteractiveWatchFaceClient
, bukan menggunakanWallpaperManager
untuk mengamati perubahan warna. (I490bc) - Kami telah menambahkan class
WatchFaceColors
yang menyimpan tiga warna tampilan jam paling menarik dan menambahkan metode terbukawatchfaceColors
¬ifyWatchFaceColorsChanged
ke Perender. Ini memungkinkan sistem mendapatkan warna tampilan jam melaluiWallpaperManager.getWallpaperColors
. (I3d611) ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(sertaDiscreteRangedValueComplicationData
,GoalProgressComplicationData
, danWeightedElementsComplicationData
eksperimental) sekarang mendukungSmallImages
. Jika tampilan jam memilih untuk merender detail dengan beberapa warna, tampilan jam kini memiliki opsi untuk menggunakanSmallImage
multiwarna, yang sebelumnya harus menggunakan gambar monokromatik. (I257df)- Memfaktorkan ulang
PreviewImageUpdateRequestedListener
menjadiConsumer<>
sebagai gantinya (Ia875d) - Mengganti jenis Single Abstract Method (SAM) kustom
OnWatchfaceColorsListener
dengan jenis SAM Java generik (Consumer) (I0c489) - Kami tidak lagi menggunakan metode
getOrCreateInteractiveWatchFaceClient
danlistenableGetOrCreateInteractiveWatchFaceClient
lama yang tidak menentukanPreviewImageUpdateRequestedListener
. (Iec502)
Perbaikan Bug
DisconnectReason.BINDER_DIED
diganti namanya menjadiDisconnectReason.ENGINE_DIED
. (I4eb0e)
Versi 1.2.0-alpha01
10 Agustus 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha01
dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Fitur Baru
- Kami telah menambahkan dukungan eksperimental untuk berbagai format detail baru. Ini adalah area pengembangan aktif; format baru ini dapat berubah sewaktu-waktu tanpa pemberitahuan dan saat ini tidak ada dukungan perender dari
CanvasComplicationDrawable
. - Kami juga telah menambahkan margin opsional ke slot detail yang membuat detail kecil lebih mudah diketuk.
Perubahan API
- Class
BoundingArc
eksperimental kini tidak dapat diubah. (If624a) - Detail kecil dapat menjadi sulit diketuk. Untuk membantu mengurangi masalah ini, kami memperkenalkan dukungan untuk margin yang meningkatkan area yang dapat diketuk tanpa memengaruhi rendering. Kecuali jika ditentukan (baik dalam kode maupun melalui XML),
ComplciationSlots
memiliki margin berukuran nol. (I14089) - Mengubah tanda tangan
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
untuk menampilkan instance factory non-null. Menampilkan null sebelumnya merupakan error, jadi tindakan ini hanya membuat kontrak API lebih jelas. (I0fcc0) - Kami telah menambahkan argumen
currentUserStyleRepository
ke metodeWatchFaceService.getComplicationSlotInflationFactory
agar konsisten dengancreateComplicationSlotsManager
. (I2ddd2) UserStyleFlavors
telah menjadi fitur non-eksperimental. (I69cdc)- Kami telah menghapus
ValueType
eksperimental dariRangedValueComplicationData
dan sebagai gantinya memperkenalkanDiscreteRangedValueComplicationData
eksperimental yang sepertiRangedValueComplicationData
, kecuali untuk rentang & nilai bilangan bulat. Kami juga telah memperkenalkanGoalProgressComplicationData
eksperimental yang mirip denganRangedValueComplicationData
, kecuali untuk progres menuju sasaran dengan min yang secara implisit bernilai nol, dan nilainya diizinkan lebih besar daritargetValue
. Perlu diketahui, semua varianRangedValue
harus menentukan setidaknya satu monochromeImage, teks, atau judul. (I9590c) - Kami menghapus
boundsWithMargins
dariComplicationSlotState
karena software sistem tidak memiliki kasus penggunaan untuk itu. (I42e26) - Kami telah menambahkan dukungan eksperimental untuk
WeightedElementsComplicationData
yang terdiri dari array Element (pasangan tebal dan warna) beserta teks/judul/gambar opsional. Dukungan ini mungkin ditampilkan sebagai diagram lingkaran dengan warna yang bermakna tergantung konteksnya, karena biasanya tidak ada ruang dalam detail untuk merender label. (I87eea) ColorRamps
eksperimental yang digunakan secara opsional olehRangedValueComplicationData
danGoalProgressComplicationData
kini memungkinkan Anda menentukan urutan hingga tujuh warna dan flag yang menyatakan apakah warna harus di-tween secara mulus atau apakah langkah warna solid yang berukuran sama harus dirender. (I9f5bf)RangedValueComplicationData.drawSegmented
telah diubah menjadivalueType
yang merupakan int denganValueType IntDef
yang sesuai yang memberikan makna semantik ke nilai rentang dan dapat digunakan oleh perender detail untuk memengaruhi gaya. (I0616b)- Kami telah menambahkan dukungan eksperimental untuk
ColorRanges
opsional keRangedValueComplicationData
. Detail biasanya akan dirender dalam warna pilihan tampilan jam, tetapi terkadangComplicationDataSource
paling cocok ditempatkan untuk menetapkan warna, misalnya saat memiliki makna semantik tertentu. Misalnya, merah ke biru untuk suhu. (I5153a) - Kami telah menambahkan petunjuk
drawSegmented
eksperimental keRangedValueComplicationData
. Ini menandakan perender untuk menggambar indikator nilai rentang dengan segmen, dengan 1 segmen = 1 unit. (I7d7c1)
Perbaikan Bug
- Kami telah menambahkan kemampuan untuk menentukan
ComplicationSlotBounds
relatif terhadap sistem koordinat layar yang telah ditentukan sebelumnya. (I0985d)
Versi 1.1
Versi 1.1.1
10 Agustus 2022
androidx.wear.watchface:watchface-*:1.1.1
dirilis. Versi 1.1.1 berisi commit ini.
- Ini adalah rilis perbaikan bug dan pengguna versi 1.1.0 sangat disarankan untuk melakukan upgrade.
Perbaikan Bug
Inisialisasi tampilan jam bersifat asinkron dan jika detail diterima sebelum tampilan jam siap, detail akan masuk ke dalam daftar
pendingInitialComplications
dan diterapkan nanti. Sayangnya,pendingInitialComplications
diterapkan terlalu cepat yang berarti ada jangka waktu selama inisialisasi tampilan jam, dengan detail yang masih akan ditempatkan dipendingInitialComplications
dan diabaikan. Hal ini sekarang telah diperbaiki. Selain itu, patch ini memperbaiki bug yang menyebabkanComplicationRenderer
salah mencoba memuat placeholder secara asinkron, yang gagal mengarah ke grafik kompilasi yang tidak pernah diperbarui. Terakhir, patch ini memperbaiki bug teoretis yang diharapkan saat beberapapendingInitialComplications
perlu digabungkan. (0d03ba3)Memperbaiki potensi deadlock di
InteractiveInstanceManager
saatgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
menahan kunci lebih lama dari yang diperlukan. Biasanya kami mengharapkanengine.setUserStyle
berjalan cepat, tetapi jika tidak demikian karena alasan tertentu, dapat terjadi deadlock/ANR. Patch ini memindahkan pekerjaan yang tidak perlu, sehingga tidak berpotensi terjadi deadlock.(5a2adca)Memperbaiki beberapa masalah yang mempertahankan
WatchFaceService
. WakeLock terkadang dapat mempertahankanWatchFaceService
, dan menambahkan panggilanrelease()
akan memperbaiki masalah ini. Selain itu,StateFlows
dapat mempertahankanWatchFaceService
, yang membatalkan perbaikanCoroutineScopes
dasar. (fd48138)Menambahkan waktu tunggu ke
awaitDeferredWatchFace
* dan memperbaikiwatchfaceOverlayStyle
NullPointerException
. Dalam keadaan normal, waktu tunggu ini tidak boleh habis termasuk setelah penginstalan baru dan skenarioDirectBoot
saat beban CPU tinggi. Kami juga telah memperbaiki NPE jikagetWatchfaceOverlayStyle
dipanggil setelahclose()
. (a4c3a5a)
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 diperbarui 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 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 tepi. 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 ini.
Perubahan API
- Metode
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) danHeadlessWatchFaceClient.getUserStyleFlavors
sekarang menampilkan RuntimeException yang tidak diperiksa, 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 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)- Mengubah 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 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 menampilkanWatchFaceException
, 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 diperbarui 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 diperbarui 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 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 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 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 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)