หน้าปัด Wear
หมายเหตุ: Watch Face Format จำเป็นต้องใช้สำหรับการติดตั้งหน้าปัดในอุปกรณ์ที่ติดตั้ง Wear OS 5 ไว้ล่วงหน้าตั้งแต่วันที่ 10 กรกฎาคม 2024 และสำหรับหน้าปัดใหม่ทั้งหมดที่เผยแพร่ใน Google Play ตั้งแต่วันที่ 27 มกราคม 2025
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงที่แสดงต่อผู้ใช้ได้ในบทความนี้ในศูนย์ช่วยเหลือ
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
18 กันยายน 2024 | 1.2.1 | - | - | 1.3.0-alpha04 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Wear คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
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" }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.3
เวอร์ชัน 1.3.0-alpha04
18 กันยายน 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับการโหลดไอคอนแบบ Lazy Loading ใน
UserStyleSettings
และUserStyleOptions
ซึ่งช่วยเพิ่มประสิทธิภาพในการโหลดหน้าปัด (Iaf43d) - เพิ่มตัวเลือกให้ถ่ายภาพหน้าจอที่อัปเดตทุกครั้งที่มีการเปลี่ยนแปลงการกำหนดค่าระบบ (เช่น หากมีการเปลี่ยนแปลงภาษา) ผ่าน
Watchface.setUpdateScreenshotOnConfigurationChange
ใหม่ การตั้งค่านี้จะปิดอยู่โดยค่าเริ่มต้น (I765a1)
การแก้ไขข้อบกพร่อง
- นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออกแล้ว เนื่องจากการดำเนินการนี้จะดำเนินการโดยอัตโนมัติผ่านการจําลอง API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับบิลด์ทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)
เวอร์ชัน 1.3.0-alpha03
17 เมษายน 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เพิ่ม
EditorSession#setOverrideComplications
ซึ่งจะตั้งค่าComplicationData
ของอินสแตนซ์หน้าปัดที่เกี่ยวข้องไว้ชั่วคราวขณะแก้ไข หากข้อมูลแทรกมีการเปลี่ยนแปลงไม่บ่อยนัก วิธีนี้จะมีประสิทธิภาพมากกว่าการส่งการลบล้างผ่านEditorSession#renderWatchFaceToBitmap
(I19384)
การแก้ไขข้อบกพร่อง
- ก่อนหน้านี้
selectComplicationDataForInstant
เรียกtoApiComplicationData
สำหรับไทม์ไลน์ใดก็ตาม ซึ่งหมายความว่าการทดสอบความเท่าเทียมกันของรีเฟอเรนซ์ === ที่ตามมาจะล้มเหลวเสมอ ซึ่งหมายความว่าข้อมูลแทรกจะโหลดซ้ำทุกเฟรม ทำให้แบตเตอรี่หมดเร็ว (717406)
เวอร์ชัน 1.3.0-alpha02
3 เมษายน 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้เราใช้การเปรียบเทียบแบบอ้างอิงเพื่อเปรียบเทียบ best กับ
selectedData
เนื่องจากโอเปอเรเตอร์เท่ากับใช้ทรัพยากรมาก (446b00)
การเปลี่ยนแปลง API
- เราได้เพิ่ม API แบบไดนามิกที่ไม่มีการเปลี่ยนเส้นทางสําหรับ
GoalProgressComplicationData
(c33264)
เวอร์ชัน 1.3.0-alpha01
7 กุมภาพันธ์ 2024
androidx.wear.watchface:watchface-*:1.3.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
WatchFaceServices
สามารถเริ่มต้นพร้อมกันได้ และควรเป็นแบบไม่มีสถานะ เพื่อรองรับเรื่องนี้ เราได้เพิ่มStatefulWatchFaceService
ซึ่งจะส่งค่าเพิ่มเติมที่ผู้ใช้กำหนดซึ่งสร้างโดยcreateExtra()
ไปยังการลบล้างทั้งหมดที่เรียกใช้ระหว่างการเริ่มต้น- ตอนนี้
GlesRenderer2
มีการโอเวอร์โหลดคอนสตรัคเตอร์ซึ่งช่วยให้คุณระบุรายการแอตทริบิวต์ที่จะลองทีละรายการด้วยeglChooseConfig
ได้
การเปลี่ยนแปลง API
- ตอนนี้
StatefulWatchFaceService
รองรับการลบล้างgetComplicationSlotInflationFactory
ซึ่งระบบจะส่งข้อมูลเพิ่มเติมที่ผู้ใช้กำหนดซึ่งสร้างโดยcreateExtra()
(I82d9f) - หน้าปัดบางหน้าต้องแชร์ข้อมูลเสริมที่สร้างระหว่าง
createUserStyleSchema
กับวิธีการเริ่มต้นอื่นๆ เนื่องจากไม่มีทางเลือกที่ดีกว่า นักพัฒนาซอฟต์แวร์จึงมักทำให้WatchFaceServices
เป็นแบบมีสถานะ ซึ่งอันตรายเนื่องจากระบบอาจสร้างอินสแตนซ์หลายรายการพร้อมกัน ซึ่งอาจทำให้เกิดข้อบกพร่องได้ ในการแก้ปัญหานี้ เราได้เปิดตัวStatefulWatchFaceService
และStatefulWatchFaceRuntimeService
ซึ่งcreateExtra()
จะสร้างประเภทที่ผู้ใช้กำหนดและส่งไปยังเมธอดสร้างต่างๆ ในรูปแบบพารามิเตอร์ (If8a99) - เราได้เพิ่ม
getUserStyleFlavors
ลงในInteractiveWatchFaceClient
ซึ่ง OEM ส่วนใหญ่ให้ความสนใจ (I0f5d8) - ตอนนี้
GlesRenderer2
มีการโอเวอร์โหลดคอนสตรัคเตอร์ซึ่งช่วยให้คุณระบุรายการแอตทริบิวต์ที่จะลองทีละรายการด้วยeglChooseConfig
ได้ ตัวอย่างเช่น การดำเนินการนี้ช่วยให้คุณลองใช้การกำหนดค่าที่มีการปรับเกลี่ยการแสดงผลก่อน แล้วเปลี่ยนไปใช้การกำหนดค่าที่ไม่มีการปรับเกลี่ยการแสดงผลได้หากจำเป็น (I1ba74) - ตั้งแต่ Android U เป็นต้นไป ระบบจะเพิ่มการรองรับ
SystemDataSources.DATA_SOURCE_HEART_RATE
ลงใน WearOS ข้อมูลแทรกนี้รับประกันว่าจะรองรับข้อมูลแทรกSHORT_TEXT
เท่านั้น แต่เราขอแนะนำให้ComplicationSlot
ยอมรับSMALL_IMAGE
ด้วย เนื่องจาก OEM อาจเลือกแสดงทางลัดไปยังแอปสุขภาพแทนค่าปัจจุบัน (I34223) - เราได้เพิ่ม
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
ซึ่งตั้งแต่ Android U เป็นต้นไปจะควบคุมสิ่งที่จะเกิดขึ้นเมื่อระบบกู้คืนจากข้อมูลสำรองของแหล่งข้อมูลข้อมูลแทรกด้วยMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
โดยค่าเริ่มต้น ระบบจะถือว่าบริการแหล่งข้อมูลข้อมูลแทรกรองรับการสำรองข้อมูลการกําหนดค่า แต่หากไม่รองรับ ระบบจะเพิ่มการตั้งค่าข้อมูลเมตาMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
เป็นเท็จ ซึ่งจะทําเครื่องหมายช่องข้อมูลแทรกว่าไม่ได้กําหนดค่า (I6c505)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
24 มกราคม 2024
androidx.wear.watchface:watchface-*:1.2.1
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องใน Samsung Galaxy Watch 4, 5 และ 6 (43f0b0)
เวอร์ชัน 1.2.0
29 พฤศจิกายน 2023
androidx.wear.watchface:watchface-*:1.2.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.1.0
- เราได้เพิ่มการรองรับข้อมูลแทรกประเภทใหม่ๆ ซึ่งพร้อมให้ใช้งานใน Android T ดังนี้
GoalProgressComplicationData
ซึ่งคล้ายกับRangedValueComplicationData
ยกเว้นว่าใช้สำหรับความคืบหน้าตามเป้าหมายที่ค่าต่ำสุดโดยนัยคือ 0 และค่าที่อนุญาตต้องมากกว่าtargetValue
WeightedElementsComplicationData
ซึ่งประกอบด้วยอาร์เรย์ขององค์ประกอบ (คู่ของน้ำหนักและสี) พร้อมกับข้อความ/ชื่อ/รูปภาพ (ไม่บังคับ) ข้อมูลเหล่านี้อาจแสดงเป็นแผนภูมิวงกลมที่สีต้องสื่อความหมายตามบริบท เนื่องจากโดยทั่วไปแล้วแผนภูมิแบบซับซ้อนจะไม่มีพื้นที่เพียงพอที่จะแสดงผลป้ายกำกับ
- เราได้เพิ่มการรองรับ
ColorRanges
ที่ไม่บังคับไปยังRangedValueComplicationData
โดยปกติแล้ว ข้อมูลแทรกจะแสดงผลในสีที่หน้าปัดเลือก แต่บางครั้งComplicationDataSource
ก็เป็นตําแหน่งที่ดีที่สุดในการตั้งค่าสี เช่น เมื่อข้อมูลแทรกมีความหมายเชิงอรรถศาสตร์ เช่น สีแดงเป็นสีน้ำเงินสำหรับอุณหภูมิ ComplicationData
เกือบทุกประเภทรองรับSmallImages
แล้วในตอนนี้- เราได้เพิ่ม
ComplicationDisplayPolicy
โดยที่DO_NOT_SHOW_WHEN_DEVICE_LOCKED
จะสั่งให้หน้าปัดที่เข้ากันได้ไม่แสดงข้อมูลแทรกเมื่ออุปกรณ์ล็อกอยู่ - ตั้งแต่ Android T เป็นต้นไป OEM จะกำหนดได้ว่าคําขอข้อมูลแทรกมาจากหน้าปัดในรายการที่กําหนดโดยข้อมูลเมตา
android.support.wearable.complications.SAFE_WATCH_FACES
ในไฟล์ Manifest ของผู้ให้บริการหรือไม่ โดยComplicationRequest#isForSafeWatchFace
ผู้ให้บริการจะต้องมีสิทธิ์com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
เพื่อรับค่าอื่นๆ นอกเหนือจาก TargetWatchFaceSafety.UNKNOWN UserStyleFlavors
กลายเป็นฟีเจอร์ที่ไม่ใช่เวอร์ชันทดลองแล้ว
เวอร์ชัน 1.2.0-rc01
18 ตุลาคม 2023
androidx.wear.watchface:watchface-*:1.2.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-beta02
6 กันยายน 2023
androidx.wear.watchface:watchface-*:1.2.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
SuspendingComplicationDataSourceService#onDestroy
เปิดแล้ว โปรดทราบว่าเราได้นำการรองรับข้อมูลแทรกสภาพอากาศเริ่มต้นของระบบออกแล้ว
การเปลี่ยนแปลง API
- เปลี่ยน "แสดงแหล่งข้อมูลใหม่สำหรับข้อมูลแทรกสภาพอากาศ" กลับ (I6f335)
เวอร์ชัน 1.2.0-beta01
23 สิงหาคม 2023
androidx.wear.watchface:watchface-*:1.2.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตั้งแต่ Android T เป็นต้นไป WearOS จะรองรับข้อมูลแทรกระบบสภาพอากาศเริ่มต้น
การเปลี่ยนแปลง API
- เพิ่มระบบค่าเริ่มต้นของสภาพอากาศสำรองสำหรับข้อมูลแทรก (Ia0994)
- แพตช์นี้จะเพิ่ม
WatchFaceRuntimeService
และWatchFaceControlClient.createWatchFaceRuntimeControlClient
พร้อมกับ Guava Wrapper รายการเหล่านี้จะเพิ่มการรองรับรันไทม์ของหน้าปัด ซึ่งเป็นหน้าปัดประเภทพิเศษที่โหลดคําจํากัดความจากแพ็กเกจอื่น ปัจจุบัน WearOS รองรับรันไทม์สำหรับรูปแบบหน้าปัด Android เท่านั้น (I2799f) - การแก้ไขนี้ติดตามมาจาก aosp/2636578 ซึ่งเราได้เปลี่ยนชื่อ int defs เพื่อให้โค้ดที่ขึ้นอยู่กับ
WatchFaceType
,CanvasType
,TapType
หรือComplicationsSlotBoundsType
ไม่ต้องมีการเปลี่ยนแปลง (I4098b) - อัปเดตไฟล์ API เพื่อกำกับเนื้อหาการระงับความเข้ากันได้ (I8e87a, b/287516207)
- แพตช์นี้จะแสดงค่าคงที่
WatchFaceType
ในWatchFaceTypes
, ค่าคงที่CanvasType
ในCanvasTypes
, ค่าคงที่TapType
ในTapTypes
และค่าคงที่ComplicationsSlotBoundsType
ในComplicationsSlotBoundsType
(I3b85a, b/288750666) WatchFace.OverlayStyle
มีการใช้งานต่ำมากและ OEM รองรับได้ไม่มากนัก เราจึงจะลดการใช้งานและนําออกในภายหลัง (I7344a)
เวอร์ชัน 1.2.0-alpha09
21 มิถุนายน 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha09
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha09 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้
RangedValueComplicationData.Builder
ยอมรับDynamicFloat
แล้ว และDynamicComplicationText
ใหม่พร้อมใช้งานเป็นคลาสย่อยของComplicationText
ซึ่งทั้ง 2 รายการสามารถใช้นิพจน์แบบไดนามิก รวมถึงการเชื่อมโยงแพลตฟอร์มที่อัปเดตที่ 1 Hz ในอุปกรณ์ Wear 4 ที่รองรับ
การเปลี่ยนแปลง API
- เพิ่มประเภทแบบไดนามิกสำหรับระยะทางรายวัน แคลอรีรายวัน และชั้นที่เดินได้รายวัน ตอนนี้คีย์สําหรับแหล่งข้อมูลด้านสุขภาพของแพลตฟอร์มอยู่ใน
PlatformHealthSources.Keys
(Ib7637) - ใช้
PlatformDataProvider
เพื่อระบุอัตราการเต้นของหัวใจและจำนวนก้าวรายวัน นําอินเทอร์เฟซSensorGateway
ออกจาก API สาธารณะ (I55b84) - เปลี่ยนชื่อ
StateEntryValue
เป็นDynamicDataValue
และอัปเดต API สถานะให้ใช้DynamicDataKey
(If1c01) - เพิ่ม
AppDataKey
เพื่อเข้าถึงสถานะการพุชแอป เพิ่มPlatformDataKey
เพื่อเข้าถึงข้อมูลแพลตฟอร์ม เพิ่มการรองรับเนมสเปซในStateStore
(I7985e) - ระบบนำวิธีการ
enable
/disablePlatformSource
ออกจากDynamicTypeEvaluator
แล้ว ผู้โทรควรรับผิดชอบสำหรับการอัปเดต (I78c6d) - อนุญาตให้จำกัดขนาดของประเภทข้อมูลที่เชื่อมโยง (Ie2966)
เวอร์ชัน 1.2.0-alpha08
19 เมษายน 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha08
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha08 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตั้งแต่ Android T เป็นต้นไป ผู้ให้บริการข้อมูลแทรกที่มีสิทธิ์
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
จะลงทะเบียนข้อมูลเมตาandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
ซึ่งจะลบล้างandroid.support.wearable.complications.SUPPORTED_TYPES
สำหรับหน้าปัดที่ปลอดภัย ซึ่งหมายความว่าผู้ให้บริการข้อมูลแทรกอาจเลือกแสดงข้อมูลแทรกประเภทต่างๆ ในหน้าปัดที่เชื่อถือและไม่เชื่อถือ
การเปลี่ยนแปลง API
- การนำไปใช้งานของคลาส
@Deprecated
กับพร็อพเพอร์ตี้ (I882d1, b/271441831) - ชื่อพารามิเตอร์ค่าของ
Enum.valueOf
เปลี่ยนแปลง (Ia9b89) - ข้อยกเว้นที่โยนเพิ่มเติมจาก enum valueOf (I818fe)
- เราได้นํา
renderWatchFaceToSurface
ออกแล้ว และใช้createRemoteWatchFaceView
แทน ซึ่งสร้างขึ้นจาก SurfaceControlViewHost และอนุญาตให้ผู้เรียกใช้ฝังมุมมองจากหน้าปัด ซึ่งจะแสดงผลเมื่อไคลเอ็นต์เรียกRemoteWatchFaceViewHost#renderWatchFace
(Ib311d) - เราได้เพิ่ม
renderWatchFaceToSurface
ไปยังInteractiveWatchFaceClient
,HeadlessWatchFaceClient
และEditorSession
แล้ว โดยทั่วไปแล้ววิธีนี้จะมีประสิทธิภาพมากกว่าการแสดงผลเป็นบิตแมป (Ieacad) - เปลี่ยนชื่อ
ObservableStateStore
เป็นStateStore
แล้ว (Ieb0e2) - เพิ่ม
DynamicTypeEvaluator.Builder
แทนอาร์กิวเมนต์คอนสตรัคเตอร์เพื่อให้ใช้อาร์กิวเมนต์ที่ไม่บังคับได้มากขึ้น ซึ่งรวมถึงObservableStateStore
ที่ตอนนี้จะเป็นร้านค้าว่างโดยค่าเริ่มต้น (I6f832) - เปลี่ยนลําดับพารามิเตอร์ใน
DynamicTypeEvaluator
(Ic1ba4) - เพิ่มผู้ดำเนินการลงในเมธอด
DynamicTypeEvaluator.bind
แล้ว (I346ab) - เราได้เพิ่มเมธอด
startEvaluation
ลงในBoundDynamicType
เพื่อทริกเกอร์การประเมินหลังจากที่มีการเชื่อมโยงประเภทแบบไดนามิกแล้ว (I19908) - ผู้ให้บริการข้อมูลแทรกที่มี
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
ที่มีสิทธิ์สามารถลงทะเบียนข้อมูลเมตาandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
ซึ่งจะลบล้างandroid.support.wearable.complications.SUPPORTED_TYPES
สำหรับหน้าปัดที่ปลอดภัย (Id1c73) - เราได้เปลี่ยนชื่อ
CustomValueUserStyleSettings2
เป็นLargeCustomValueUserStyleSettings
แล้ว (Ic17ac)
การแก้ไขข้อบกพร่อง
- นำ
DynamicTypeValueReceiver#onPreUpdate
ออกแล้ว (I2dc35)
เวอร์ชัน 1.2.0-alpha07
22 กุมภาพันธ์ 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha07 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
ตั้งแต่ Android T เป็นต้นไป OEM จะกำหนดได้ว่าคําขอข้อมูลแทรกมาจากหน้าปัดในรายการที่กําหนดโดยข้อมูลเมตา
android.support.wearable.complications.SAFE_WATCH_FACES
ในไฟล์ Manifest ของผู้ให้บริการหรือไม่ภายในวันที่ComplicationRequest#isForSafeWatchFace
ผู้ให้บริการจะต้องมีสิทธิ์com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
จึงจะรับข้อมูลอื่นที่ไม่ใช่TargetWatchFaceSafety.UNKNOWN
ได้นอกจากนี้ Android T
CustomValueUserStyleSetting2
ยังพร้อมให้ใช้งานด้วย ซึ่งสามารถเก็บข้อมูลได้สูงสุด 12.5 KB ขีดจํากัดก่อนหน้านี้สําหรับCustomValueUserStyleSetting
คือ 1KB แม้ว่าจะมีขีดจำกัดขนาดที่เพิ่มขึ้น แต่เราขอแนะนำให้นักพัฒนาหน้าปัดเก็บข้อมูลให้น้อยที่สุด เนื่องจากระบบจะส่งการตั้งค่าผ่านบลูทูธระหว่างการแก้ไขและแบนด์วิดท์ของบลูทูธมีจำกัด
การเปลี่ยนแปลง API
- เราได้เพิ่มพารามิเตอร์ที่ไม่บังคับ
eglContextAttribList
ลงในGlesRenderer
และGlesRenderer2
ซึ่งช่วยให้คุณตั้งค่าEGL14.EGL_CONTEXT_CLIENT_VERSION
ที่ส่งไปยังEGL14.eglCreateContext
ได้ (I2a83e) - เราได้ย้ายข้อมูลไลบรารีหน้าปัดไปยัง
androidx.core.util.Consumer
แทนjava.util.function.Consumer
แล้ว (I273f5) - ข้อยกเว้นที่โยนเพิ่มเติมจากผู้รับค่าพร็อพเพอร์ตี้ KT (Iff9d9)
- เราได้เพิ่ม
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
เพื่อให้ไคลเอ็นต์ตัดสินใจได้ว่าจะต้องจำลองการรองรับในนามของหน้าปัดเก่าหรือไม่ (I24c89) - เราตัดสินใจว่า
isForSafeWatchFace
ควรเป็นIntDef
แบบ 3 สถานะ (Ief2f7) - สำหรับ Android T เราได้เปิดตัว
ComplicationRequest.isForSafeWatchFace
ซึ่งมีไว้สำหรับ OEM และใช้com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
สำหรับแหล่งข้อมูลในภาพระบบ ฟังก์ชันนี้จะแสดงผลเป็น "จริง" หากหน้าปัดที่กำลังขออยู่ภายในรายการหน้าปัดที่ปลอดภัยซึ่งแหล่งข้อมูลระบุไว้ในไฟล์ Manifest (I0cbb6) - สำหรับ Android T เราได้เพิ่ม
CustomValueUserStyleSetting2
ซึ่งเก็บได้สูงสุด 12.5 KB ขีดจํากัดก่อนหน้านี้สําหรับCustomValueUserStyleSetting
คือ 1KB (I0b100)
เวอร์ชัน 1.2.0-alpha06
25 มกราคม 2023
androidx.wear.watchface:watchface-*:1.2.0-alpha06
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha06 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เรากำลังดำเนินการเพิ่มการรองรับการเชื่อมโยงแพลตฟอร์มข้อมูลแทรกอยู่ แต่ยังไม่พร้อมใช้งานในตอนนี้ โปรดติดตามความคืบหน้าต่อไป
- เราได้เพิ่มการรองรับ
ComplicationSlot
XML สำหรับข้อมูลแทรกประเภทใหม่อย่าง GOAL_PROGRESS และ WEIGHTED_ELEMENTS
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่เครื่องมือแก้ไขหน้าปัดเปิดตัวในอุปกรณ์ Samsung อย่างไม่ถูกต้อง (3b5987)
- แก้ไขข้อบกพร่องที่บางครั้งข้อมูลแทรกไม่แสดงอย่างถูกต้องเมื่อสลับระหว่างหน้าปัดที่มีรายการโปรดหลายรายการ (b38ece)
- แก้ไขข้อบกพร่องเกี่ยวกับการทำให้เป็นอนุกรมของ perOptionScreenReaderNames ที่ทําให้หน้าปัดขัดข้อง (e9f466)
เวอร์ชัน 1.2.0-alpha05
7 ธันวาคม 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เมื่อไม่นานมานี้เราได้เพิ่มการรองรับ
UserStyleSettings
แบบลําดับชั้น และตั้งแต่ Android T เป็นต้นไป คุณสามารถมีComplicationSlotsUserStyleSetting
มากกว่า 1 รายการในลําดับชั้นได้ComplicationSlotsUserStyleSetting
จะมีเพียงรายการเดียวที่ใช้งานอยู่ โดยอิงตามการเลือกสไตล์ของผู้ใช้เรากำลังปรับปรุงการรองรับโปรแกรมอ่านหน้าจอสำหรับ
ListOption
และComplicationSlotsOption
ด้วยการเพิ่มช่องscreenReaderName
โปรดทราบว่าเครื่องมือแก้ไขสำหรับอุปกรณ์เสริมจะไม่สนใจช่องนี้ใน Android T
การเปลี่ยนแปลง API
- เราได้เพิ่มช่อง
screenReaderName
ใหม่ที่ไม่บังคับลงในListOption
และComplicationSlotsOption
เพื่อให้ผู้แก้ไขใช้ ซึ่งเครื่องมือแก้ไขสำหรับอุปกรณ์เสริมในอุปกรณ์ก่อน Android T จะละเว้น (I75326) - ตั้งแต่ Android T ระบบรองรับ
ComplicationSlotsUserStyleSettings
หลายรายการในลําดับชั้นสไตล์ ตราบใดที่จะมีComplicationSlotsUserStyleSettings
ใช้งานได้เพียงรายการเดียวในแต่ละครั้ง เราได้เพิ่มฟังก์ชันยูทิลิตีfindComplicationSlotsOptionForUserStyle
ลงในUserStyleSchema
เพื่อช่วยค้นหาComplicationSlotsOption
ที่ใช้งานอยู่ (หากมี) (Ic2b06) - มีการดึง
RangedValuesTypes
ไปยังออบเจ็กต์สหายของRangedValueComplicationData
และเปลี่ยนชื่อเป็นTYPE_UNDEFINED
,TYPE_RATING
และเพิ่มTYPE_PERCENTAGE
ใหม่ (I55d02) - เราได้เปลี่ยนชื่อ
DynamicFloat
เวอร์ชันทดลองเป็นFloatExpression
และทําเครื่องหมายเป็น@hide
แล้ว (Idf4f1) - เพิ่มคำอธิบายประกอบ
@JvmDefaultWithCompatibility
(I8f206)
เวอร์ชัน 1.2.0-alpha04
9 พฤศจิกายน 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- สำหรับ Android T เราได้เพิ่มการรองรับข้อมูลแทรกใหม่ 2 ประเภท ได้แก่
GoalProgressComplicationData
และWeightedElementsComplicationData
GoalProgressComplicationData
คล้ายกับRangedValueComplicationData
แต่ค่าของGoalProgressComplicationData
อนุญาตให้เกินเป้าหมายได้ (สำหรับRangedValueComplicationData
ระบบจะจำกัดค่าให้อยู่ในช่วง [min .. max]) ซึ่งส่งผลต่อการออกแบบภาพที่ไม่เหมาะกับหน้าปัดบางรุ่นGoalProgressComplicationData
เพิ่มการรองรับแผนภูมิวงกลมและการแจกแจงข้อมูลแบบง่ายที่คล้ายกัน- เราได้เพิ่มการรองรับ
ColorRamps
ไปยังRangedValueComplicationData
โดยที่ไม่บังคับ - สำหรับ Android T เราได้เพิ่ม
ComplicationPersistencePolicy
และsetCachePolicy
ลงในComplicationData
ซึ่งปัจจุบันช่วยให้ผู้ให้บริการควบคุมได้ว่าข้อมูลแทรกจะคงอยู่หรือไม่ (กล่าวคือ ข้อมูลแทรกได้รับการแคชไว้หลังจากการรีบูตหรือไม่) ข้อมูลแทรกส่วนใหญ่ไม่จําเป็นต้องตั้งค่าการควบคุมแคช แต่การตั้งค่านี้จะช่วยแก้ไขกรณีที่พบไม่บ่อยซึ่งมีข้อมูลล้าสมัยสําหรับข้อมูลแทรกบางรายการที่อัปเดตบ่อย (เช่น ข้อมูลแทรกข้อมูลสุขภาพ) นอกจากนี้ เรายังได้เพิ่มComplicationDisplayPolicy
โดยที่DO_NOT_SHOW_WHEN_DEVICE_LOCKED
จะสั่งให้หน้าปัดที่เข้ากันได้ไม่แสดงข้อมูลแทรกเมื่ออุปกรณ์ล็อกอยู่ (Ic9574)
การเปลี่ยนแปลง API
GoalProgressComplicationData
,WeightedElementsComplicationData
และColorRamp
ไม่ได้อยู่ในช่วงทดลองแล้ว (Ica9e2)- ตอนนี้
ComplicationPersistencePolicy
และComplicationDisplayPolicy
มีการทำเครื่องหมายเป็น T API อย่างถูกต้องแล้ว (I31d88) - ตอนนี้เครื่องมือสร้าง
ComplicationSlotOverlay
ที่เลิกใช้งานแล้วมีDeprecationLevel.WARNING
ซึ่งช่วยให้เรียกใช้จาก Java ได้อีกครั้ง (Ib308c) - เราได้แก้ไขปัญหาความเข้ากันได้ของ Java บางรายการกับ
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
และInteractiveWatchFaceClient
โดยการกำกับเนื้อหาด้วย@JvmDefaultWithCompatibility
(Id94fc) - เราได้นำ
ProtoLayoutComplicationData
และListComplicationData
เวอร์ชันทดลองออกแล้ว เรื่องราวสำหรับนักพัฒนาแอปเหล่านี้ไม่ชัดเจน เราหวังว่าจะได้กลับมาดูเรื่องนี้อีกครั้งในอนาคต (I9df05) - เราได้เพิ่ม
ValueType
กลับไปยังRangedValueComplicationData
แล้ว ตอนนี้WeightedElementsComplicationData
รองรับสีพื้นหลังแล้ว เรานำDiscreteRangedValueComplicationData
ออกแล้วเนื่องจากฟังก์ชันการทำงานเป็นส่วนหนึ่งของWeightedElementsComplicationData
(I6446c)
การแก้ไขข้อบกพร่อง
- ใส่
isForScreenShot
ในโค้ดเท่ากับและโค้ดแฮช ตรวจสอบว่าonRenderParametersChanged
ได้รับค่าisForScreenshot
ที่ถูกต้อง (I04a41) - แก้ไขการรั่วไหลของ
WatchFaceControlService
จากไคลเอ็นต์แบบ Headless (e90e00)
เวอร์ชัน 1.2.0-alpha03
5 ตุลาคม 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ไม่มีฟีเจอร์ใหม่ แต่เราได้แก้ไขข้อบกพร่องของเครื่องมือแก้ไขหน้าปัด 2 ข้อ
การเปลี่ยนแปลง API
- เลิกใช้งาน
UserStyleSchema.userStyleSettings
เนื่องจากrootUserStyleSettings
ไม่ได้เป็นแบบทดลองแล้ว (Ie96e3) - ย้าย
rootUserStyleSettings
ออกจากเวอร์ชันทดลอง (I8d6b3) - เราได้ทําเครื่องหมาย
WatchFaceColors
เป็นเวอร์ชันทดลองเนื่องจากระบบบางระบบไม่รองรับ (I6d75d) - แสดง
DisconnectReasons
ใน API สาธารณะเพื่อให้ทำงานร่วมกับIntDef
ได้ (I791f8)
การแก้ไขข้อบกพร่อง
- ปิดเครื่องมือแก้ไขในนาฬิกาหาก
SysUI
หมดพลังงาน หากSysUI
หยุดทำงานและเครื่องมือแก้ไขหน้าปัดในหน้าปัดไม่ปิด หน้าปัดอาจอยู่ในสถานะที่ไม่สอดคล้องกันเนื่องจากระบบอาศัยSysUI
เพื่อเก็บการเปลี่ยนแปลงสไตล์ของผู้ใช้ไว้(ba762a - แก้ไขปัญหาการรั่วไหลของหน่วยความจำใน
ComplicationDataSourceInfoRetriever
ซึ่งการดําเนินการต่อของ kotlin coroutine ทําหน้าที่เป็นรูท gc และเก็บกิจกรรมของเครื่องมือแก้ไขไว้ (33ee06)
เวอร์ชัน 1.2.0-alpha02
21 กันยายน 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
หน้าปัดบางหน้ามีการกําหนดค่านอก
UserStyle
ที่ส่งผลต่อลักษณะที่ปรากฏ (เช่น การเลือกรูปภาพพื้นหลัง) เราได้เพิ่มRenderer.sendPreviewImageNeedsUpdateRequest
ซึ่งช่วยให้หน้าปัดขอรูปภาพตัวอย่างที่อัปเดตได้ โปรดทราบว่าการอัปเดตระบบที่เกี่ยวข้องเป็นสิ่งจําเป็นเพื่อให้การดําเนินการนี้ทํางานได้นอกจากนี้ เรายังได้เพิ่ม API สำหรับหน้าปัดเพื่อแสดงสีของหน้าปัดต่อระบบ ซึ่งอาจเลือกจานสีตามข้อมูลนี้ โปรดทราบว่าฟีเจอร์นี้อยู่ในช่วงการทดสอบในแพตช์ถัดไป
ปัจจุบัน
ComplicationData
เกือบทุกประเภทรองรับSmallImages
การเปลี่ยนแปลง API
- บางครั้งตัวจัดการวอลเปเปอร์อาจแยกออกจากเครื่องมือหนึ่งและสร้างเครื่องมืออื่น เราได้เพิ่ม
DisconnectReason
int def และขยายClientDisconnectListener
ด้วยเมธอดใหม่ที่มีDisconnectReason
ซึ่งช่วยให้ Listener สังเกตการแยกเครื่องยนต์ได้ (I45cce) - เพิ่มพารามิเตอร์ที่ไม่บังคับ 2 รายการ
nameResourceId
และscreenReaderResourceId
ลงในตัวสร้างComplicationSlotOverlay
(I157e8) - เราได้เพิ่มตัวแฝง Guava สำหรับ
getOrCreateInteractiveWatchFaceClient
แบบโอเวอร์โหลดใหม่ที่มีPreviewImageUpdateRequestedListener
(Ic31f0) - เราได้เพิ่ม
Renderer.sendPreviewImageNeedsUpdateRequest
ซึ่งมีประโยชน์สำหรับหน้าปัดที่มีสถานะอยู่นอกUserStyleSchema
ซึ่งส่งผลต่อลักษณะที่ปรากฏ (เช่น หน้าปัดที่มีรูปภาพพื้นหลังที่เลือกได้) ในฝั่งไคลเอ็นต์ เราได้เพิ่มPreviewImageUpdateRequestedListener
เป็นแอตทริบิวต์ที่ไม่บังคับในgetOrCreateInteractiveWatchFaceClient
เพื่อสังเกตคําขอเหล่านี้ (Iff44a) - เราได้ลดความซับซ้อนของ API สำหรับการแสดง
WatchFaceColors
แล้ว ตอนนี้มีพร็อพเพอร์ตี้ง่ายๆ ชื่อwatchFaceColors
ในโปรแกรมแสดงผลที่หน้าปัดสามารถตั้งค่าได้ ซึ่งควรอัปเดตตามความจำเป็นเพื่อตอบสนองต่อการเปลี่ยนแปลงสไตล์ เราได้เพิ่มOnWatchFaceColorsListener
ลงในInteractiveWatchFaceClient
แทนการใช้WallpaperManager
เพื่อสังเกตการเปลี่ยนแปลงสี (I490bc) - เราได้เพิ่มคลาส
WatchFaceColors
ซึ่งเก็บสีหน้าปัด 3 สีที่โดดเด่นที่สุด และเพิ่มเมธอดแบบเปิดwatchfaceColors
และnotifyWatchFaceColorsChanged
ลงในโปรแกรมแสดงผล ซึ่งช่วยให้ระบบรับสีของหน้าปัดผ่านWallpaperManager.getWallpaperColors
ได้ (I3d611) - ตอนนี้
ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(และDiscreteRangedValueComplicationData
,GoalProgressComplicationData
และWeightedElementsComplicationData
เวอร์ชันทดลอง) ทั้งหมดรองรับSmallImages
แล้ว หากหน้าปัดเลือกที่จะแสดงผลข้อมูลแทรกหลายสี ตอนนี้หน้าปัดจะมีตัวเลือกให้ใช้SmallImage
หลายสี ซึ่งก่อนหน้านี้ต้องใช้รูปภาพโมโนโครม (I257df) - เปลี่ยนรูปแบบ
PreviewImageUpdateRequestedListener
เป็นConsumer<>
แทน (Ia875d) - แทนที่เมธอดนามธรรมเดี่ยว (SAM) ประเภท
OnWatchfaceColorsListener
ที่กําหนดเองด้วย SAM ประเภททั่วไปของ Java (Consumer) (I0c489) - เราได้เลิกใช้งานเมธอด
getOrCreateInteractiveWatchFaceClient
และlistenableGetOrCreateInteractiveWatchFaceClient
แบบเก่าที่ไม่ได้ระบุPreviewImageUpdateRequestedListener
(Iec502)
การแก้ไขข้อบกพร่อง
- เปลี่ยนชื่อ
DisconnectReason.BINDER_DIED
เป็นDisconnectReason.ENGINE_DIED
แล้ว (I4eb0e)
เวอร์ชัน 1.2.0-alpha01
10 สิงหาคม 2022
androidx.wear.watchface:watchface-*:1.2.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เราได้เพิ่มการรองรับรูปแบบข้อมูลแทรกใหม่แบบทดลอง นี่เป็นพื้นที่ที่กำลังพัฒนาอยู่ รูปแบบใหม่เหล่านี้อาจมีการเปลี่ยนแปลงโดยไม่ต้องแจ้งให้ทราบ และขณะนี้
CanvasComplicationDrawable
ยังไม่รองรับโปรแกรมแสดงผล - นอกจากนี้ เรายังได้เพิ่มระยะขอบที่ไม่บังคับลงในช่องข้อมูลแทรก ซึ่งทำให้แตะข้อมูลแทรกขนาดเล็กได้ง่ายขึ้น
การเปลี่ยนแปลง API
- ตอนนี้คลาส
BoundingArc
เวอร์ชันทดลองจะเปลี่ยนแปลงไม่ได้ (If624a) - การแตะข้อมูลแทรกขนาดเล็กอาจทำได้ยาก เพื่อเป็นการลดปัญหานี้ เราจึงได้เพิ่มการรองรับระยะขอบซึ่งจะเพิ่มพื้นที่ที่โต้ตอบได้โดยไม่ส่งผลต่อการเรนเดอร์
ComplciationSlots
จะมีระยะขอบขนาด 0 เว้นแต่จะระบุไว้ (ในโค้ดหรือผ่าน XML) (I14089) - เปลี่ยนลายเซ็น
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
ให้แสดงผลอินสแตนซ์ของโรงงานที่ไม่ใช่ค่า Null การคืนค่า Null ก่อนหน้านี้เป็นข้อผิดพลาด ดังนั้นการแก้ไขนี้เป็นเพียงการทำให้สัญญา API ชัดเจนขึ้น (I0fcc0) - เราได้เพิ่มอาร์กิวเมนต์
currentUserStyleRepository
ลงในเมธอดWatchFaceService.getComplicationSlotInflationFactory
เพื่อให้สอดคล้องกับcreateComplicationSlotsManager
(I2ddd2) UserStyleFlavors
กลายเป็นฟีเจอร์ที่ไม่ใช่เวอร์ชันทดลอง (I69cdc)- เราได้นํา
ValueType
เวอร์ชันทดลองออกจากRangedValueComplicationData
แล้วแทนที่ด้วยDiscreteRangedValueComplicationData
เวอร์ชันทดลอง ซึ่งคล้ายกับRangedValueComplicationData
ยกเว้นช่วงและค่าของจำนวนเต็ม นอกจากนี้ เรายังได้เปิดตัวGoalProgressComplicationData
เวอร์ชันทดลอง ซึ่งคล้ายกับRangedValueComplicationData
ยกเว้นว่าGoalProgressComplicationData
มีไว้สำหรับความคืบหน้าตามเป้าหมายที่ค่าต่ำสุดโดยนัยคือ 0 และค่าที่อนุญาตต้องมากกว่าtargetValue
หมายเหตุสำหรับตัวแปรRangedValue
ทั้งหมด คุณต้องระบุ monochromeImage, ข้อความ หรือชื่ออย่างน้อย 1 รายการ (I9590c) - เรานำ
boundsWithMargins
ออกจากComplicationSlotState
แล้วเนื่องจากซอฟต์แวร์ระบบไม่มี Use Case สำหรับboundsWithMargins
(I42e26) - เราได้เพิ่มการรองรับเวอร์ชันทดลองสำหรับ
WeightedElementsComplicationData
ซึ่งประกอบด้วยอาร์เรย์ขององค์ประกอบ (คู่ของน้ำหนักและสี) พร้อมกับข้อความ/ชื่อ/รูปภาพ (ไม่บังคับ) ข้อมูลเหล่านี้อาจแสดงเป็นแผนภูมิวงกลมที่สีต้องสื่อความหมายตามบริบท เนื่องจากโดยทั่วไปแล้วแผนภูมิแบบซับซ้อนจะไม่มีพื้นที่เพียงพอที่จะแสดงผลป้ายกำกับ (I87eea) - ตอนนี้
ColorRamps
เวอร์ชันทดลองซึ่งRangedValueComplicationData
และGoalProgressComplicationData
ใช้หรือไม่ก็ได้ช่วยให้คุณระบุลำดับสีได้สูงสุด 7 สีและแฟล็กที่ระบุว่าควรใช้การเฟรมภาพสีอย่างราบรื่นหรือควรแสดงผลสีแบบทึบขนาดเท่าๆ กัน (I9f5bf) RangedValueComplicationData.drawSegmented
เปลี่ยนเป็นvalueType
ซึ่งเป็น int ที่มีValueType IntDef
ที่สอดคล้องกัน ซึ่งให้ความหมายเชิงความหมายกับค่าช่วง และอาจใช้โดยโปรแกรมแสดงข้อมูลแทรกเพื่อส่งผลต่อการจัดรูปแบบ (I0616b)- เราได้เพิ่มการรองรับเวอร์ชันทดลองสําหรับ
ColorRanges
ที่ไม่บังคับไปยังRangedValueComplicationData
โดยปกติแล้ว ข้อมูลแทรกจะแสดงผลในสีที่หน้าปัดเลือก แต่บางครั้งComplicationDataSource
ก็เป็นตําแหน่งที่ดีที่สุดในการตั้งค่าสี เช่น เมื่อข้อมูลแทรกมีความหมายเชิงอรรถศาสตร์ เช่น สีแดงเป็นสีน้ำเงินสำหรับอุณหภูมิ (I5153a) - เราได้เพิ่มคำแนะนำ
drawSegmented
เวอร์ชันทดลองลงในRangedValueComplicationData
แล้ว ซึ่งจะเป็นสัญญาณให้โปรแกรมแสดงผลวาดเครื่องหมายค่าช่วงที่มีส่วนของค่า โดย 1 ส่วน = 1 หน่วย (I7d7c1)
การแก้ไขข้อบกพร่อง
- เราได้เพิ่มความสามารถในการกำหนด
ComplicationSlotBounds
โดยสัมพันธ์กับระบบพิกัดหน้าจอที่กำหนดไว้ล่วงหน้า (I0985d)
เวอร์ชัน 1.1
เวอร์ชัน 1.1.1
10 สิงหาคม 2022
androidx.wear.watchface:watchface-*:1.1.1
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้
- นี่เป็นรุ่นที่มีการแก้ไขข้อบกพร่องและขอแนะนำให้ผู้ใช้เวอร์ชัน 1.1.0 อัปเกรด
การแก้ไขข้อบกพร่อง
การจัดเตรียมหน้าปัดเป็นแบบไม่พร้อมกัน และหากได้รับข้อมูลแทรกก่อนที่หน้าปัดจะพร้อม ระบบจะใส่ข้อมูลแทรกนั้นไว้ในรายการ
pendingInitialComplications
และนำไปใช้ภายหลัง ขออภัยpendingInitialComplications
มีผลใช้งานเร็วเกินไป ซึ่งหมายความว่ามีช่วงเวลาหนึ่งระหว่างการเริ่มต้นหน้าปัดซึ่งข้อมูลแทรกจะยังคงอยู่ในpendingInitialComplications
และถูกละเว้น ปัญหานี้ได้รับการแก้ไขแล้ว นอกจากนี้ การแก้ไขนี้ยังแก้ไขข้อบกพร่องที่ComplicationRenderer
พยายามโหลดตัวยึดตำแหน่งแบบไม่พร้อมกันอย่างไม่ถูกต้อง ซึ่งทำให้อัปเดตกราฟิกการคอมไพล์ไม่ได้ สุดท้ายนี้ แพตช์นี้จะช่วยแก้ไขข้อบกพร่องทางทฤษฎีที่อาจเกิดขึ้นเมื่อต้องผสานpendingInitialComplications
หลายรายการ (0d03ba3)แก้ไขการล็อกที่อาจเกิดขึ้นใน
InteractiveInstanceManager
เมื่อgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
ถือล็อกไว้นานกว่าที่จำเป็น โดยปกติแล้วengine.setUserStyle
จะทำงานได้อย่างรวดเร็ว แต่หากด้วยเหตุผลบางอย่างที่ทำงานช้า ผลลัพธ์ที่ได้อาจเป็น Deadlock/ANR แพตช์นี้จะย้ายงานที่ไม่จำเป็นต้องออกจากล็อก ซึ่งจะช่วยลดโอกาสที่จะเกิดปัญหาการล็อกตาย (5a2adca)แก้ไขปัญหาหลายอย่างที่ยังคงมี
WatchFaceService
บางครั้ง WakeLock อาจเก็บWatchFaceService
ไว้ การเพิ่มการเรียกrelease()
จะแก้ไขปัญหานี้ได้ นอกจากนี้StateFlows
ยังเก็บWatchFaceService
ได้ การยกเลิกCoroutineScopes
ที่เกี่ยวข้องจะแก้ไขปัญหานี้ได้ (fd48138)เพิ่มการหมดเวลาลงใน
awaitDeferredWatchFace
* และแก้ไขwatchfaceOverlayStyle
NullPointerException
ภายใต้สถานการณ์ปกติ การดำเนินการนี้จะไม่หมดเวลา รวมถึงหลังจากการติดตั้งใหม่และสถานการณ์DirectBoot
ที่โหลด CPU สูง นอกจากนี้ เรายังแก้ไข NPE เมื่อเรียกใช้getWatchfaceOverlayStyle
หลังclose()
ด้วย (a4c3a5a)
เวอร์ชัน 1.1.0
15 มิถุนายน 2022
androidx.wear.watchface:watchface-*:1.1.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.0.0
การแก้ไขที่ปรับปรุงใหม่
- เราได้เพิ่มการรองรับสคีมาแบบลําดับชั้น ซึ่งช่วยให้ UI เครื่องมือแก้ไขเขียนลําดับชั้นของสไตล์ได้ ตอนนี้คุณสามารถระบุไอคอนแยกต่างหากสำหรับการใช้งานในหน้าปัดและเครื่องมือแก้ไขสำหรับอุปกรณ์เสริมได้แล้ว
- มีการรองรับการเลือกใช้อินสแตนซ์หน้าปัดหลายรายการ โดยแต่ละอินสแตนซ์จะมีรหัสที่ไม่ซ้ำกันสำหรับแพลตฟอร์ม API ทั้งหมด
- ตอนนี้คุณระบุชื่อที่อ่านออกเสียงได้สำหรับ
ComplicationSlots
เพื่อใช้ในเครื่องมือแก้ไขได้แล้ว - การรองรับแบบทดลองสำหรับการจัดสไตล์ "รูปแบบ" ซึ่งเป็นชุดรูปแบบที่คัดสรรมาซึ่งจะแสดงในเครื่องมือแก้ไขที่ใช้ร่วมกัน
- เมื่อโหลดอินสแตนซ์หน้าปัด 2 รายการสำหรับการแก้ไข อินสแตนซ์หน้าปัดจะแชร์ทรัพยากรได้ ซึ่งจะช่วยประหยัดหน่วยความจำ
- เมื่อเลือกข้อมูลแทรกในเครื่องมือแก้ไขหน้าปัด ระบบจะเลือกผู้ให้บริการปัจจุบันไว้ล่วงหน้า
ข้อมูลแทรกที่ปรับปรุงใหม่
- ตอนนี้คุณระบุ
ComplicationType
สำหรับแหล่งข้อมูลหลักและรองได้แล้ว ซึ่งช่วยให้นักพัฒนาแอปมีความยืดหยุ่นมากขึ้นสำหรับประสบการณ์การใช้งานที่พร้อมใช้งานทันที - เราได้เพิ่ม
ComplicationDataTimeline
ซึ่งจะระบุลำดับข้อมูลแบบจำกัดเวลาที่จะส่งไปยังหน้าปัด ซึ่งสามารถแคชและอัปเดตโดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในเวลาต่างๆ หรือกิจกรรมในปฏิทินหลายรายการที่กําลังจะเกิดขึ้น ComponentName
ของผู้ให้บริการข้อมูลแทรกเป็นส่วนหนึ่งของComplicationData
- ตอนนี้ระบบจะแคชข้อมูลแทรกไว้ ซึ่งจะช่วยให้คุณได้รับประสบการณ์การใช้งานที่ดีขึ้นเมื่อสลับไปมาระหว่างหน้าปัด
การเปลี่ยนแปลงอื่นๆ
- ตอนนี้คุณกำหนด
UserStyleSchema
และComplicationSlots
ใน XML ได้แล้ว วิธีนี้ช่วยให้การสร้างหน้าปัดง่ายขึ้นและช่วยให้ระบบค้นหาข้อมูลเมตาได้เร็วขึ้น - ตอนนี้หน้าปัดสามารถกำหนดสีที่ใช้สำหรับการแสดงผลวางซ้อนของระบบได้แล้ว
เวอร์ชัน 1.1.0-rc01
18 พฤษภาคม 2022
androidx.wear.watchface:watchface-*:1.1.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เราได้ทำการปรับปรุงความสามารถในการใช้งานการรองรับ XML ของหน้าปัดเพื่อให้ระบุ
ComplicationSlotBounds
และข้อมูลอ้างอิงสนับสนุนได้ง่ายขึ้น การทดสอบข้อมูลแทรกในขอบBoundingArc
ยังคงดำเนินต่อไป โดยมีการต่อสายไปยังdrawHighlight
แม้ว่าจะยังไม่แนะนําให้ใช้งานในตอนนี้
การเปลี่ยนแปลง API
- เราได้เพิ่มการโอเวอร์โหลดแบบทดลองของ
drawHighlight
ซึ่งยอมรับพารามิเตอร์BoundingArc
(I705f8) - ตอนนี้ XML หน้าปัดรองรับการอ้างอิงทรัพยากรแล้ว ซึ่งช่วยให้คุณใช้ค่าคงที่เดียวกันทั้งใน XML และโค้ดได้ (I3ef61)
- เราได้เพิ่มความสามารถในการกำหนด
ComplicationSlotBounds
ในรูปแบบcenter_x
,center_y
,size_x
,size_y
ตอนนี้คุณยังใช้หน่วยอื่น (เช่น dp) โดยใช้การอ้างอิงทรัพยากรได้ด้วย (Iace98)
การแก้ไขข้อบกพร่อง
- แก้ไข
runBlockingWithTracing
ที่กำลังทำงานในบริบทที่ไม่ถูกต้อง (4f595fe) - ทำให้
BaseEditorSession.close
เป็นแบบซิงโครนัส ปัญหาของBaseEditorSession.close
แบบไม่เป็นเชิงเวลาคือเราเผยแพร่ComplicationDataSourceInfoRetriever
ช้าเกินไป ซึ่งทำให้ระบบส่งสแปมคำเตือนใน logcat การดำเนินการนี้อาจไม่เป็นอันตราย แต่สแปม Logcat จะรบกวนสมาธิและควรหลีกเลี่ยง (35a5308)
เวอร์ชัน 1.1.0-beta02
11 พฤษภาคม 2022
androidx.wear.watchface:watchface-*:1.1.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เราได้เพิ่มการรองรับ
ComplicationData
ประเภทใหม่แบบทดลอง ซึ่งยังไม่พร้อมใช้งาน แต่โปรดติดตามข้อมูลอัปเดต
การเปลี่ยนแปลง API
- เราได้เพิ่ม
BoundingArc
ซึ่งเป็นคลาสทดลองที่อธิบายเรขาคณิตของช่องข้อมูลแทรกบนขอบ เราได้เพิ่มข้อมูลนี้ลงในComplicationSlot
และส่งต่อไปยังComplicationSlotState
และWatchFaceMetadataClient
แล้ว (I61a40) - เราได้เพิ่มความสามารถในการรับค่าการตั้งค่าใน
UserStyleSetting
XML ซึ่งช่วยให้คุณลดการพูดซ้ำและแชร์การตั้งค่าระหว่างหน้าปัดได้ (Ief841) - เราได้เพิ่ม
ComplicationData
ทดลองใหม่ 2 ประเภท ได้แก่ListComplicationData
และProtoLayoutComplicationData
ปัจจุบันยังไม่มีการรองรับการแสดงผลสำหรับประเภทเหล่านี้ และ WearOS ยังไม่รู้จักประเภทเหล่านี้หากเพิ่มลงในไฟล์ ManifestComplicationDataSource's
(I1811c)
การแก้ไขข้อบกพร่อง
- แก้ไขการจัดรูปแบบตามลําดับของประเภท
TimeLineEntry
เราไม่ได้ทำการจัดรูปแบบประเภทTimeLineEntry
ซึ่งหมายความว่าระบบจะตีความTimeLineEntries
ที่แคชไว้ซึ่งมีประเภท NoData อย่างไม่ถูกต้องว่ามีลักษณะเป็นประเภทของโรคแทรกซ้อนหลัก ซึ่งนำไปสู่ NPEs เมื่อมีการเข้าถึงช่องที่ต้องระบุซึ่งไม่มีอยู่ (55ffdf5) - แก้ไขข้อบกพร่องที่
setComplicationData
วางช่องไทม์ไลน์(fb392f5) - แก้ไขข้อบกพร่องที่บางครั้ง
runBlockingWithTracing
จะทําให้เกิด NPE(12ca62e) - แก้ไขข้อบกพร่องที่บางครั้งเราได้รับ
ClassNotFoundException: android.support.wearable.complications.ComplicationText
เมื่อได้รับข้อมูลแทรก (217942d9) - แก้ไขข้อบกพร่องใน
GlesRenderer.backgroundThreadInitInternal
ที่เรียกonBackgroundThreadGlContextCreated
เฉพาะในกรณีที่มีการเรียกEGL14.eglCreateContext
เท่านั้น แก้ไขข้อบกพร่องอีกข้อที่ภาพหน้าจอแสดงภาพผิดพลาดเนื่องจากverticalFlip
(c674ad2) - แก้ไขการตรวจสอบเวอร์ชัน XML ของ
WatchFaceService
เนื่องจากระบบโหลดจากแพ็กเกจที่ไม่ถูกต้อง (dfa06f3) - ตอนนี้รูปแบบการต่อสายของตำแหน่งโฆษณาใช้กลุ่มภายใน เราไม่ต้องการให้ตัวยึดตำแหน่งทำให้หน้าปัดที่มีอยู่ใช้งานไม่ได้ ซึ่งอาจใช้ a.s.w.c.ComplicationData ภายในที่ซ่อนอยู่ ก่อนหน้านี้รูปแบบการเดินสายของข้อมูล
NoDataComplication
จะจัดเก็บตัวยึดตําแหน่งในช่องปกติ (ซึ่งเป็นปัญหาเนื่องจากหน้าปัดแบบเก่าจะแสดงผลสตริงตัวยึดตําแหน่งซึ่งไม่เป็นไปตามที่ต้องการ) แต่ตอนนี้เราใช้แพ็กเกจภายในเพื่อแยกข้อมูลนี้ออกอย่างสมบูรณ์ (d5e7bd2)
เวอร์ชัน 1.1.0-beta01
20 เมษายน 2022
androidx.wear.watchface:watchface-*:1.1.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้เมธอด
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) และHeadlessWatchFaceClient.getUserStyleFlavors
จะแสดง RuntimeException ที่ไม่ได้ตรวจสอบแทนWatchFaceException
(I0718a) - ย้าย
WatchFaceMetadataClient.WatchFaceException
ออกจากชั้นเรียนแล้วเพื่อให้ใช้ซ้ำได้ (I4e869)
การแก้ไขข้อบกพร่อง
WatchFaceMetadataClient
จะไม่ขัดข้องอีกต่อไปเมื่อส่งComplicationSlotBounds
บางส่วน (Iaafd)
เวอร์ชัน 1.1.0-alpha05
6 เมษายน 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้คุณบอกได้ว่าแหล่งข้อมูลใดส่ง
ComplicationData
โดยการตรวจสอบComplicationData.dataSource
หน้าปัดบางหน้าอาจใช้ข้อมูลนี้เพื่อปรับแต่งการแสดงข้อมูลแทรก (I44a73)
การเปลี่ยนแปลง API
- เราได้เลิกใช้งาน
Renderer.CanvasRenderer
และRenderer.GlesRenderer
แล้วเพื่อใช้Renderer.CanvasRenderer2
และRenderer.GlesRenderer2
ซึ่งรองรับSharedAssets
ที่ส่งไปยังเมธอดการแสดงผล เราได้เปิดตัวListenableCanvasRenderer2
และListenableGlesRenderer2
สำหรับการทำงานร่วมกันของ Java (I31ffa) - เพิ่มความสามารถในการกำหนด Flavors ให้กับ
@WatchFaceFlavorsExperimental
ซึ่งเป็นรายการหน้าปัดที่มีสไตล์ที่กำหนดค่าไว้ล่วงหน้า (I04dd0) - ตอนนี้
Renderer.sharedAssets
เป็น StateFlow แล้ว และเราได้นําRenderer.SharedAssetsFactory
ที่ไม่ได้ใช้ออกแล้ว (I12ac5) UserStyleSchema.userStyleSettings
ไม่ได้เลิกใช้งานแล้ว (Iba7e3)- เราได้เพิ่ม
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
ซึ่งช่วยให้HeadlessWatchFaceClient
หลีกเลี่ยงค่าใช้จ่ายเพิ่มเติมที่ค่อนข้างต่ำของการส่งสคีมาผ่าน AIDL ก่อนที่จะคํานวณแฮชข้อมูลสรุป (I33597) - เราได้เพิ่ม
isUserStyleSchemaStatic
ลงในWatchFaceMetadataClient
ซึ่งจะเป็นจริงก็ต่อเมื่อUserStyleSchema
เชื่อถือได้ว่าจะไม่มีการเปลี่ยนแปลง เว้นแต่จะมีการอัปเดต APK หน้าปัด (I45a3f) - เราได้เพิ่ม
getDigestHash
ลงในUserStyleSchema
ซึ่งจะคํานวณแฮชข้อมูลสรุปของสคีมา ซึ่งสามารถใช้เพื่อระบุได้อย่างมีประสิทธิภาพว่าUserStyleSchema
มีการเปลี่ยนแปลงหรือไม่ (I2063d) - เปลี่ยนชื่อ
METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
เป็นMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
(I9ba5d) UserStyleSetting.OnWatchEditorData
ได้เปลี่ยนชื่อเป็นUserStyleSetting.WatchFaceEditorData
ซึ่งมีข้อมูลที่เครื่องมือแก้ไขหน้าปัดบนนาฬิกาใช้เท่านั้น (If3afb)
เวอร์ชัน 1.1.0-alpha04
9 มีนาคม 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha04 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
ComplicationData
ที่อัปเดตล่าสุดอาจไม่พร้อมใช้งานเสมอไป (เช่น ComplicationData ที่แคชไว้ซึ่งหมดอายุแล้ว) เราจึงขยายNoDataComplication
ด้วย ComplicationData ตัวยึดตําแหน่งที่ไม่บังคับ และเพิ่มComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
ซึ่งอนุญาตให้ใช้ในบริบทของตัวยึดตําแหน่งNoDataComplicationData
เท่านั้น หากเลือกไว้ ระบบจะแนะนำให้แสดงตัวยึดตำแหน่งเหล่านี้ด้วยกล่อง/ส่วนโค้งสีเทา (I6285d)- เราได้เพิ่ม
ComplicationData.getNextChangeInstant
ซึ่งจะบอกคุณถึงช่วงเวลาถัดไปหลังจากช่วงเวลาอ้างอิงซึ่งช่องใดก็ได้ของข้อมูลแทรกอาจเปลี่ยนแปลง ข้อมูลนี้ใช้ภายในเพื่อกำหนดเวลาเฟรมสำหรับการอัปเดตข้อมูลแทรก เช่น หากปกติหน้าปัดจะอัปเดต 1 ครั้งต่อนาที การตั้งค่าข้อมูลแทรกนาฬิกาจับเวลาจะทำให้หน้าปัดอัปเดต 1 ครั้งต่อวินาที (I7ceb2) - ตอนนี้
EditorSession.watchFaceId
ใช้ได้กับ API ทุกระดับแล้ว นอกจากนี้ ค่าของWatchState.watchFaceInstanceId
จะสอดคล้องกับWatchState.watchFaceInstanceId
เสมอ (I323b9) - คุณไม่จำเป็นต้องใช้
getPendingIntentForTouchEvent
API อีกต่อไปเนื่องจากปัญหาพื้นฐานได้รับการแก้ไขแล้วในเฟรมเวิร์ก เราจึงนํา API ที่เกี่ยวข้องทั้งหมดออกแล้ว หน้าปัดไม่จำเป็นต้องดำเนินการใดๆ เป็นพิเศษเพื่อให้PendingIntents
เริ่มทำงาน แม้ว่าจะมีการกดปุ่มหน้าแรกไปเมื่อไม่นานก็ตาม (I1f2e8) - เราได้เพิ่ม
RendererParameters.isForScreenShot
ซึ่งจะเป็นจริงหากการแสดงผลมีไว้สำหรับภาพหน้าจอ หน้าปัดบางหน้าที่มีภาพเคลื่อนไหวจำเป็นต้องทราบข้อมูลนี้เพื่อทำการปรับเปลี่ยนเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด (I96d99) - เราได้เพิ่ม
WatchFaceExceptionReason
ลงในWatchFaceException
เพื่อให้บริบทของสิ่งที่ผิดพลาด (I01d15) - ระบบได้นำ
ComplicationDataSourceService.onImmediateComplicationRequest
ออกและเพิ่มComplicationRequest.immediateResponseRequired
แทนเพื่อบ่งบอกว่าผู้ให้บริการต้องตอบกลับอย่างรวดเร็ว (ควรตอบกลับภายในเวลาไม่ถึง 100 มิลลิวินาที) โปรดทราบว่าฟังก์ชันการทำงานนี้ได้รับการปกป้องโดยสิทธิ์com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
ที่มีสิทธิ์ (Ie6b23) - อัปเดต Nullability ใน Core และ AppCompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)
การแก้ไขข้อบกพร่อง
- ตอนนี้แอปหน้าปัดจะขัดข้องพร้อมข้อยกเว้นหากการตรวจสอบสคีมาไม่สำเร็จ (Ia400f)
เวอร์ชัน 1.1.0-alpha03
9 กุมภาพันธ์ 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราได้เพิ่มการรองรับแบบทดลองสำหรับสคีมารูปแบบแบบลําดับชั้น เราได้เพิ่มพร็อพเพอร์ตี้ใหม่ลงใน
androidx.wear.watchface.style.UserStyleSetting.Option
ซึ่งก็คือ childSettings ซึ่งในตอนแรกมีเพียงListOption
ที่ใช้เท่านั้น ซึ่งช่วยให้ UI ของเครื่องมือแก้ไขอธิบายลําดับชั้นของสไตล์ได้ โดย UserStyle พื้นฐานจะไม่เปลี่ยนแปลงและยังคงเป็นMap<String, ByteArray>
(Iaf6f4) - เราได้เพิ่ม
WatchFace.OverlayStyle
ซึ่งช่วยให้หน้าปัดกำหนดค่าการแสดงผลของสถานะระบบที่วางซ้อนได้ (I8520d) - เราได้เปิดตัว
clearWithBackgroundTintBeforeRenderingHighlightLayer
ซึ่งเป็นพารามิเตอร์คอนสตรัคเตอร์ใหม่ที่ไม่บังคับสําหรับCanvasRenderer
(ค่าเริ่มต้นคือเท็จ) หากตั้งค่าเป็น "จริง" ระบบจะล้างผืนผ้าแคนวาสด้วยสีของสีอ่อนของพื้นหลัง (Ie01e5) - เพิ่มคีย์ข้อมูลเมตา
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
ซึ่งช่วยให้แหล่งข้อมูลข้อมูลแทรกสามารถระบุได้ว่าสามารถระบุค่าเริ่มต้นได้โดยไม่ต้องมีการกำหนดค่าใดๆ (Icc0d4) - เป็นเรื่องปกติที่เมื่อแก้ไขหน้าปัดจะมีทั้งอินสแตนซ์แบบอินเทอร์แอกทีฟและแบบ Headless เราได้เปิดตัว
Renderer.SharedAssets
เพื่อช่วยประหยัดหน่วยความจำ ซึ่งช่วยให้โปรแกรมแสดงผลหน้าปัดแชร์ข้อมูลที่แก้ไขไม่ได้ (เช่น พื้นผิวและชิดเดอร์) ระหว่างอินสแตนซ์ได้GlesRenderer.setEglConfig
และGlesRenderer.setEglDisplay
เลิกใช้งานแล้ว เราไม่ได้เป็นตั้งใจให้ตั้งค่าค่าเหล่านี้ได้ และการตั้งค่าดังกล่าวอาจทําให้ลักษณะการทํางานไม่ชัดเจน (I0d9e7) - เราได้เพิ่ม
setNameResourceId
และsetScreenReaderNameResourceId
(ซึ่งอ้างอิงทรัพยากรสตริง) ลงในComplicationSlot.Builder
และตัวรับที่เกี่ยวข้องในandroidx.wear.watchface.client.ComplicationSlotState
ซึ่งจะช่วยให้ระบบดึงข้อมูลชื่อ ComplicationSlots เพื่อใช้ในเครื่องมือแก้ไขและโปรแกรมอ่านหน้าจอได้ (If6c6a) - ตอนนี้
WatchfaceMetadataClient.getUserStyleSchema
และgetComplicationSlotMetadataMap
จะแสดงผลเป็นWatchFaceException
แทนRemoteException
(I86f11) onSynchronousComplicationRequest
และฟังก์ชันที่เกี่ยวข้องในComplicationDataSourceService
ได้เปลี่ยนชื่อเป็นonImmediateComplicationRequest
แล้ว ฯลฯ (I87ba0)- ตัวแก้ไขหน้าปัดมีพื้นที่บนหน้าจอน้อยกว่าตัวแก้ไขสำหรับแอปที่ใช้ร่วมกันมาก จึงควรรองรับไอคอนที่แตกต่างกันสำหรับตัวแก้ไขหน้าปัด แพตช์นี้จะเพิ่ม
OnWatchEditorData
(ปัจจุบันมีเพียงไอคอน) ลงใน UserStyleSettings ทั้งหมดและคลาส Option ตามความเหมาะสม (If1886) - เราได้เพิ่ม
@JvmOverloads
ลงในตัวสร้างของ ListenableGlesRenderer เพื่อให้การทํางานร่วมกันของ Java ดีขึ้น (I2974a)
การแก้ไขข้อบกพร่อง
- ตอนนี้เครื่องมือสร้างของ
ListenableGlesRenderer
ได้รับการทําเครื่องหมายเป็น@Throws(GlesException::class)
อย่างถูกต้องแล้ว และตอนนี้คุณขยายคลาสนี้ใน Java ได้แล้ว (Iac6d0) - แก้ไขข้อบกพร่องเกี่ยวกับ
PhotoImageComplicationData
tapAction ที่ไม่ได้รับการจัดการอย่างถูกต้อง (I1cc30)
เวอร์ชัน 1.1.0-alpha02
12 มกราคม 2022
androidx.wear.watchface:watchface-*:1.1.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้
ComplicationData
และคลาสย่อยที่เกี่ยวข้องมีการลบล้างเมธอด hashcode, equals และ toString แล้วเพื่อช่วยในการแก้ไขข้อบกพร่องและการทดสอบ ซึ่งทำให้ใช้งานได้ง่ายขึ้น
การเปลี่ยนแปลง API
- เมธอด
WatchfaceMetadataClient
จะแสดงข้อผิดพลาดRemoteExceptions
อีกครั้งตามความเหมาะสม ซึ่งช่วยให้โค้ดไคลเอ็นต์ตรวจหาข้อผิดพลาดจากหน้าปัดได้ง่ายขึ้น (I78785) - ตอนนี้
ComplicationData
และคลาสย่อยมี hashcode, equals และ toString แล้ว (I24bc6)
เวอร์ชัน 1.1.0-alpha01
15 ธันวาคม 2021
androidx.wear.watchface:watchface-*:1.1.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
ตอนนี้คุณกำหนด
UserStyleSchema
และComplicationSlots
ใน XML ได้แล้ว ซึ่งทำให้การสร้างหน้าปัดง่ายขึ้น นอกจากนี้ การค้นหาWatchFaceMetadataClient
ยังเร็วขึ้นด้วยเนื่องจากไม่จําเป็นต้องเชื่อมโยงกับบริการเพื่อรับข้อมูลเมตาWatchFaceMetadataClient
และListenableWatchFaceMetadataClient
ไม่ได้อยู่ในช่วงทดลองอีกต่อไป และจะกลายเป็นส่วนหนึ่งของ API ที่เสถียร ระบบจะรองรับหน้าปัดหลายอินสแตนซ์ได้ (ไม่บังคับ) โดยแต่ละอินสแตนซ์จะมีตัวเลือกการจัดสไตล์ที่ผู้ใช้กำหนดไว้แตกต่างกัน ซึ่งจะปรากฏในเครื่องมือเลือกหน้าปัด หากต้องการเลือกใช้ฟีเจอร์นี้ หน้าปัดต้องมีแท็กข้อมูลเมตาต่อไปนี้ในไฟล์ Manifest<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />
หน้าปัดบางหน้ามีสถานะที่ไม่ได้บันทึกไว้ใน
UserStyle
เพื่อรองรับกรณีนี้และอินสแตนซ์หลายรายการ ตอนนี้รหัสอินสแตนซ์ของหน้าปัดพร้อมใช้งานผ่านWatchState.watchFaceInstanceId
แล้วระบบกำลังแคช
ComplicationData
เพื่อให้ข้อมูลแทรกแสดงทันทีที่โหลด บางครั้งระบบจะแคชComplicationData
ไว้ในหน่วยความจำ และบางครั้งไลบรารีหน้าปัดจะจัดเรียงตามลําดับ เมื่อแปลงเป็นซีเรียล ระบบจะลบ tapAction ที่เชื่อมโยงไว้ หากเกิดกรณีนี้ComplicationData.tapActionLostDueToSerialization
จะแสดงผลเป็นtrue
และหน้าปัดควรแสดงผลข้อมูลแทรกในลักษณะอื่น (เช่น เป็นสีเทาหรือโปร่งแสงบางส่วน) เพื่อบ่งบอกว่าแตะไม่ได้ ระบบจะส่งComplicationData
ที่อัปเดตแล้วพร้อมtapAction
โดยเร็วที่สุดComplicationData
บางรายการไม่ควรแคชไว้เป็นเวลานาน เราจึงเพิ่มฟีเจอร์ทั่วไปอย่างComplicationDataTimeline
เข้ามาเพื่อรองรับกรณีนี้ สามารถใช้เพื่อระบุลำดับComplicationData
ที่จำกัดเวลาเพื่อส่งไปยังหน้าปัด ซึ่งสามารถแคชและอัปเดตโดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในเวลาต่างๆ หรือกิจกรรมในปฏิทินหลายรายการที่กําลังจะเกิดขึ้นComplicationRequestListener
ได้รับการขยายให้มีเมธอดใหม่onComplicationDataTimeline
ซึ่งคุณใช้เพื่อแสดงผลข้อมูลนี้ได้DefaultComplicationDataSourcePolicy
ได้รับการขยายการให้บริการเพื่อให้คุณระบุComplicationType
สําหรับแหล่งข้อมูลหลักและรองได้เราได้เพิ่มการรองรับผู้ให้บริการข้อมูลแทรกแบบซิงค์ ซึ่งข้อมูลแทรกจะอัปเดตด้วยความถี่สูงกว่าปกติสูงสุด 1 ครั้งต่อวินาทีเมื่อหน้าปัดแสดงอยู่และไม่ใช่โหมดแอมเบียนท์ หมายเหตุ: ผู้ให้บริการข้อมูลแทรกแบบซิงค์อาจมีการจำกัดการใช้งานเนื่องจากข้อกังวลด้านหน่วยความจำ
การเปลี่ยนแปลง
PendingIntentTapListener
มีแนวโน้มที่จะเปลี่ยนกลับเนื่องจากเราแก้ปัญหาพื้นฐาน (หน้าปัดไม่สามารถเปิดใช้งานกิจกรรมเป็นเวลา 5 วินาทีหลังจากกดปุ่ม Home) ในเฟรมเวิร์กแทน
การเปลี่ยนแปลง API
ComplicationData.isCached
เปลี่ยนเป็นtapActionLostDueToSerialization
ซึ่งมีประโยชน์มากกว่าเมื่อต้องพิจารณาว่าควรแสดงผลช่องข้อมูลแทรกในลักษณะอื่นหรือไม่เพื่อบ่งบอกว่าแตะไม่ได้ (I6de2f)- เพิ่ม
ComplicationDataTimeline
ไปยังwear-complication-data-source
แล้ว สามารถใช้เพื่อระบุลำดับComplicationData
ที่จำกัดเวลาเพื่อส่งไปยังหน้าปัด ซึ่งสามารถแคชและอัปเดตโดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในช่วงเวลาต่างๆ หรือกิจกรรมในปฏิทินหลายรายการที่กําลังจะเกิดขึ้นComplicationRequestListener
ได้รับการขยายให้มีเมธอดใหม่onComplicationDataTimeline
ซึ่งคุณใช้เพื่อแสดงผลข้อมูลนี้ได้ มี Wrapper ของ Kotlin ใหม่SuspendingTimelineComplicationDataSourceService
สำหรับระงับบริการแหล่งข้อมูล (Idecdc) - เพิ่ม
PendingIntentTapListener
และWatchFaceControlClient.getPendingIntentForTouchEvent
แล้ว ซึ่งจะช่วยหน้าปัดที่ต้องเปิด Intent เพื่อตอบสนองต่อการแตะเพื่อแก้ปัญหาที่เฟรมเวิร์กบล็อกการเปิดใช้งานใหม่เป็นเวลา 5 วินาทีหลังจากกดปุ่ม Home (I98074) - เปิดตัวแคช
ComplicationData
สำหรับหน้าปัดแต่ละหน้า การดำเนินการนี้มีวัตถุประสงค์เพื่อให้หน้าปัดแสดงค่าข้อมูลข้อมูลแทรกล่าสุดที่ทราบเมื่อโหลดจนกว่าระบบจะมีโอกาสอัปเดต มีเมธอด API ใหม่WatchFaceControlClient.hasComplicationCache
สำหรับ OEM ซึ่งอาจส่งผลต่อกลยุทธ์ของระบบในการส่งข้อมูลแทรกไปยังหน้าปัด นอกจากนี้ComplicationData
ยังมีพร็อพเพอร์ตี้isCached
และเราขอแนะนำให้แสดงผลข้อมูลแทรกที่แคชไว้แตกต่างกัน เนื่องจากระบบแคชtapAction
ไม่ได้และจะแสดงเป็นnull
ในข้อมูลแทรกที่แคชไว้ (I404b0) - รหัสอินสแตนซ์ของหน้าปัดพร้อมใช้งานแล้วผ่าน
WatchState.watchFaceInstanceId
หน้าปัดส่วนใหญ่ไม่จําเป็นต้องใช้คีย์นี้ แต่หากมีสถานะต่อหน้าปัดที่ไม่ได้จัดเก็บไว้ในสคีมา คีย์นี้จะเป็นคีย์ที่ใช้ระบุอินสแตนซ์หน้าปัด คุณสามารถระบุรหัสเมื่อโทรหาWatchFaceControlClient.createHeadlessWatchFaceClient
ได้แล้วเพื่อสนับสนุนการดำเนินการนี้ (I1ff98) DefaultComplicationDataSourcePolicy
ที่ขยายการให้บริการโดยสามารถตั้งค่าComplicationTypes
เริ่มต้นสำหรับผู้ให้บริการหลัก รอง และผู้ให้บริการระบบสำรองComplicationSlot.defaultDataSourceType
เลิกใช้งานแล้วในตอนนี้ (If0ce3)- ตอนนี้
ComplicationSlot.configExtras
เปลี่ยนแปลงได้และอัปเดตได้ก่อนเรียกใช้EditorSession.openComplicationDataSourceChooser()
(I6f852) - เพิ่ม
WatchFace.setComplicationDeniedDialogIntent
และsetComplicationRationaleDialogIntent
แล้ว ระบบจะเปิด Intent เหล่านี้เพื่อแสดงกล่องโต้ตอบเหตุผลก่อนขอสิทธิ์ใช้ข้อมูลแทรก และกล่องโต้ตอบอีกกล่องที่อธิบายว่าจำเป็นต้องมีสิทธิ์ใช้ข้อมูลแทรกเมื่อพยายามแก้ไขข้อมูลแทรกเมื่อถูกปฏิเสธสิทธิ์ (เครื่องมือเลือกผู้ให้บริการจะเปิดไม่สำเร็จ จึงต้องมีกล่องโต้ตอบ) (I3a29c) - ตอนนี้คุณกำหนด
UserStyleSchema
และComplicationSlots
ใน XML ได้แล้ว วิธีนี้ช่วยให้การสร้างหน้าปัดง่ายขึ้นและทำให้WatchFaceMetadataClient
ค้นหาได้เร็วขึ้นเนื่องจากไม่ต้องเชื่อมโยงกับบริการเพื่อรับข้อมูลเมตา (I85bfa) - เพิ่ม
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
เพื่อให้ลูกค้าระบุได้ว่าหน้าปัดรองรับgetPendingIntentForTouchEvent
หรือไม่ (I0b917) WatchFaceMetadataClient
และListenableWatchFaceMetadataClient
ไม่ได้อยู่ในขั้นทดลองอีกต่อไป สามารถใช้เพื่อรับข้อมูลเมตาของหน้าปัดได้อย่างมีประสิทธิภาพ หากเป็นไปได้โดยไม่ต้องเปิด Binder ไปยังหน้าปัด (Ibb827)- เพิ่มการรองรับผู้ให้บริการข้อมูลแทรกแบบซิงค์ซึ่งข้อมูลแทรกจะอัปเดตด้วยความถี่สูงกว่าปกติสูงสุด 1 ครั้งต่อวินาทีเมื่อหน้าปัดแสดงอยู่และไม่ใช่โหมดแอมเบียนท์ หากต้องการใช้ ผู้ให้บริการต้องใส่เมตาแท็ก
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
ใหม่ในไฟล์ Manifest และลบล้างonSynchronousComplicationRequest
นอกจากนี้ ยังอาจต้องลบล้างonStartSynchronousComplicationRequests
และonStopInteractiveComplicationRequests
เพื่อรับการแจ้งเตือนเมื่อข้อมูลแทรกเข้าสู่และออกจากโหมดอินเทอร์แอกทีฟ ทั้งนี้ขึ้นอยู่กับลักษณะของแหล่งข้อมูล (I8fe9d)
รุ่น 1.0
เวอร์ชัน 1.0.1
9 กุมภาพันธ์ 2022
androidx.wear.watchface:watchface-*:1.0.1
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องเกี่ยวกับ
PhotoImageComplicationData
tapAction ที่ไม่ได้รับการจัดการอย่างถูกต้อง (I1cc30)
เวอร์ชัน 1.0.0
1 ธันวาคม 2021
androidx.wear.watchface:watchface-*:1.0.0
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของ 1.0.0
แพ็กเกจ androidx.wear.watchface
เป็นไลบรารีใหม่ที่แนะนำสำหรับการพัฒนาหน้าปัด WearOS ซึ่งจะมีฟีเจอร์ใหม่ๆ หลายรายการเมื่อเทียบกับไลบรารีการสนับสนุนอุปกรณ์ที่สวมใส่ได้แบบเก่า
- ไลบรารีรองรับการจัดสไตล์ของผู้ใช้โดยตรง (ดู
androidx.wear.watchface.style
) เช่น การเปลี่ยนจานสี สไตล์เข็มนาฬิกา ลักษณะเครื่องหมายบอกเวลา เป็นต้น ตอนนี้การพัฒนาเครื่องมือแก้ไขหน้าปัดในนาฬิกาโดยใช้ androidx.wear.watchface.editor ทำได้ง่ายขึ้นมาก และคุณแก้ไขหน้าปัดได้จากแอปที่ใช้ร่วมกันของระบบโดยไม่ต้องเขียนโค้ดเพิ่มเติม - แนวทางปฏิบัติแนะนำที่ผสานรวมไว้แล้ว คลังจะสร้างป้ายกำกับเนื้อหาสำหรับโปรแกรมอ่านหน้าจอโดยอัตโนมัติสำหรับข้อมูลแทรก (คุณเพิ่มป้ายกำกับของคุณเองได้ด้วย) และอัตราเฟรมจะลดลงโดยอัตโนมัติเมื่อแบตเตอรี่เหลือน้อยและไม่ชาร์จเพื่อยืดอายุการใช้งานแบตเตอรี่
- คุณใช้โค้ดน้อยลงในการพัฒนาหน้าปัด โดยเฉพาะสำหรับข้อมูลแทรกที่ย้ายข้อมูลโค้ดที่ซ้ำกันจำนวนมากไปยังไลบรารีแล้ว
การแก้ไขข้อบกพร่อง
- แก้ไข
EditorSession.userStyle.compareAndSet
(I6f676) - แก้ไขเวลาหน่วงของหน้าปัดสั้นมาก (Iffb97)
- กระจาย
InteractiveWatchFaceImpl.onDestroy
บนเธรด UI (I83340) - แก้ไขปัญหาหลายประการเกี่ยวกับตัวรับสัญญาณการออกอากาศ (I7d25f)
เวอร์ชัน 1.0.0-rc01
3 พฤศจิกายน 2021
androidx.wear.watchface:watchface-*:1.0.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
แก้ไข dump() (เรียกโดย adb shell dumpsys) ซึ่งใช้งานไม่ได้เนื่องจากการย้ายข้อมูลขั้นตอน (087cf9e)
ตรวจสอบลําดับของ writeDirectBootPrefs ให้ถูกต้อง เราต้องการให้ writeDirectBootPrefs ทำงานหลังจาก initStyleAndComplications เสมอ ไม่เช่นนั้นเราอาจเสี่ยงที่จะเลื่อนเวลาเริ่มต้นเทรด UI (37650ac)
ตรวจสอบว่ามีการเรียก Renderer.onDestroy ในกรณีที่สร้างโปรแกรมแสดงผลแล้ว แต่ WF init ยังไม่เสร็จสมบูรณ์และมีการเรียกใช้ Engine.onDestroy เราจะต้องเรียกใช้ Renderer.onDestroy (f9952dc)
การเพิ่มประสิทธิภาพ/การแก้ไข isBatteryLowAndNotCharging แพตช์นี้จะย้ายการตั้งค่าเริ่มต้นของ isBatteryLowAndNotCharging ไปไว้ก่อนหน้านี้ ซึ่งหมายความว่าจะดำเนินการควบคู่ไปกับ createWatchFace ได้ นอกจากนี้ เรายังรับฟัง ACTION_POWER_DISCONNECTED ด้วย (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive เป็นเท็จหลังจากปิด (ab9774e)
เวอร์ชัน 1.0.0-beta01
27 ตุลาคม 2021
androidx.wear.watchface:watchface-*:1.0.0-beta01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-alpha24
13 ตุลาคม 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha24
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha24 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ระบบได้ย้ายชั้นเรียนในแพ็กเกจ
androidx.wear.watchface.complications
ไปยังโปรเจ็กต์wear:watchface:watchface-complications
ใหม่แล้ว โปรดทราบว่าคุณจะรวมทั้งไลบรารีนี้และwear:watchface:watchface-complications-data
เวอร์ชันอัลฟ่าก่อนหน้าไม่ได้ เนื่องจากคุณจะได้รับข้อผิดพลาดเกี่ยวกับคลาสที่ซ้ำกัน (I97195) - Renderer.dump เปลี่ยนชื่อเป็น Renderer.onDump และมีการกำกับเนื้อหาด้วย @UiThread (I44845)
- เปลี่ยนชื่อ
InteractiveWatchFaceClient.addWatchFaceReadyListener
เป็นaddOnWatchFaceReadyListener
และเปลี่ยนชื่อremoveWatchFaceReadyListener
เป็นremoveOnWatchFaceReadyListener
แล้ว (I48fea) - EditorSession
getComplicationsPreviewData
และgetComplicationsDataSourceInfo
ไม่ใช่ฟังก์ชันที่ระงับอีกต่อไป แต่คือพร็อพเพอร์ตี้StateFlow<>
ที่มีค่าเป็น Null ในตอนเริ่มต้น ใน ListenableEditorSession เราได้นําgetListenableComplicationPreviewData
และgetListenableComplicationsProviderInfo
ออกแล้วเพื่อใช้ออบเจ็กต์StateFlow<>
ใหม่จากคลาสพื้นฐาน หากต้องการตรวจสอบการเปลี่ยนแปลงในโค้ด Java ให้ลองใช้androidx.lifecycle.FlowLiveDataConversions.asLiveData
เพื่อแปลงเป็นLiveData<>
(Ic5483)
เวอร์ชัน 1.0.0-alpha23
29 กันยายน 2021
androidx.wear.watchface:watchface-*:1.0.0-alpha23
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha23 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
ตอนนี้ไลบรารีหน้าปัดเป็นกลุ่มไลบรารีเดียวแล้ว ไลบรารีจึงย้ายไปและคุณจะต้องอัปเดตการนําเข้า gradle ดังนี้
เครื่องเก่า | ใหม่ |
---|---|
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 |
การเปลี่ยนแปลง API
- ย้ายข้อมูล
androidx.wear
ไลบรารีหน้าปัดและข้อมูลแทรกแยกต่างหากไปยังกลุ่มไลบรารีandroidx.wear.watchface
(b25f3c0) - เพิ่ม EditorRequest.canWatchFaceSupportHeadlessEditing เพื่อให้ไคลเอ็นต์ทราบว่าเครื่องมือแก้ไขหน้าปัดรองรับการแก้ไขแบบ Headless หรือไม่ โปรดทราบว่าจะมีผลลัพธ์ที่ผิดพลาดบางส่วนเนื่องจากมีการเพิ่มการรองรับใน asop/1756809 แต่ระบบจะแสดงผลลัพธ์ที่ถูกต้องสำหรับหน้าปัดทั้งหมดในอนาคต (ca55590)
- ตอนนี้โปรแกรมแสดงผลมีเมธอด dump() ซึ่งสามารถลบล้างเพื่อเพิ่มข้อมูลที่กําหนดเองลงในข้อมูลที่สร้างขึ้นโดยบริการกิจกรรม WatchFaceService ของเชลล์ ABD (95235f9)
- ตอนนี้ InteractiveWatchFaceClient.addWatchFaceReadyListener จะระบุผู้ดำเนินการก่อน (563ac2f)
- ระบบนำ StateFlowCompatHelper ออกแล้ว คุณควรใช้ asLiveData (androidx.lifecycle.asLiveData) แทน (bd35d3)
- CurrentUserStyleRepository.userStyle จะเปลี่ยนไม่ได้อีกต่อไป (I44889)
- เปลี่ยนชื่อ WatchFaceReadyListener เป็น OnWatchFaceReadyListener แล้ว (Ic12a9)
การแก้ไขข้อบกพร่อง
- InteractiveInstanceManager.deleteInstance เพื่อเรียก onDestroy ซึ่งจําเป็นเพื่อให้ระบบเก็บขยะ InteractiveWatchFaceImpl (fce4af8, b/199485839)