หน้าปัดของ Wear
หมายเหตุ: ตั้งแต่วันที่ 10 กรกฎาคม 2024 หน้าปัดต้องใช้ รูปแบบใบหน้าของนาฬิกาเพื่อ ซึ่งติดตั้งในนาฬิกาใหม่ที่เปิดตัวด้วย Wear OS 5 ล่วงหน้า ดูข้อมูลเพิ่มเติม เกี่ยวกับการเปลี่ยนแปลงที่ผู้ใช้เห็นใน ศูนย์ช่วยเหลือ บทความ
นอกจากนี้ ตั้งแต่ต้นปี 2025 เป็นต้นไป (จะประกาศวันที่ที่แน่นอนในช่วง ไตรมาสที่ 4 ปี 2024) หน้าปัดใหม่ทั้งหมดที่เผยแพร่ใน Google Play ต้องใช้หน้าปัด ฟอร์แมต
อัปเดตล่าสุด | รุ่นที่เสถียร | ตัวเลือกถอนการอ้างสิทธิ์ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
17 เมษายน 2024 | 1.2.1 | - | - | 1.3.0-alpha03 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Wear คุณต้องเพิ่มที่เก็บ Google Maven ไปยัง อ่านที่เก็บ 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" }
ดูข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากร Dependency ได้ที่หัวข้อเพิ่มการอ้างอิงของบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูที่ ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนที่จะสร้างใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูเอกสารประกอบเกี่ยวกับเครื่องมือติดตามปัญหา เพื่อดูข้อมูลเพิ่มเติม
เวอร์ชัน 1.3
เวอร์ชัน 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()
(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
- เราได้เพิ่มการรองรับข้อมูลแทรกประเภทใหม่ๆ บางรายการที่พร้อมใช้งานจาก 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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- WearOS รองรับข้อมูลแทรกของระบบสภาพอากาศเริ่มต้นใน Android T แล้ว
การเปลี่ยนแปลง API
- เพิ่มข้อมูลสำรองเริ่มต้นของสภาพอากาศสำหรับข้อมูลแทรก (Ia0994)
- แพตช์นี้เพิ่ม
WatchFaceRuntimeService
และWatchFaceControlClient.createWatchFaceRuntimeControlClient
รวมถึง Wrapper ฝรั่ง ซึ่งจะเพิ่มการสนับสนุนรันไทม์ของหน้าปัด ซึ่งเป็นหน้าปัดแบบพิเศษที่โหลดคำจำกัดความมาจากแพ็กเกจอื่น ปัจจุบัน WearOS รองรับเฉพาะรันไทม์สำหรับ Android Watch Face Format (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
คือ 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
แบบ 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
คือ 1 KB (I0B100)
เวอร์ชัน 1.2.0-alpha06
25 มกราคม 2023
ปล่อย androidx.wear.watchface:watchface-*:1.2.0-alpha06
แล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เรากำลังดำเนินการอย่างต่อเนื่องเพื่อเพิ่มการรองรับการเชื่อมโยงแพลตฟอร์มข้อมูลแทรก ฟีเจอร์นี้ยังไม่พร้อมใช้งาน แต่โปรดอดใจรอ
- เราได้เพิ่มการรองรับ XML
ComplicationSlot
สำหรับประเภทข้อมูลแทรกใหม่ 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
ตามลําดับชั้น และในตอนนี้สามารถมีComplicationSlotsUserStyleSetting
มากกว่า 1 รายการในลําดับชั้นได้แล้วตั้งแต่ Android T มีเพียงComplicationSlotsUserStyleSetting
เดียวที่ใช้งานได้ ขึ้นอยู่กับการเลือกสไตล์ของผู้ใช้เรากำลังปรับปรุงการรองรับโปรแกรมอ่านหน้าจอสำหรับ
ListOption
และComplicationSlotsOption
ด้วยการเพิ่มช่องscreenReaderName
โปรดทราบว่าเครื่องมือแก้ไขที่ใช้ร่วมกันจะไม่สนใจช่องนี้ก่อนที่จะใช้ Android T
การเปลี่ยนแปลง API
- เราได้เพิ่มช่อง
screenReaderName
ซึ่งเป็นช่องใหม่ที่ไม่บังคับลงในListOption
และComplicationSlotsOption
เพื่อให้เอดิเตอร์ใช้งานได้ โดยเครื่องมือแก้ไขที่ใช้ร่วมกันในอุปกรณ์ก่อน Android T จะไม่สนใจ (I75326) - ตั้งแต่ Android T หลาย
ComplicationSlotsUserStyleSettings
ได้รับการรองรับในลำดับชั้นของสไตล์แล้ว แต่อนุญาตให้ใช้งานเพียงครั้งละ 1 รายการเท่านั้น เราได้เพิ่มฟังก์ชันยูทิลิตี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
แต่ค่าได้รับอนุญาตให้ผ่านเป้าหมาย (สำหรับ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
จากไคลเอ็นต์แบบไม่มีส่วนหัว (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
ซึ่งทำให้ผู้ฟังสังเกตเห็นการถอดกลไกได้ (I45cce) - เพิ่มพารามิเตอร์ที่ไม่บังคับ 2 รายการ
nameResourceId
และscreenReaderResourceId
ลงในตัวสร้างComplicationSlotOverlay
(I157e8) - เราได้เพิ่ม Wrapper ฝรั่งสำหรับ
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) - แทนที่ประเภท Java SAM ที่กำหนดเอง (SAM)
OnWatchfaceColorsListener
ที่กำหนดเองด้วยประเภท Java SAM (ผู้บริโภค) ทั่วไป (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 ก่อนหน้านี้ นี่จึงเป็นเพียงการทำให้สัญญา API มีความชัดเจนขึ้น (I0fcc0) - เราได้เพิ่มอาร์กิวเมนต์
currentUserStyleRepository
ลงในเมธอดWatchFaceService.getComplicationSlotInflationFactory
เพื่อให้สอดคล้องกับcreateComplicationSlotsManager
แล้ว (I2ddd2) UserStyleFlavors
กลายเป็นฟีเจอร์ที่ไม่ได้อยู่ในการทดสอบ (I69cdc)- เราได้นำ
ValueType
แบบทดลองออกจากRangedValueComplicationData
และแนะนำDiscreteRangedValueComplicationData
แบบทดลองแทน ซึ่งเหมือนกับRangedValueComplicationData
ยกเว้นช่วงจำนวนเต็ม & นอกจากนี้ เรายังได้แนะนำGoalProgressComplicationData
เวอร์ชันทดลองซึ่งคล้ายกับRangedValueComplicationData
ยกเว้นในส่วนของความคืบหน้าสู่เป้าหมายที่ค่าต่ำสุดเป็น 0 และได้รับอนุญาตให้มีค่ามากกว่าtargetValue
หมายเหตุสำหรับตัวแปรRangedValue
ทั้งหมด ต้องระบุ monochromeImage ข้อความ หรือชื่ออย่างน้อย 1 รายการ (I9590C) - เรานำ
boundsWithMargins
ออกจากComplicationSlotState
แล้วเนื่องจากซอฟต์แวร์ระบบไม่มีกรณีการใช้งาน (I42e26) - เราได้เพิ่มการรองรับเวอร์ชันทดลองสำหรับ
WeightedElementsComplicationData
ซึ่งประกอบด้วยอาร์เรย์ขององค์ประกอบ (น้ำหนักและสี) พร้อมกับข้อความ/ชื่อ/รูปภาพที่ไม่บังคับ แผนภูมินี้อาจแสดงเป็นแผนภูมิวงกลมที่สีต้องสื่อความหมายตามบริบท เนื่องจากโดยทั่วไปแล้วจะไม่มีข้อมูลแทรกสำหรับแสดงผลป้ายกำกับ (I87eea) ColorRamps
เวอร์ชันทดลองที่เลือกจะใช้โดยRangedValueComplicationData
และGoalProgressComplicationData
ตอนนี้คุณสามารถระบุลำดับสีได้สูงสุด 7 สี และธงที่ระบุว่าสีควรแบ่งเป็น 2 สีอย่างเรียบหรือควรแสดงขั้นตอนของสีที่มีขนาดเท่าๆ กัน (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
จะรวดเร็ว แต่หากไม่เป็นเช่นนั้น เราก็อาจได้รับการติดตาย/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 กรณีนี้อาจไม่เป็นอันตราย แต่สแปมตัวบันทึกดังกล่าวทำให้รบกวนสมาธิและควรหลีกเลี่ยง (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) - เราได้เพิ่มความสามารถในการรับช่วงการตั้งค่าใน XML ของ
UserStyleSetting
แล้ว ซึ่งจะช่วยให้คุณลดการพูดรายละเอียดและแชร์การตั้งค่าระหว่างหน้าปัดได้ (Ief841) - เราได้เพิ่ม
ComplicationData
ประเภทการทดสอบใหม่ 2 ประเภท ได้แก่ListComplicationData
และProtoLayoutComplicationData
ขณะนี้ระบบยังไม่รองรับการแสดงผลสำหรับประเภทเหล่านี้ และปัจจุบัน 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) - ตอนนี้รูปแบบสายไฟของตัวยึดตำแหน่งใช้ Bundle ด้านใน เราไม่ต้องการให้ตัวยึดตำแหน่งทำลายหน้าปัดที่มีอยู่ ซึ่งอาจใช้ 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
อาจไม่พร้อมใช้งานเสมอไป (เช่น ข้อมูลแทรกที่แคชไว้ซึ่งหมดอายุแล้ว) เราจึงได้ขยายNoDataComplication
ซึ่งมีตัวยึดตำแหน่งข้อมูลแทรกที่ไม่บังคับ และเพิ่มComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
ซึ่งได้รับอนุญาตให้ใช้ได้ในบริบทของตัวยึดตำแหน่งNoDataComplicationData
เท่านั้น หากเลือกตัวยึดตำแหน่งเหล่านี้ให้แสดงด้วยกล่อง/โค้งสีเทา (I6285D)- เราได้เพิ่ม
ComplicationData.getNextChangeInstant
ซึ่งจะบอกให้คุณทราบถึง Instant ถัดไปหลังจากการอ้างอิง Instant ซึ่งฟิลด์ข้อมูลแทรกอาจมีการเปลี่ยนแปลง ซึ่งจะใช้เป็นการภายในเพื่อกำหนดเวลาเฟรมสำหรับการอัปเดตข้อมูลแทรก เช่น หากหน้าปัดมักอัปเดต 1 ครั้งต่อนาที การตั้งค่าข้อมูลแทรกของนาฬิกาจับเวลาจะทำให้หน้าปัดอัปเดต 1 ครั้งต่อวินาที (I7ceb2) EditorSession.watchFaceId
สามารถใช้ได้ใน API ทุกระดับแล้ว นอกจากนี้ ค่าในขณะนี้จะสอดคล้องกับ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) - อัปเดตค่า Nulling ในบริการหลักและ 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
ซึ่งเป็นการตั้งค่าย่อย ซึ่งในช่วงแรกจะใช้โดยListOption
เท่านั้น ซึ่งทำให้สามารถอธิบายลำดับชั้นของรูปแบบเพื่อนำไปใช้โดย UI ของ Editor โดย UserStyle ที่สำคัญไม่มีการเปลี่ยนแปลงและยังคงเป็นMap<String, ByteArray>
(Iaf6f4) - เราได้เพิ่ม
WatchFace.OverlayStyle
ซึ่งช่วยให้หน้าปัดกำหนดค่าการแสดงผลของการวางซ้อนสถานะระบบได้ (I8520D) - เราได้เปิดตัว
clearWithBackgroundTintBeforeRenderingHighlightLayer
พารามิเตอร์ตัวสร้างที่ไม่บังคับใหม่สำหรับCanvasRenderer
(ค่าเริ่มต้นคือ false) หากตั้งค่าเป็น "จริง" ระบบจะล้างแคนวาสด้วยสีแต้มพื้นหลัง (Ie01e5) - เพิ่มคีย์ข้อมูลเมตา
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
ซึ่งอนุญาตให้แหล่งข้อมูลแทรกระบุว่าสามารถระบุค่าเริ่มต้นโดยไม่ต้องมีการกำหนดค่าใดๆ (Icc0d4) - การแก้ไขหน้าปัดนั้นเป็นเรื่องปกติ จึงจะมีอินสแตนซ์แบบอินเทอร์แอกทีฟและแบบไม่มีส่วนหัว เพื่อประหยัดหน่วยความจำ เราจึงเปิดตัว
Renderer.SharedAssets
ซึ่งให้ตัวแสดงผลหน้าปัดแชร์ข้อมูลที่เปลี่ยนแปลงไม่ได้ (เช่น พื้นผิวและเครื่องมือให้เฉดสี) ระหว่างอินสแตนซ์ได้ เราเลิกใช้งาน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) - แก้ไขข้อบกพร่องกับการดำเนินการแตะ
PhotoImageComplicationData
ครั้งไม่ ได้รับการจัดการอย่างถูกต้อง (I1cc30)
เวอร์ชัน 1.1.0-alpha02
12 มกราคม 2022
ปล่อย androidx.wear.watchface:watchface-*:1.1.0-alpha02
แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพื่อช่วยในการแก้ไขข้อบกพร่องและการทดสอบ ตอนนี้
ComplicationData
และคลาสย่อยที่เกี่ยวข้องได้ลบล้างแฮชโค้ดเท่ากับและเมธอด 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
ไม่ใช่เวอร์ชันทดลองอีกต่อไป สามารถใช้เพื่อดูข้อมูลเมตาของหน้าปัดได้อย่างมีประสิทธิภาพ โดยไม่ต้องเปิดแฟ้มบนหน้าปัด (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
ครั้งไม่ ได้รับการจัดการอย่างถูกต้อง (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) - แก้ไขปัญหาต่างๆ เกี่ยวกับ 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 init (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 ในตอนแรก ใน ListenableEditorSessiongetListenableComplicationPreviewData
และ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)
- ตอนนี้ตัวแสดงผลมีเมธอด dump() ซึ่งสามารถลบล้างเพื่อเพิ่มข้อมูลที่กำหนดเองลงในข้อมูลที่สร้างโดยบริการกิจกรรม WatchFaceService ของ ABD shell dumpsys (95235f9)
- ตอนนี้ InteractiveWatchFaceClient.addWatchFace ReadyListener จะระบุผู้ดำเนินการก่อนแล้ว (563ac2f)
- นำ StateFlowCompatHelper ออกแล้ว ควรใช้ asLiveData (androidx.lifecycle.asLiveData) แทน (bd35d3)
- CurrentUserStyleRepository.userStyle เปลี่ยนแปลงไม่ได้แล้ว (I44889)
- WatchFace ReadyListener เปลี่ยนชื่อเป็น OnWatchFace ReadyListener แล้ว ) แล้ว (Ic12a9)
แก้ไขข้อบกพร่อง
- InteractiveInstanceManager.deleteInstance เพื่อเรียก onDestroy ซึ่งจำเป็นต้องดำเนินการดังกล่าวเพื่อให้แน่ใจว่า InteractiveWatchFaceImpl จะได้รับข้อมูลขยะ (fce4af8, b/199485839)