หน้าปัด Wear
หมายเหตุ: ตั้งแต่เดือนมกราคม 2026 เป็นต้นไป คุณจะต้องใช้ Watch Face Format เพื่อติดตั้งหน้าปัดนาฬิกาในอุปกรณ์ Wear OS ทุกรุ่น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงที่ผู้ใช้มองเห็นได้ในบทความนี้ในศูนย์ช่วยเหลือ
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 17 ธันวาคม 2025 | 1.2.1 | - | 1.3.0-beta01 | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Wear คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ 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-beta01
17 ธันวาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.3.0-beta01 เวอร์ชัน 1.3.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับข้อมูลตัวอย่างการแสดงผลแบบคงที่ ซึ่งผู้ให้บริการการแสดงผลสามารถระบุข้อมูลตัวอย่างแบบคงที่ในไฟล์ Manifest ได้ ดูรายละเอียดเพิ่มเติมได้ที่
androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser - มีการเพิ่มคลาสยูทิลิตี
ComplicationTextFormattingพร้อมรองรับการจัดรูปแบบข้อมูลและเวลาให้สั้นที่สุด ซึ่งมีประโยชน์สำหรับภาวะแทรกซ้อนที่พื้นที่เป็นสิ่งสำคัญอย่างยิ่ง
การเปลี่ยนแปลง API
- ตอนนี้พร็อพเพอร์ตี้
Renderer.watchfaceColorsที่เคยเป็นเวอร์ชันทดลองเป็นแบบส่วนตัวแล้ว พร็อพเพอร์ตี้นี้ยังมีตัวช่วยเข้าถึงแบบสาธารณะ (Ifdf60, b/409363281)
การแก้ไขข้อบกพร่อง
- โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (I48968, b/407632515)
เวอร์ชัน 1.3.0-alpha07
23 เมษายน 2025
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.3.0-alpha07 เวอร์ชัน 1.3.0-alpha07 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- คุณสามารถกำหนดสคีมา UserStyle ของหน้าปัดได้มาระยะหนึ่งแล้ว และกำหนด
ColorUserStyleSettingใน XML ได้
การเปลี่ยนแปลง API
- โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
- เพิ่ม Watch Face Push API ซึ่งช่วยให้แอป Wear OS ติดตั้งหน้าปัดในนาฬิกาได้โดยอัตโนมัติ
การแก้ไขข้อบกพร่อง
- เราขอแนะนำให้ผู้ให้บริการแทรกข้อมูลที่ใช้ 1.3.0-alpha06 อัปเกรดเนื่องจากเราได้แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องกับ
ComplicationDataSourceUpdateRequesterใน WearOS เวอร์ชันถัดไปแล้ว
เวอร์ชัน 1.3.0-alpha06
26 มีนาคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.3.0-alpha06 เวอร์ชัน 1.3.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เราได้เลิกใช้งาน API หน้าปัด Wear (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava และ watchface-style) เพื่อให้หันมาใช้ Wear Watchface Format แทน และจะนำ API เหล่านี้ออกจาก AndroidX ในที่สุด เราไม่ได้เลิกใช้งาน API ของภาวะแทรกซ้อนและจะยังคงมี API เหล่านี้ต่อไป (Ice960)
- ตอนนี้ API ของภาวะแทรกซ้อนสามารถสื่อสารกับ
WearSDKได้โดยตรง ซึ่งมีประสิทธิภาพมากกว่าเนื่องจากมีการข้าม IPC น้อยลง
เวอร์ชัน 1.3.0-alpha05
15 มกราคม 2025
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.3.0-alpha05 เวอร์ชัน 1.3.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
โดยปกติแล้วหน้าปัดจะให้ผู้ใช้เลือกสีโดยใช้ListUserStyle แม้ว่าวิธีนี้จะใช้ได้ แต่ก็ต้องส่งไอคอนผ่านบลูทูธไปยังโปรแกรมแก้ไขที่ใช้ร่วมกัน ซึ่งไม่มีประสิทธิภาพ เราจึงได้เปิดตัว ColorUserStyleSetting ซึ่งมีเพย์โหลดเป็นรายการสีอย่างน้อย 1 สีต่อสไตล์ ซึ่งมีรูปแบบการส่งผ่านข้อมูลที่กะทัดรัดกว่ามาก
เราได้เพิ่มฟีเจอร์สำหรับ OEM ซึ่งช่วยให้ผู้ให้บริการข้อมูลแทรกของ OEM เพิ่มข้อมูลพิเศษลงใน ComplicationData เพื่อให้หน้าปัดของ OEM ใช้ได้
การเปลี่ยนแปลง API
- ตอนนี้คลาส
UserStyleSettingและUserStyleOptionมีตัวสร้างแล้ว ซึ่งเป็นวิธีที่แนะนำในการสร้างคลาส (Iacd03) - รองรับการส่งค่าพิเศษใน
ComplicationDataซึ่งมีไว้สำหรับใช้โดย OEM ที่ควบคุมทั้งผู้ให้บริการแทรกซ้อนและหน้าปัดนาฬิกาที่รับ การตั้งค่าพิเศษต้องใช้สิทธิ์com.google.android.wearable.permission.COMPLICATION_EXTRASที่มีสิทธิ์ (I4e3b2) - โดยทั่วไปแล้ว หน้าปัดจะอนุญาตให้ผู้ใช้เลือกสีโดยใช้
ListUserStyleพร้อมไอคอนสำหรับแต่ละListOptionเนื่องจากระบบจะส่งสคีมาUserStyleผ่านบลูทูธ จึงควรลดขนาดสคีมาให้เล็กที่สุด ซึ่งอาจเป็นปัญหาหากมีตัวเลือกสีหลายสิบรายการเนื่องจากไอคอนทั้งหมด เราจึงเพิ่มColorUserStyleSettingในตำแหน่งที่ตัวเลือกมีรายการสีแทนที่จะเป็นไอคอน ซึ่งมีขนาดกะทัดรัดกว่ามาก (Ib542e) ColorUserStyleSettingและColorOptionต้องใช้ API 34 (I8771d)
การแก้ไขข้อบกพร่อง
- ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict(นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ifd363, b/326456246)
เวอร์ชัน 1.3.0-alpha04
18 กันยายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.3.0-alpha04 เวอร์ชัน 1.3.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับการโหลดไอคอนแบบเลื่อนใน
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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้เราใช้การเปรียบเทียบการอ้างอิงเพื่อเปรียบเทียบค่าที่ดีที่สุดและ
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()ไปยังgetComplicationSlotInflationFactory(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เป็น false ซึ่งจะทําให้ช่องแทรกซ้อนถูกทําเครื่องหมายว่าไม่ได้กําหนดค่า (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
- เราได้เพิ่มการรองรับ Complication บางประเภทใหม่ซึ่งพร้อมให้ใช้งานจาก 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 Wrappers ซึ่งจะเพิ่มการรองรับรันไทม์ของหน้าปัด ซึ่งเป็นหน้าปัดชนิดพิเศษที่โหลดคำจำกัดความจากแพ็กเกจอื่น ปัจจุบัน WearOS รองรับเฉพาะรันไทม์สำหรับรูปแบบหน้าปัดนาฬิกา Android (I2799f) - แพตช์นี้เป็นส่วนต่อจาก aosp/2636578 ซึ่งเราเปลี่ยนชื่อคำจำกัดความของ int เพื่อให้โค้ดที่ขึ้นอยู่กับ
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 อย่างนี้ใช้ได้ทั้งนิพจน์แบบไดนามิกและ Binding ของแพลตฟอร์มที่อัปเดตที่ 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) - เพิ่ม Executor ลงในเมธอด
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คือ 1 KB แม้ว่าขีดจำกัดขนาดจะเพิ่มขึ้น แต่เราขอแนะนำให้นักพัฒนาหน้าปัดนาฬิกาเก็บข้อมูลให้มีขนาดเล็ก เนื่องจากระบบจะส่งการตั้งค่าผ่านบลูทูธในระหว่างการแก้ไข และแบนด์วิดท์ของบลูทูธมีจำกัด
การเปลี่ยนแปลง 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(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คือ 1 KB (I0b100)
เวอร์ชัน 1.2.0-alpha06
25 มกราคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.2.0-alpha06 เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เรากำลังดำเนินการเพิ่มการรองรับการเชื่อมโยงแพลตฟอร์มของภาวะแทรกซ้อน ซึ่งยังไม่พร้อมใช้งานในตอนนี้ โปรดติดตามความคืบหน้าต่อไป
- เราได้เพิ่มการรองรับ XML
ComplicationSlotสำหรับประเภทแทรกใหม่ 2 ประเภท ได้แก่ 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หลายรายการในลำดับชั้นของสไตล์ ตราบใดที่เปิดใช้งานได้เพียงรายการเดียวในแต่ละครั้ง เราได้เพิ่มฟังก์ชันยูทิลิตี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ซึ่งปัจจุบันช่วยให้ผู้ให้บริการควบคุมได้ว่าจะเก็บภาวะแทรกซ้อนไว้หรือไม่ (เช่น จะแคชไว้หลังการรีบูตหรือไม่) โดยส่วนใหญ่แล้ว Complication ไม่จำเป็นต้องตั้งค่าการควบคุมแคช แต่การตั้งค่าดังกล่าวจะช่วยแก้ไขกรณีที่พบได้ยากซึ่งมีข้อมูลที่ล้าสมัยสำหรับ Complication บางรายการที่อัปเดตบ่อย (เช่น Complication ข้อมูลสุขภาพ) นอกจากนี้ เรายังได้เพิ่ม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ออกแล้วเนื่องจากฟังก์ชันการทำงานของDiscreteRangedValueComplicationDataเป็นส่วนย่อยของWeightedElementsComplicationData(I6446c)
การแก้ไขข้อบกพร่อง
- ใส่
isForScreenShotในโค้ดเท่ากับและแฮช ตรวจสอบว่าonRenderParametersChangedได้รับค่าisForScreenshotที่ถูกต้อง (I04a41) - แก้ไขการรั่วไหลของ
WatchFaceControlServiceจากไคลเอ็นต์แบบไม่มีส่วนหัวแล้ว (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 ทำหน้าที่เป็นรูท 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
- บางครั้งตัวจัดการวอลเปเปอร์อาจแยกออกจากเอนจินและสร้างเอนจินอื่น เราได้เพิ่ม
DisconnectReasonint def และขยายClientDisconnectListenerด้วยเมธอดใหม่ซึ่งรวมถึงDisconnectReasonเพื่อให้ผู้ฟังสังเกตเห็นการแยกเครื่องยนต์ (I45cce) - เพิ่มพารามิเตอร์ที่ไม่บังคับ 2 รายการ
nameResourceIdและscreenReaderResourceIdลงในตัวสร้างComplicationSlotOverlay(I157e8) - เราได้เพิ่ม Guava Wrapper สำหรับการโอเวอร์โหลดใหม่ของ
getOrCreateInteractiveWatchFaceClientด้วยPreviewImageUpdateRequestedListener(Ic31f0) - เราได้เพิ่ม
Renderer.sendPreviewImageNeedsUpdateRequestซึ่งมีประโยชน์สำหรับหน้าปัดที่มีสถานะอยู่นอกUserStyleSchemaซึ่งส่งผลต่อลักษณะที่ปรากฏ (เช่น หน้าปัดที่มีภาพพื้นหลังที่เลือกได้) ในฝั่งไคลเอ็นต์ เราได้เพิ่มPreviewImageUpdateRequestedListenerเป็นพารามิเตอร์ที่ไม่บังคับในgetOrCreateInteractiveWatchFaceClientเพื่อสังเกตคำขอเหล่านี้ (Iff44a) - เราได้ลดความซับซ้อนของ API สำหรับการแสดง
WatchFaceColorsแล้ว ตอนนี้มีพร็อพเพอร์ตี้ที่เรียบง่ายชื่อwatchFaceColorsใน Renderer ซึ่งหน้าปัดนาฬิกาสามารถตั้งค่าได้ คุณควรจะอัปเดตพร็อพเพอร์ตี้นี้ตามความจำเป็นเพื่อตอบสนองต่อการเปลี่ยนแปลงสไตล์ เราได้เพิ่มOnWatchFaceColorsListenerลงในInteractiveWatchFaceClientแทนการใช้WallpaperManagerเพื่อสังเกตการเปลี่ยนแปลงสี (I490bc) - เราได้เพิ่มคลาส
WatchFaceColorsซึ่งมีสีหน้าปัดที่โดดเด่นที่สุด 3 สี และเพิ่มเมธอดแบบเปิดwatchfaceColorsและnotifyWatchFaceColorsChangedลงใน Renderer ซึ่งจะช่วยให้ระบบรับสีของหน้าปัดผ่านWallpaperManager.getWallpaperColorsได้ (I3d611) - ตอนนี้
ShortTextComplicationData,RangedValueComplicationData,NoPermissionComplicationData(และDiscreteRangedValueComplicationData,GoalProgressComplicationDataและWeightedElementsComplicationDataเวอร์ชันทดลอง) รองรับSmallImagesแล้ว หากหน้าปัดเลือกที่จะแสดงข้อมูลแทรกที่มีหลายสี ตอนนี้หน้าปัดจะมีตัวเลือกในการใช้SmallImageแบบหลายสี ซึ่งก่อนหน้านี้จะต้องใช้รูปภาพสีเดียว (I257df) - ปรับโครงสร้าง
PreviewImageUpdateRequestedListenerให้เป็นConsumer<>แทน (Ia875d) - แทนที่ประเภท Single Abstract Method (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) - การแทรกแซงเล็กๆ อาจแตะได้ยาก เราจึงได้เพิ่มการรองรับระยะขอบเพื่อเพิ่มพื้นที่ที่แตะได้โดยไม่ส่งผลต่อการแสดงผล เว้นแต่จะระบุไว้ (ในโค้ดหรือผ่าน XML)
ComplciationSlotsจะมีระยะขอบเป็น 0 (I14089) - เปลี่ยนลายเซ็น
getComplicationSlotInflationFactory(CurrentUserStyleRepository)เพื่อแสดงผลอินสแตนซ์จากโรงงานที่ไม่ใช่ Null ก่อนหน้านี้การแสดงผลค่า Null ถือเป็นข้อผิดพลาด ดังนั้นการเปลี่ยนแปลงนี้จึงเป็นการทำให้สัญญา API ชัดเจนขึ้น (I0fcc0) - เราได้เพิ่มอาร์กิวเมนต์
currentUserStyleRepositoryลงในเมธอดWatchFaceService.getComplicationSlotInflationFactoryเพื่อให้สอดคล้องกับcreateComplicationSlotsManager(I2ddd2) UserStyleFlavorsกลายเป็นฟีเจอร์ที่ไม่ใช่เวอร์ชันทดลอง (I69cdc)- เราได้นำ
ValueTypeเวอร์ชันทดลองออกจากRangedValueComplicationDataและแทนที่ด้วยDiscreteRangedValueComplicationDataเวอร์ชันทดลอง ซึ่งคล้ายกับRangedValueComplicationDataยกเว้นช่วงและค่าจำนวนเต็ม นอกจากนี้ เรายังได้เปิดตัวGoalProgressComplicationDataซึ่งเป็นฟีเจอร์ทดลองที่คล้ายกับRangedValueComplicationDataแต่ใช้สำหรับความคืบหน้าในการบรรลุเป้าหมายที่ค่าต่ำสุดเป็น 0 โดยปริยาย และอนุญาตให้ค่ามากกว่าtargetValueได้ หมายเหตุสำหรับตัวแปรRangedValueทั้งหมด ต้องระบุ monochromeImage, text หรือ title อย่างน้อย 1 รายการ (I9590c) - เราได้นำ
boundsWithMarginsออกจากComplicationSlotStateเนื่องจากซอฟต์แวร์ระบบไม่มี Use Case สำหรับฟีเจอร์นี้ (I42e26) - เราได้เพิ่มการรองรับฟีเจอร์ทดลองสำหรับ
WeightedElementsComplicationDataซึ่งประกอบด้วยอาร์เรย์ขององค์ประกอบ (คู่ของน้ำหนักและสี) พร้อมกับข้อความ/ชื่อ/รูปภาพที่ไม่บังคับ โดยอาจแสดงเป็นแผนภูมิวงกลมซึ่งสีต้องมีความหมายตามบริบท เนื่องจากโดยปกติแล้วไม่มีพื้นที่ในภาวะแทรกซ้อนที่จะแสดงป้ายกำกับ (I87eea) ColorRampsที่RangedValueComplicationDataและGoalProgressComplicationDataใช้โดยไม่บังคับช่วยให้คุณระบุลำดับสีได้สูงสุด 7 สี และระบุว่าควรเปลี่ยนสีอย่างราบรื่นหรือควรแสดงขั้นตอนสีแบบทึบที่มีขนาดเท่ากัน (I9f5bf)RangedValueComplicationData.drawSegmentedเปลี่ยนเป็นvalueTypeซึ่งเป็นจำนวนเต็มที่มี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จะรวดเร็ว แต่หากไม่เป็นเช่นนั้น เราอาจพบกับภาวะหยุดชะงัก/ANR แพตช์นี้จะย้ายงานที่ไม่จำเป็นออกจากล็อก ซึ่งจะช่วยลดโอกาสที่จะเกิดการล็อกตายได้ (5a2adca)แก้ไขปัญหาหลายอย่างที่ทำให้
WatchFaceServiceยังคงอยู่ บางครั้ง WakeLock อาจเก็บWatchFaceServiceไว้ การเพิ่มการเรียกrelease()จะช่วยแก้ไขปัญหานี้ได้ นอกจากนี้StateFlowsยังคงWatchFaceServiceได้ การยกเลิกCoroutineScopesที่เกี่ยวข้องจะแก้ไขปัญหานี้ได้(fd48138)เพิ่มการหมดเวลาใน
awaitDeferredWatchFace* และแก้ไขwatchfaceOverlayStyleNullPointerExceptionในสถานการณ์ปกติ การดำเนินการนี้ไม่ควรหมดเวลา รวมถึงหลังจากติดตั้งใหม่และสถานการณ์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) - เราได้เพิ่มความสามารถในการรับค่าการตั้งค่าใน
UserStyleSettingXML ซึ่งช่วยให้คุณลดความละเอียดและแชร์การตั้งค่าระหว่างหน้าปัดได้ (Ief841) - เราได้เพิ่ม
ComplicationDataประเภทใหม่ 2 รายการในเวอร์ชันทดลอง ได้แก่ListComplicationDataและProtoLayoutComplicationDataปัจจุบันยังไม่มีการรองรับการแสดงผลสำหรับทั้ง 2 ประเภทนี้ และ WearOS ยังไม่รู้จักประเภทเหล่านี้หากเพิ่มลงในไฟล์ Manifest ของComplicationDataSource's(I1811c)
การแก้ไขข้อบกพร่อง
- แก้ไขการซีเรียลไลซ์ของประเภท
TimeLineEntryเราไม่ได้ทำการซีเรียลไลซ์ประเภทTimeLineEntryซึ่งหมายความว่าระบบจะตีความTimeLineEntriesที่แคชไว้ซึ่งมีประเภท NoData อย่างไม่ถูกต้องว่ามีประเภทของภาวะแทรกซ้อนหลัก ซึ่งจะทำให้เกิด NPE เมื่อมีการเข้าถึงฟิลด์ที่จำเป็นซึ่งไม่มีอยู่ (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ที่ส่งไปยังเมธอดการแสดงผล สำหรับการทำงานร่วมกันของ Java เราได้เปิดตัวListenableCanvasRenderer2และListenableGlesRenderer2(I31ffa) - เพิ่มความสามารถในการกำหนดรูปแบบ
@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เสมอ (I323b9)getPendingIntentForTouchEventAPI ไม่จำเป็นอีกต่อไปเนื่องจากปัญหาพื้นฐานได้รับการแก้ไขในเฟรมเวิร์กแล้ว จึงได้นำ API ที่เกี่ยวข้องทั้งหมดออก หน้าปัดไม่จำเป็นต้องดำเนินการใดๆ เป็นพิเศษเพื่อให้PendingIntentsทำงาน แม้ว่าจะมีการกดปุ่มหน้าแรกเมื่อเร็วๆ นี้ก็ตาม (I1f2e8)- เราได้เพิ่ม
RendererParameters.isForScreenShotซึ่งจะเป็นจริงหากการแสดงผลเป็นภาพหน้าจอ หน้าปัดบางแบบที่มีภาพเคลื่อนไหวจำเป็นต้องทราบข้อมูลนี้เพื่อทำการปรับเปลี่ยนเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด (I96d99) - เราได้เพิ่ม
WatchFaceExceptionReasonลงในWatchFaceExceptionเพื่อให้บริบทเกี่ยวกับสิ่งที่ผิดพลาด (I01d15) ComplicationDataSourceService.onImmediateComplicationRequestถูกนำออกแล้ว และเพิ่มComplicationRequest.immediateResponseRequiredแทนเพื่อส่งสัญญาณว่าผู้ให้บริการต้องตอบกลับอย่างรวดเร็ว (ควรตอบกลับภายในเวลาไม่เกิน 100 มิลลิวินาที) โปรดทราบว่าฟังก์ชันนี้ได้รับการปกป้องด้วยสิทธิ์com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATEที่มีสิทธิ์ (Ie6b23)- อัปเดตค่า Null ใน 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(ค่าเริ่มต้นคือเท็จ) หากตั้งค่าเป็นจริง ระบบจะล้าง Canvas ด้วยสีพื้นหลัง (Ie01e5) - เพิ่มคีย์ข้อมูลเมตา
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTEDซึ่งช่วยให้แหล่งข้อมูลแทรกซ้อนระบุได้ว่าสามารถระบุค่าเริ่มต้นได้โดยไม่ต้องกำหนดค่าใดๆ (Icc0d4) - โดยปกติแล้วเมื่อแก้ไขหน้าปัด จะมีทั้งอินสแตนซ์แบบอินเทอร์แอกทีฟและแบบไม่มีส่วนหัว เราได้เปิดตัว
Renderer.SharedAssetsเพื่อช่วยประหยัดหน่วยความจำ ซึ่งช่วยให้ตัวแสดงผลหน้าปัดแชร์ข้อมูลที่ไม่เปลี่ยนแปลง (เช่น เท็กซ์เจอร์และ Shader) ระหว่างอินสแตนซ์ได้GlesRenderer.setEglConfigและGlesRenderer.setEglDisplayเลิกใช้งานแล้ว เราไม่เคยตั้งใจให้ตั้งค่าได้ และการตั้งค่าจะทำให้เกิดลักษณะการทำงานที่ไม่คาดคิด (I0d9e7) - เราได้เพิ่ม
setNameResourceIdและsetScreenReaderNameResourceId(ซึ่งอ้างอิงทรัพยากรสตริง) ลงในComplicationSlot.Builderและ Getter ที่เกี่ยวข้องใน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) - แก้ไขข้อบกพร่องที่ทำให้ระบบจัดการ
PhotoImageComplicationDatatapAction ไม่ถูกต้อง (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และคลาสย่อยมีแฮชโค้ด เท่ากับ และ 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 วินาทีหลังจากกดปุ่มหน้าแรก) ในเฟรมเวิร์กแทน
การเปลี่ยนแปลง API
ComplicationData.isCachedเปลี่ยนเป็นtapActionLostDueToSerializationซึ่งมีประโยชน์มากกว่าเมื่อพิจารณาว่าควรถือว่าช่องแทรกซ้อนแตกต่างออกไปเพื่อส่งสัญญาณว่าแตะไม่ได้หรือไม่ (I6de2f)- เพิ่ม
ComplicationDataTimelineไปยังwear-complication-data-sourceแล้ว ซึ่งใช้เพื่อระบุลำดับของComplicationDataที่จำกัดเวลาเพื่อส่งไปยังหน้าปัดนาฬิกาที่แคชและอัปเดตได้โดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในเวลาต่างๆ หรือกิจกรรมในปฏิทินที่กำลังจะมาถึงหลายรายการComplicationRequestListenerได้รับการขยายด้วยเมธอดใหม่onComplicationDataTimelineซึ่งคุณใช้เพื่อแสดงข้อมูลนี้ได้ มี Wrapper Kotlin ใหม่SuspendingTimelineComplicationDataSourceServiceสำหรับบริการแหล่งข้อมูลที่ระงับ (Idecdc) - เพิ่ม
PendingIntentTapListenerและWatchFaceControlClient.getPendingIntentForTouchEventแล้ว ซึ่งจะช่วยให้หน้าปัดที่ต้องเปิดใช้ Intent เพื่อตอบสนองต่อการแตะสามารถหลีกเลี่ยงปัญหาที่เฟรมเวิร์กบล็อกการเปิดใช้กิจกรรมใหม่เป็นเวลา 5 วินาทีหลังจากกดปุ่มหน้าแรกได้ (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 มีคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้ระบบจัดการ
PhotoImageComplicationDatatapAction ไม่ถูกต้อง (I1cc30)
เวอร์ชัน 1.0.0
1 ธันวาคม 2021
ระบบจะถอนการอ้างสิทธิ์androidx.wear.watchface:watchface-*:1.0.0 เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของเวอร์ชัน 1.0.0
androidx.wear.watchface เป็นไลบรารีใหม่ที่แนะนำสำหรับการพัฒนาหน้าปัดนาฬิกา WearOS โดยมีฟีเจอร์ใหม่ๆ มากมายที่เหนือกว่า Wearable Support Library แบบเดิม
- ไลบรารีรองรับการจัดรูปแบบของผู้ใช้โดยตรง (เช่น การเปลี่ยนชุดสี สไตล์ของเข็มนาฬิกา ลักษณะของเครื่องหมายชั่วโมง ฯลฯ) (ดู
androidx.wear.watchface.style) ตอนนี้การพัฒนาโปรแกรมแก้ไขหน้าปัดบนนาฬิกาโดยใช้ androidx.wear.watchface.editor ทำได้ง่ายขึ้นมาก และคุณสามารถแก้ไขหน้าปัดจากแอปคู่ระบบได้โดยไม่ต้องเขียนโค้ดเพิ่มเติม - แนวทางปฏิบัติแนะนำในตัว ไลบรารีจะสร้างป้ายกำกับเนื้อหาโปรแกรมอ่านหน้าจอสำหรับภาวะแทรกซ้อนโดยอัตโนมัติ (คุณเพิ่มป้ายกำกับของคุณเองได้ด้วย) และอัตราเฟรมจะลดลงโดยอัตโนมัติเมื่อแบตเตอรี่เหลือน้อยและไม่ได้ชาร์จเพื่อยืดอายุการใช้งานแบตเตอรี่
- คุณจะใช้โค้ดน้อยลงในการพัฒนาหน้าปัด โดยเฉพาะอย่างยิ่งสำหรับภาวะแทรกซ้อนซึ่งมีโค้ดบอยเลอร์เพลตจำนวนมากย้ายไปอยู่ในไลบรารี
การแก้ไขข้อบกพร่อง
- แก้ไข
EditorSession.userStyle.compareAndSet(I6f676) - แก้ไขเวลาหน่วงของหน้าปัดที่สั้นมาก (Iffb97)
- Dispatch
InteractiveWatchFaceImpl.onDestroyในเธรด UI (I83340) - แก้ไขปัญหาหลายอย่างเกี่ยวกับ Broadcast Receiver (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 Thread ล่าช้า(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 เพื่อให้ไคลเอ็นต์ทราบว่าเครื่องมือแก้ไขหน้าปัดรองรับการแก้ไขแบบไม่มีส่วนหัวหรือไม่ โปรดทราบว่าการดำเนินการนี้อาจมีผลลบลวงเนื่องจากเราได้เพิ่มการรองรับใน asop/1756809 แล้ว แต่จะแสดงค่าที่ถูกต้องสำหรับหน้าปัดทั้งหมดในอนาคต (ca55590)
- ตอนนี้ Renderer มีเมธอด dump() ซึ่งสามารถลบล้างเพื่อเพิ่มข้อมูลที่กำหนดเองลงในข้อมูลที่สร้างโดยบริการกิจกรรม dumpsys ของเชลล์ ABD WatchFaceService (95235f9)
- ตอนนี้ InteractiveWatchFaceClient.addWatchFaceReadyListener จะระบุตัวดำเนินการก่อน (563ac2f)
- เราได้นำ StateFlowCompatHelper ออกแล้ว โปรดใช้ asLiveData (androidx.lifecycle.asLiveData) แทน (bd35d3)
- CurrentUserStyleRepository.userStyle จะแก้ไขไม่ได้อีกต่อไป (I44889)
- เปลี่ยนชื่อ WatchFaceReadyListener เป็น OnWatchFaceReadyListener แล้ว (Ic12a9)
การแก้ไขข้อบกพร่อง
- InteractiveInstanceManager.deleteInstance เพื่อเรียกใช้ onDestroy ซึ่งจำเป็นเพื่อให้แน่ใจว่า InteractiveWatchFaceImpl จะได้รับการเก็บขยะ (fce4af8, b/199485839)