หน้าปัด Wear

สร้างแอปพลิเคชันสำหรับสมาร์ทวอทช์ Wear OS by Google

หมายเหตุ: Watch Face Format จำเป็นต้องใช้สำหรับการติดตั้งหน้าปัดในอุปกรณ์ที่ติดตั้ง Wear OS 5 ไว้ล่วงหน้าตั้งแต่วันที่ 10 กรกฎาคม 2024 และสำหรับหน้าปัดใหม่ทั้งหมดที่เผยแพร่ใน Google Play ตั้งแต่วันที่ 27 มกราคม 2025

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงที่แสดงต่อผู้ใช้ได้ในบทความนี้ในศูนย์ช่วยเหลือ

อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า เวอร์ชันอัลฟ่า
23 เมษายน 2025 1.2.1 - - 1.3.0-alpha07

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Wear คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google

เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล

Groovy

dependencies {
    // Use to implement wear watchfaces
    implementation "androidx.wear.watchface:watchface:1.2.1"

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation "androidx.wear.watchface:watchface-editor:1.2.1"

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

Kotlin

dependencies {
    // Use to implement wear watchfaces
    implementation("androidx.wear.watchface:watchface:1.2.1")

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation("androidx.wear.watchface:watchface-editor:1.2.1")

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา

เวอร์ชัน 1.3

เวอร์ชัน 1.3.0-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 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราเลิกใช้งาน Wear Watchface API (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava และ watchface-style) แล้วเพื่อหันมาใช้ Wear Watchface Format และจะนำออกจาก AndroidX ในท้ายที่สุด เราจะไม่เลิกใช้งาน 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)

การแก้ไขข้อบกพร่อง

  • ตอนนี้ไลบรารีนี้ใช้แอตทริบิวต์ JSpecify nullness ซึ่งเป็นการใช้ประเภท นักพัฒนาซอฟต์แวร์ 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 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับการโหลดไอคอนแบบ Lazy Loading ใน UserStyleSettings และ UserStyleOptions ซึ่งช่วยเพิ่มประสิทธิภาพในการโหลดหน้าปัด (Iaf43d)
  • เพิ่มตัวเลือกให้ถ่ายภาพหน้าจอที่อัปเดตทุกครั้งที่มีการเปลี่ยนแปลงการกำหนดค่าระบบ (เช่น หากมีการเปลี่ยนแปลงภาษา) ผ่าน Watchface.setUpdateScreenshotOnConfigurationChange ใหม่ การตั้งค่านี้จะปิดอยู่โดยค่าเริ่มต้น (I765a1)

การแก้ไขข้อบกพร่อง

  • นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออกแล้ว เนื่องจากการดำเนินการนี้จะทําโดยอัตโนมัติผ่านโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับบิลด์ทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (Ia60e0, b/345472586)

เวอร์ชัน 1.3.0-alpha03

17 เมษายน 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha03 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เราได้เพิ่ม EditorSession#setOverrideComplications ซึ่งจะตั้งค่า ComplicationData ของอินสแตนซ์หน้าปัดที่เกี่ยวข้องไว้ชั่วคราวขณะแก้ไข หากข้อมูลแทรกมีการเปลี่ยนแปลงไม่บ่อยนัก วิธีนี้จะมีประสิทธิภาพมากกว่าการส่งการลบล้างผ่าน EditorSession#renderWatchFaceToBitmap (I19384)

การแก้ไขข้อบกพร่อง

  • ก่อนหน้านี้ selectComplicationDataForInstant เรียก toApiComplicationData สำหรับไทม์ไลน์ใดก็ตาม ซึ่งหมายความว่าการทดสอบความเท่าเทียมกันของรีเฟอเรนซ์ === ที่ตามมาจะล้มเหลวเสมอ ซึ่งหมายความว่าข้อมูลแทรกจะโหลดซ้ำทุกเฟรม ทำให้แบตเตอรี่หมดเร็ว (717406)

เวอร์ชัน 1.3.0-alpha02

3 เมษายน 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้เราใช้การเปรียบเทียบแบบอ้างอิงเพื่อเปรียบเทียบ best กับ selectedData เนื่องจากโอเปอเรเตอร์เท่ากับใช้ทรัพยากรมาก (446b00)

การเปลี่ยนแปลง API

  • เราได้เพิ่ม API แบบไดนามิกที่ไม่มีการเปลี่ยนเส้นทางสําหรับ GoalProgressComplicationData (c33264)

เวอร์ชัน 1.3.0-alpha01

7 กุมภาพันธ์ 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • WatchFaceServices สามารถเริ่มต้นพร้อมกันได้ และควรเป็นแบบไม่มีสถานะ เพื่อรองรับเรื่องนี้ เราได้เพิ่ม StatefulWatchFaceService ซึ่งจะส่งค่าเพิ่มเติมที่ผู้ใช้กำหนดซึ่งสร้างโดย createExtra() ไปยังการลบล้างทั้งหมดที่เรียกใช้ระหว่างการเริ่มต้น
  • ตอนนี้ GlesRenderer2 มีการโอเวอร์โหลดคอนสตรัคเตอร์ซึ่งให้คุณระบุรายการแอตทริบิวต์ที่จะลองทีละรายการด้วย eglChooseConfig

การเปลี่ยนแปลง API

  • ตอนนี้ StatefulWatchFaceService รองรับการลบล้าง getComplicationSlotInflationFactory ซึ่งระบบจะส่งข้อมูลเพิ่มเติมที่ผู้ใช้กำหนดซึ่งสร้างโดย createExtra() (I82d9f)
  • หน้าปัดบางหน้าต้องแชร์ข้อมูลเสริมที่สร้างระหว่าง createUserStyleSchema กับวิธีการเริ่มต้นอื่นๆ เนื่องจากไม่มีทางเลือกที่ดีกว่า นักพัฒนาซอฟต์แวร์จึงมักทำให้ WatchFaceServices เป็นแบบมีสถานะ ซึ่งอันตรายเนื่องจากระบบอาจสร้างอินสแตนซ์หลายรายการพร้อมกัน ซึ่งอาจทำให้เกิดข้อบกพร่องได้ ในการแก้ปัญหานี้ เราได้เปิดตัว StatefulWatchFaceService และ StatefulWatchFaceRuntimeService ซึ่ง createExtra() จะสร้างประเภทที่ผู้ใช้กำหนดและส่งไปยังเมธอดสร้างต่างๆ ในรูปแบบพารามิเตอร์ (If8a99)
  • เราได้เพิ่ม getUserStyleFlavors ลงใน InteractiveWatchFaceClient ซึ่ง OEM ส่วนใหญ่ให้ความสนใจ (I0f5d8)
  • ตอนนี้ GlesRenderer2 มีการโอเวอร์โหลดคอนสตรัคเตอร์ซึ่งให้คุณระบุรายการแอตทริบิวต์ที่จะลองทีละรายการด้วย eglChooseConfig ตัวอย่างเช่น การดำเนินการนี้ช่วยให้คุณลองใช้การกำหนดค่าที่มีการปรับเกลี่ยการแสดงผลก่อน แล้วเปลี่ยนไปใช้การกำหนดค่าที่ไม่มีการปรับเกลี่ยการแสดงผลได้หากจำเป็น (I1ba74)
  • ตั้งแต่ Android U เป็นต้นไป ระบบจะเพิ่มการรองรับ SystemDataSources.DATA_SOURCE_HEART_RATE ลงใน WearOS ข้อมูลแทรกนี้รับประกันว่าจะรองรับข้อมูลแทรก SHORT_TEXT เท่านั้น แต่เราขอแนะนำให้ ComplicationSlot ยอมรับ SMALL_IMAGE ด้วย เนื่องจาก OEM อาจเลือกแสดงทางลัดไปยังแอปสุขภาพแทนค่าปัจจุบัน (I34223)
  • เราได้เพิ่ม METADATA_KEY_CONFIG_RESTORE_SUPPORTED ซึ่งตั้งแต่ Android U เป็นต้นไปจะควบคุมสิ่งที่จะเกิดขึ้นเมื่อระบบกู้คืนจากข้อมูลสำรองของแหล่งข้อมูลข้อมูลแทรกด้วย METADATA_KEY_DATA_SOURCE_CONFIG_ACTION โดยค่าเริ่มต้น ระบบจะถือว่าบริการแหล่งข้อมูลข้อมูลแทรกรองรับการสำรองข้อมูลการกําหนดค่า แต่หากไม่รองรับ ระบบจะเพิ่มการตั้งค่าข้อมูลเมตา METADATA_KEY_DATA_SOURCE_CONFIG_ACTION เป็นเท็จ ซึ่งจะทําเครื่องหมายช่องข้อมูลแทรกว่าไม่ได้กําหนดค่า (I6c505)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

24 มกราคม 2024

androidx.wear.watchface:watchface-*:1.2.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องใน Samsung Galaxy Watch 4, 5 และ 6 (43f0b0)

เวอร์ชัน 1.2.0

29 พฤศจิกายน 2023

androidx.wear.watchface:watchface-*:1.2.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.1.0

  • เราได้เพิ่มการรองรับข้อมูลแทรกประเภทใหม่ๆ ซึ่งพร้อมให้ใช้งานใน Android T ดังนี้
    • GoalProgressComplicationData ซึ่งคล้ายกับ RangedValueComplicationData ยกเว้นว่าใช้สำหรับความคืบหน้าตามเป้าหมายที่ค่าต่ำสุดโดยนัยคือ 0 และค่าที่อนุญาตต้องมากกว่า targetValue
    • WeightedElementsComplicationData ซึ่งประกอบด้วยอาร์เรย์ขององค์ประกอบ (คู่ของน้ำหนักและสี) พร้อมกับข้อความ/ชื่อ/รูปภาพ (ไม่บังคับ) ข้อมูลเหล่านี้อาจแสดงเป็นแผนภูมิวงกลมที่สีต้องสื่อความหมายตามบริบท เนื่องจากโดยทั่วไปแล้วแผนภูมิแบบซับซ้อนจะไม่มีพื้นที่เพียงพอที่จะแสดงผลป้ายกำกับ
  • เราได้เพิ่มการรองรับ ColorRanges ที่ไม่บังคับไปยัง RangedValueComplicationData โดยปกติแล้ว ข้อมูลแทรกจะแสดงผลในสีที่หน้าปัดเลือก แต่บางครั้ง ComplicationDataSource อาจเป็นตําแหน่งที่ดีที่สุดในการตั้งค่าสี เช่น เมื่อข้อมูลแทรกมีความหมายเชิงอรรถศาสตร์ เช่น สีแดงเป็นสีน้ำเงินสำหรับอุณหภูมิ
  • ComplicationData เกือบทุกประเภทรองรับ SmallImages แล้วในตอนนี้
  • เราได้เพิ่ม ComplicationDisplayPolicy โดยที่ DO_NOT_SHOW_WHEN_DEVICE_LOCKED จะสั่งให้หน้าปัดที่เข้ากันได้ไม่แสดงข้อมูลแทรกเมื่ออุปกรณ์ล็อกอยู่
  • ตั้งแต่ Android T เป็นต้นไป OEM จะกำหนดได้ว่าคําขอข้อมูลแทรกมาจากหน้าปัดในรายการที่กําหนดโดยข้อมูลเมตา android.support.wearable.complications.SAFE_WATCH_FACES ในไฟล์ Manifest ของผู้ให้บริการหรือไม่ โดย ComplicationRequest#isForSafeWatchFace ผู้ให้บริการจะต้องมีสิทธิ์ com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE เพื่อรับค่าอื่นๆ นอกเหนือจาก TargetWatchFaceSafety.UNKNOWN
  • UserStyleFlavors กลายเป็นฟีเจอร์ที่ไม่ใช่เวอร์ชันทดลองแล้ว

เวอร์ชัน 1.2.0-rc01

18 ตุลาคม 2023

androidx.wear.watchface:watchface-*:1.2.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.2.0-beta02

6 กันยายน 2023

androidx.wear.watchface:watchface-*:1.2.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • SuspendingComplicationDataSourceService#onDestroy เปิดแล้ว โปรดทราบว่าเราได้นำการรองรับข้อมูลแทรกสภาพอากาศเริ่มต้นของระบบออกแล้ว

การเปลี่ยนแปลง API

  • เปลี่ยน "แสดงแหล่งข้อมูลใหม่สำหรับข้อมูลแทรกสภาพอากาศ" กลับ (I6f335)

เวอร์ชัน 1.2.0-beta01

23 สิงหาคม 2023

androidx.wear.watchface:watchface-*:1.2.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตั้งแต่ Android T เป็นต้นไป WearOS จะรองรับข้อมูลแทรกระบบสภาพอากาศเริ่มต้น

การเปลี่ยนแปลง API

  • เพิ่มระบบค่าเริ่มต้นของสภาพอากาศสำรองสำหรับข้อมูลแทรก (Ia0994)
  • แพตช์นี้จะเพิ่ม WatchFaceRuntimeService และ WatchFaceControlClient.createWatchFaceRuntimeControlClient พร้อมกับ Guava Wrapper การดำเนินการเหล่านี้จะเพิ่มการรองรับรันไทม์หน้าปัด ซึ่งเป็นหน้าปัดประเภทพิเศษที่โหลดคําจํากัดความจากแพ็กเกจอื่น ปัจจุบัน WearOS รองรับรันไทม์สำหรับรูปแบบหน้าปัด Android เท่านั้น (I2799f)
  • การแก้ไขนี้ติดตามมาจาก aosp/2636578 ซึ่งเราได้เปลี่ยนชื่อ int defs เพื่อให้โค้ดที่ขึ้นอยู่กับ WatchFaceType, CanvasType, TapType หรือ ComplicationsSlotBoundsType ไม่ต้องมีการเปลี่ยนแปลง (I4098b)
  • อัปเดตไฟล์ API เพื่อใส่คำอธิบายประกอบการระงับความเข้ากันได้ (I8e87a, b/287516207)
  • แพตช์นี้จะแสดงค่าคงที่ WatchFaceType ใน WatchFaceTypes, ค่าคงที่ CanvasType ใน CanvasTypes, ค่าคงที่ TapType ใน TapTypes และค่าคงที่ ComplicationsSlotBoundsType ใน ComplicationsSlotBoundsType (I3b85a, b/288750666)
  • WatchFace.OverlayStyle มีการใช้งานต่ำมากและ OEM รองรับได้ไม่มากนัก เราจึงจะลดการใช้งานและนำออกในภายหลัง (I7344a)

เวอร์ชัน 1.2.0-alpha09

21 มิถุนายน 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha09 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha09 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ RangedValueComplicationData.Builder ยอมรับ DynamicFloat แล้ว และ DynamicComplicationText ใหม่พร้อมใช้งานเป็นคลาสย่อยของ ComplicationText ซึ่งทั้ง 2 รายการสามารถใช้นิพจน์แบบไดนามิก รวมถึงการเชื่อมโยงแพลตฟอร์มที่อัปเดตที่ 1 Hz ในอุปกรณ์ Wear 4 ที่รองรับ

การเปลี่ยนแปลง API

  • เพิ่มประเภทแบบไดนามิกสำหรับระยะทางรายวัน แคลอรีรายวัน และชั้นที่เดินขึ้น/ลงรายวัน ตอนนี้คีย์สําหรับแหล่งข้อมูลด้านสุขภาพของแพลตฟอร์มจะอยู่ภายใต้ PlatformHealthSources.Keys (Ib7637)
  • ใช้ PlatformDataProvider เพื่อระบุอัตราการเต้นของหัวใจและจำนวนก้าวรายวัน นำอินเทอร์เฟซ SensorGateway ออกจาก API สาธารณะ (I55b84)
  • เปลี่ยนชื่อ StateEntryValue เป็น DynamicDataValue และอัปเดต API สถานะให้ใช้ DynamicDataKey (If1c01)
  • เพิ่ม AppDataKey เพื่อเข้าถึงสถานะการพุชแอป เพิ่ม PlatformDataKey เพื่อเข้าถึงข้อมูลแพลตฟอร์ม เพิ่มการรองรับเนมสเปซใน StateStore (I7985e)
  • ระบบนำวิธีการ enable/disablePlatformSource ออกจาก DynamicTypeEvaluator แล้ว ผู้โทรควรรับผิดชอบสำหรับการอัปเดต (I78c6d)
  • อนุญาตให้จำกัดขนาดของประเภทข้อมูลที่เชื่อมโยง (Ie2966)

เวอร์ชัน 1.2.0-alpha08

19 เมษายน 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha08 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha08 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตั้งแต่ Android T เป็นต้นไป ผู้ให้บริการข้อมูลแทรกที่มีสิทธิ์ com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE จะลงทะเบียนข้อมูลเมตา androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES ซึ่งจะลบล้าง android.support.wearable.complications.SUPPORTED_TYPES สำหรับหน้าปัดที่ปลอดภัย ซึ่งหมายความว่าผู้ให้บริการข้อมูลแทรกอาจเลือกแสดงข้อมูลแทรกประเภทต่างๆ ในหน้าปัดที่เชื่อถือและไม่เชื่อถือ

การเปลี่ยนแปลง API

  • การนำไปใช้งานของคลาส @Deprecated กับพร็อพเพอร์ตี้ (I882d1, b/271441831)
  • ชื่อพารามิเตอร์ค่าของ Enum.valueOf เปลี่ยนแปลง (Ia9b89)
  • ข้อยกเว้นที่โยนเพิ่มเติมจาก enum valueOf (I818fe)
  • เราได้นํา renderWatchFaceToSurface ออกแล้ว และใช้ createRemoteWatchFaceView แทน ซึ่งสร้างขึ้นจาก SurfaceControlViewHost และอนุญาตให้ผู้เรียกใช้ฝังมุมมองจากหน้าปัด ซึ่งจะแสดงผลเมื่อไคลเอ็นต์เรียก RemoteWatchFaceViewHost#renderWatchFace (Ib311d)
  • เราได้เพิ่ม renderWatchFaceToSurface ไปยัง InteractiveWatchFaceClient, HeadlessWatchFaceClient และ EditorSession แล้ว ซึ่งโดยทั่วไปจะมีประสิทธิภาพมากกว่าการแสดงผลเป็นบิตแมป (Ieacad)
  • เปลี่ยนชื่อ ObservableStateStore เป็น StateStore แล้ว (Ieb0e2)
  • เพิ่ม DynamicTypeEvaluator.Builder แทนอาร์กิวเมนต์คอนสตรัคเตอร์เพื่อให้ใช้อาร์กิวเมนต์ที่ไม่บังคับได้มากขึ้น ซึ่งรวมถึง ObservableStateStore ที่ตอนนี้จะเป็นร้านค้าว่างโดยค่าเริ่มต้น (I6f832)
  • ปรับลําดับพารามิเตอร์ใน DynamicTypeEvaluator (Ic1ba4)
  • เพิ่มผู้ดำเนินการลงในเมธอด DynamicTypeEvaluator.bind แล้ว (I346ab)
  • เราได้เพิ่มเมธอด startEvaluation ลงใน BoundDynamicType เพื่อทริกเกอร์การประเมินหลังจากที่มีการเชื่อมโยงประเภทแบบไดนามิกแล้ว (I19908)
  • ผู้ให้บริการข้อมูลแทรกที่มีcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACEที่มีสิทธิ์สามารถลงทะเบียนข้อมูลเมตา androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES ซึ่งจะลบล้าง android.support.wearable.complications.SUPPORTED_TYPES สำหรับหน้าปัดที่ปลอดภัย (Id1c73)
  • เราได้เปลี่ยนชื่อ CustomValueUserStyleSettings2 เป็น LargeCustomValueUserStyleSettings แล้ว (Ic17ac)

การแก้ไขข้อบกพร่อง

  • นำ DynamicTypeValueReceiver#onPreUpdate ออกแล้ว (I2dc35)

เวอร์ชัน 1.2.0-alpha07

22 กุมภาพันธ์ 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha07 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha07 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตั้งแต่ Android T เป็นต้นไป OEM จะกำหนดได้ว่าคําขอข้อมูลแทรกมาจากหน้าปัดในรายการที่กําหนดโดยข้อมูลเมตา android.support.wearable.complications.SAFE_WATCH_FACES ในไฟล์ Manifest ของผู้ให้บริการหรือไม่ โดย ComplicationRequest#isForSafeWatchFace ผู้ให้บริการจะต้องมีสิทธิ์ com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE จึงจะรับข้อมูลอื่นที่ไม่ใช่ TargetWatchFaceSafety.UNKNOWN ได้

  • นอกจากนี้ Android T CustomValueUserStyleSetting2 ยังพร้อมให้ใช้งานด้วย ซึ่งสามารถเก็บข้อมูลได้สูงสุด 12.5 KB ขีดจํากัดก่อนหน้านี้สําหรับ CustomValueUserStyleSetting คือ 1KB แม้ว่าจะมีขีดจำกัดขนาดที่เพิ่มขึ้น แต่เราขอแนะนำให้นักพัฒนาหน้าปัดเก็บข้อมูลให้น้อยที่สุด เนื่องจากระบบจะส่งการตั้งค่าผ่านบลูทูธระหว่างการแก้ไขและแบนด์วิดท์ของบลูทูธมีจำกัด

การเปลี่ยนแปลง API

  • เราได้เพิ่มพารามิเตอร์ที่ไม่บังคับ eglContextAttribList ลงใน GlesRenderer และ GlesRenderer2 ซึ่งช่วยให้คุณตั้งค่า EGL14.EGL_CONTEXT_CLIENT_VERSION ที่ส่งไปยัง EGL14.eglCreateContext ได้ (I2a83e)
  • เราได้ย้ายข้อมูลไลบรารีหน้าปัดไปยัง androidx.core.util.Consumer แทน java.util.function.Consumer แล้ว (I273f5)
  • ข้อยกเว้นเพิ่มเติมที่โยนออกมาจากตัวเข้าถึงพร็อพเพอร์ตี้ KT (Iff9d9)
  • เราได้เพิ่ม InteractiveWatchFaceClient.isComplicationDisplayPolicySupported เพื่อให้ไคลเอ็นต์ตัดสินใจได้ว่าจะต้องจำลองการรองรับในนามของหน้าปัดเก่าหรือไม่ (I24c89)
  • เราตัดสินใจว่า isForSafeWatchFace ควรเป็น IntDef แบบ 3 สถานะ (Ief2f7)
  • สำหรับ Android T เราได้เปิดตัว ComplicationRequest.isForSafeWatchFace ซึ่งมีไว้สำหรับ OEM และใช้ com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE สำหรับแหล่งข้อมูลในภาพระบบ ฟังก์ชันนี้จะแสดงผลเป็น "จริง" หากหน้าปัดที่กำลังขออยู่อยู่ในรายการหน้าปัดที่ปลอดภัยซึ่งแหล่งข้อมูลระบุไว้ในไฟล์ Manifest (I0cbb6)
  • สำหรับ Android T เราได้เพิ่ม CustomValueUserStyleSetting2 ซึ่งเก็บได้สูงสุด 12.5 KB ขีดจํากัดก่อนหน้านี้สําหรับ CustomValueUserStyleSetting คือ 1KB (I0b100)

เวอร์ชัน 1.2.0-alpha06

25 มกราคม 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha06 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha06 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เรากำลังดำเนินการเพิ่มการรองรับการเชื่อมโยงแพลตฟอร์มข้อมูลแทรกอยู่ แต่ยังไม่พร้อมใช้งานในตอนนี้ โปรดติดตามความคืบหน้าต่อไป
  • เราได้เพิ่มการรองรับ ComplicationSlot XML สำหรับข้อมูลแทรกประเภทใหม่อย่าง GOAL_PROGRESS และ WEIGHTED_ELEMENTS

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่เครื่องมือแก้ไขหน้าปัดเปิดตัวในอุปกรณ์ Samsung อย่างไม่ถูกต้อง (3b5987)
  • แก้ไขข้อบกพร่องที่บางครั้งข้อมูลแทรกไม่แสดงอย่างถูกต้องเมื่อสลับระหว่างหน้าปัดที่มีหน้าโปรดหลายหน้า (b38ece)
  • แก้ไขข้อบกพร่องเกี่ยวกับการจัดรูปแบบด้วย perOptionScreenReaderNames ที่ทําให้หน้าปัดขัดข้อง (e9f466)

เวอร์ชัน 1.2.0-alpha05

7 ธันวาคม 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เมื่อไม่นานมานี้เราได้เพิ่มการรองรับ UserStyleSettings แบบลําดับชั้น และตั้งแต่ Android T เป็นต้นไป คุณสามารถมี ComplicationSlotsUserStyleSetting มากกว่า 1 รายการในลําดับชั้นได้ ComplicationSlotsUserStyleSetting จะมีเพียงรายการเดียวที่ใช้งานอยู่ โดยอิงตามการเลือกสไตล์ของผู้ใช้

  • เรากำลังปรับปรุงการรองรับโปรแกรมอ่านหน้าจอสำหรับ ListOption และ ComplicationSlotsOption โดยการเพิ่มช่อง screenReaderName โปรดทราบว่าก่อน Android T เครื่องมือแก้ไขสำหรับอุปกรณ์เสริมจะไม่สนใจช่องนี้

การเปลี่ยนแปลง API

  • เราได้เพิ่มช่อง screenReaderName ใหม่ที่ไม่บังคับลงใน ListOption และ ComplicationSlotsOption เพื่อให้ผู้แก้ไขใช้ ซึ่งเครื่องมือแก้ไขสำหรับอุปกรณ์เสริมในอุปกรณ์ก่อน Android T จะละเว้น (I75326)
  • ตั้งแต่ Android T ระบบรองรับ ComplicationSlotsUserStyleSettings หลายรายการในลําดับชั้นสไตล์ ตราบใดที่จะมี ComplicationSlotsUserStyleSettings ใช้งานได้เพียงรายการเดียวในแต่ละครั้ง เราได้เพิ่มฟังก์ชันยูทิลิตี findComplicationSlotsOptionForUserStyle ลงใน UserStyleSchema เพื่อช่วยค้นหา ComplicationSlotsOption ที่ใช้งานอยู่ (หากมี) (Ic2b06)
  • มีการดึง RangedValuesTypes ไปยังออบเจ็กต์สหายของ RangedValueComplicationData และเปลี่ยนชื่อเป็น TYPE_UNDEFINED, TYPE_RATING และเพิ่ม TYPE_PERCENTAGE ใหม่ (I55d02)
  • เราได้เปลี่ยนชื่อ DynamicFloat เวอร์ชันทดลองเป็น FloatExpression และทําเครื่องหมายเป็น @hide แล้ว (Idf4f1)
  • เพิ่มคำอธิบายประกอบ @JvmDefaultWithCompatibility (I8f206)

เวอร์ชัน 1.2.0-alpha04

9 พฤศจิกายน 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha04 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • สำหรับ Android T เราได้เพิ่มการรองรับข้อมูลแทรกใหม่ 2 ประเภท ได้แก่ GoalProgressComplicationData และ WeightedElementsComplicationData
  • GoalProgressComplicationData คล้ายกับ RangedValueComplicationData แต่ค่าของ GoalProgressComplicationData อนุญาตให้เกินเป้าหมายได้ (สำหรับ RangedValueComplicationData ระบบจะจำกัดค่าให้อยู่ในช่วง [min .. max]) ซึ่งส่งผลต่อการออกแบบภาพอาจไม่เหมาะกับหน้าปัดบางรุ่น
  • GoalProgressComplicationData เพิ่มการรองรับแผนภูมิวงกลมและการแจกแจงข้อมูลแบบง่ายที่คล้ายกัน
  • เราได้เพิ่มการรองรับ ColorRamps ไปยัง RangedValueComplicationData โดยที่ไม่บังคับ
  • สำหรับ Android T เราได้เพิ่ม ComplicationPersistencePolicy และ setCachePolicy ลงใน ComplicationData ซึ่งปัจจุบันช่วยให้ผู้ให้บริการควบคุมได้ว่าข้อมูลแทรกจะคงอยู่หรือไม่ (กล่าวคือ ข้อมูลแทรกได้รับการแคชไว้หลังจากการรีบูตหรือไม่) ข้อมูลแทรกส่วนใหญ่ไม่จําเป็นต้องตั้งค่าการควบคุมแคช แต่การตั้งค่านี้จะช่วยแก้ไขกรณีที่พบไม่บ่อยซึ่งมีข้อมูลล้าสมัยสําหรับข้อมูลแทรกบางรายการที่อัปเดตบ่อย (เช่น ข้อมูลแทรกข้อมูลสุขภาพ) นอกจากนี้ เรายังได้เพิ่ม ComplicationDisplayPolicy โดยที่ DO_NOT_SHOW_WHEN_DEVICE_LOCKED จะสั่งให้หน้าปัดที่เข้ากันได้ไม่แสดงข้อมูลแทรกเมื่ออุปกรณ์ล็อกอยู่ (Ic9574)

การเปลี่ยนแปลง API

  • GoalProgressComplicationData, WeightedElementsComplicationData และ ColorRamp ไม่ได้อยู่ในช่วงทดลองแล้ว (Ica9e2)
  • ตอนนี้ ComplicationPersistencePolicy และ ComplicationDisplayPolicy มีการทำเครื่องหมายเป็น T API อย่างถูกต้องแล้ว (I31d88)
  • ตอนนี้เครื่องมือสร้าง ComplicationSlotOverlay ที่เลิกใช้งานแล้วมี DeprecationLevel.WARNING ซึ่งช่วยให้เรียกใช้จาก Java ได้อีกครั้ง (Ib308c)
  • เราได้แก้ไขปัญหาความเข้ากันได้ของ Java บางรายการกับ ComplicationRequestListener, CanvasComplication, ComplicationTapFilter และ InteractiveWatchFaceClient โดยการกำกับเนื้อหาด้วย @JvmDefaultWithCompatibility (Id94fc)
  • เราได้นำ ProtoLayoutComplicationData และ ListComplicationData เวอร์ชันทดลองออกแล้ว เรื่องราวสำหรับนักพัฒนาแอปเหล่านี้ไม่ชัดเจน เราหวังว่าจะได้กลับมาดูเรื่องนี้อีกครั้งในอนาคต (I9df05)
  • เราได้เพิ่ม ValueType กลับไปยัง RangedValueComplicationData แล้ว ตอนนี้ WeightedElementsComplicationData รองรับสีพื้นหลังแล้ว เรานำ DiscreteRangedValueComplicationData ออกแล้วเนื่องจากฟังก์ชันการทำงานเป็นส่วนหนึ่งของ WeightedElementsComplicationData (I6446c)

การแก้ไขข้อบกพร่อง

  • ใส่ isForScreenShot ในโค้ดเท่ากับและโค้ดแฮช ตรวจสอบว่า onRenderParametersChanged ได้รับค่า isForScreenshot ที่ถูกต้อง (I04a41)
  • แก้ไขการรั่วไหลของ WatchFaceControlService จากไคลเอ็นต์แบบ Headless (e90e00)

เวอร์ชัน 1.2.0-alpha03

5 ตุลาคม 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha03 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ไม่มีฟีเจอร์ใหม่ แต่เราได้แก้ไขข้อบกพร่องของเครื่องมือแก้ไขหน้าปัด 2 ข้อ

การเปลี่ยนแปลง API

  • เลิกใช้งาน UserStyleSchema.userStyleSettings เนื่องจาก rootUserStyleSettings ไม่ได้เป็นแบบทดลองแล้ว (Ie96e3)
  • ย้าย rootUserStyleSettings ออกจากเวอร์ชันทดลอง (I8d6b3)
  • เราได้ทําเครื่องหมาย WatchFaceColors เป็นเวอร์ชันทดลองเนื่องจากระบบบางระบบไม่รองรับ (I6d75d)
  • แสดง DisconnectReasons ใน API สาธารณะเพื่อให้ทำงานร่วมกับ IntDef ได้ (I791f8)

การแก้ไขข้อบกพร่อง

  • ปิดเครื่องมือแก้ไขในนาฬิกาหาก SysUI หมดพลังงาน หาก SysUI หยุดทำงานและเครื่องมือแก้ไขหน้าปัดในนาฬิกาไม่ปิด หน้าปัดอาจอยู่ในสถานะที่ไม่สอดคล้องกันเนื่องจากระบบอาศัย SysUI เพื่อเก็บการเปลี่ยนแปลงสไตล์ของผู้ใช้ไว้(ba762a
  • แก้ไขปัญหาการรั่วไหลของหน่วยความจำใน ComplicationDataSourceInfoRetriever ซึ่งการดําเนินการต่อของ kotlin coroutine ทําหน้าที่เป็นรูท gc และเก็บกิจกรรมของเครื่องมือแก้ไขไว้ (33ee06)

เวอร์ชัน 1.2.0-alpha02

21 กันยายน 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • หน้าปัดบางหน้ามีการกําหนดค่านอก UserStyle ที่ส่งผลต่อลักษณะที่ปรากฏ (เช่น การเลือกรูปภาพพื้นหลัง) เราได้เพิ่ม Renderer.sendPreviewImageNeedsUpdateRequest ซึ่งช่วยให้หน้าปัดขอรูปภาพตัวอย่างที่อัปเดตได้ โปรดทราบว่าการอัปเดตระบบที่เกี่ยวข้องเป็นสิ่งจําเป็นเพื่อให้การอัปเดตนี้ใช้งานได้

  • นอกจากนี้ เรายังได้เพิ่ม API สำหรับหน้าปัดเพื่อแสดงสีของหน้าปัดต่อระบบ ซึ่งอาจเลือกจานสีตามข้อมูลนี้ โปรดทราบว่าฟีเจอร์นี้อยู่ในช่วงทดลองในแพตช์ที่ตามมา

  • ปัจจุบัน ComplicationData เกือบทุกประเภทรองรับ SmallImages

การเปลี่ยนแปลง API

  • บางครั้งตัวจัดการวอลเปเปอร์อาจแยกออกจากเครื่องมือหนึ่งและสร้างเครื่องมืออื่น เราได้เพิ่ม DisconnectReason int def และขยาย ClientDisconnectListener ด้วยเมธอดใหม่ที่มี DisconnectReason ซึ่งช่วยให้ Listener สังเกตการแยกเครื่องยนต์ได้ (I45cce)
  • เพิ่มพารามิเตอร์ที่ไม่บังคับ 2 รายการ nameResourceId และ screenReaderResourceId ลงในตัวสร้าง ComplicationSlotOverlay (I157e8)
  • เราได้เพิ่มตัวแฝง Guava สำหรับ getOrCreateInteractiveWatchFaceClient แบบโอเวอร์โหลดใหม่ที่มี PreviewImageUpdateRequestedListener (Ic31f0)
  • เราได้เพิ่ม Renderer.sendPreviewImageNeedsUpdateRequest ซึ่งมีประโยชน์สำหรับหน้าปัดที่มีสถานะอยู่นอก UserStyleSchema ซึ่งส่งผลต่อลักษณะที่ปรากฏ (เช่น หน้าปัดที่มีรูปภาพพื้นหลังที่เลือกได้) ในฝั่งไคลเอ็นต์ เราได้เพิ่ม PreviewImageUpdateRequestedListener ลงใน getOrCreateInteractiveWatchFaceClient เพื่อเป็นพารามิเตอร์ที่ไม่บังคับเพื่อสังเกตคําขอเหล่านี้ (Iff44a)
  • เราได้ลดความซับซ้อนของ API สำหรับการแสดง WatchFaceColors แล้ว ตอนนี้มีพร็อพเพอร์ตี้ง่ายๆ ชื่อ watchFaceColors ในโปรแกรมแสดงผลที่หน้าปัดสามารถตั้งค่าได้ ซึ่งควรอัปเดตตามความจำเป็นเพื่อตอบสนองต่อการเปลี่ยนแปลงสไตล์ เราได้เพิ่ม OnWatchFaceColorsListener ลงใน InteractiveWatchFaceClient แทนการใช้ WallpaperManager เพื่อสังเกตการเปลี่ยนแปลงสี (I490bc)
  • เราได้เพิ่มคลาส WatchFaceColors ซึ่งเก็บสีหน้าปัด 3 สีที่โดดเด่นที่สุด และเพิ่มเมธอดแบบเปิด watchfaceColors และ notifyWatchFaceColorsChanged ลงในโปรแกรมแสดงผล ซึ่งจะช่วยให้ระบบรับสีของหน้าปัดผ่าน WallpaperManager.getWallpaperColors ได้ (I3d611)
  • ตอนนี้ ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData (และ DiscreteRangedValueComplicationData, GoalProgressComplicationData และ WeightedElementsComplicationData เวอร์ชันทดลอง) ทั้งหมดรองรับ SmallImages แล้ว หากหน้าปัดเลือกที่จะแสดงผลข้อมูลแทรกหลายสี หน้าปัดจะมีตัวเลือกให้ใช้ SmallImage แบบหลายสี ซึ่งก่อนหน้านี้ต้องใช้รูปภาพโมโนโครม (I257df)
  • เปลี่ยนรูปแบบ PreviewImageUpdateRequestedListener เป็น Consumer<> แทน (Ia875d)
  • แทนที่เมธอดนามธรรมเดี่ยว (SAM) ประเภท OnWatchfaceColorsListener ที่กําหนดเองด้วย SAM ประเภททั่วไปของ Java (Consumer) (I0c489)
  • เราได้เลิกใช้งานเมธอด getOrCreateInteractiveWatchFaceClient และ listenableGetOrCreateInteractiveWatchFaceClient แบบเก่าที่ไม่ได้ระบุ PreviewImageUpdateRequestedListener (Iec502)

การแก้ไขข้อบกพร่อง

  • เปลี่ยนชื่อ DisconnectReason.BINDER_DIED เป็น DisconnectReason.ENGINE_DIED แล้ว (I4eb0e)

เวอร์ชัน 1.2.0-alpha01

10 สิงหาคม 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เพิ่มการรองรับรูปแบบข้อมูลแทรกใหม่แบบทดลอง นี่เป็นพื้นที่ที่กำลังพัฒนาอยู่ รูปแบบใหม่เหล่านี้อาจมีการเปลี่ยนแปลงโดยไม่ต้องแจ้งให้ทราบ และขณะนี้ CanvasComplicationDrawable ยังไม่รองรับโปรแกรมแสดงผล
  • นอกจากนี้ เรายังเพิ่มระยะขอบที่ไม่บังคับลงในช่องข้อมูลแทรก ซึ่งทำให้แตะข้อมูลแทรกขนาดเล็กได้ง่ายขึ้น

การเปลี่ยนแปลง API

  • ตอนนี้คลาส BoundingArc เวอร์ชันทดลองจะเปลี่ยนแปลงไม่ได้ (If624a)
  • การแตะข้อมูลแทรกขนาดเล็กอาจทำได้ยาก เพื่อเป็นการลดปัญหานี้ เราจึงได้เพิ่มการรองรับระยะขอบซึ่งจะเพิ่มพื้นที่ที่แตะได้โดยไม่ส่งผลต่อการเรนเดอร์ ComplciationSlots จะมีระยะขอบขนาด 0 เว้นแต่จะระบุไว้ (ในโค้ดหรือผ่าน XML) (I14089)
  • เปลี่ยนลายเซ็น getComplicationSlotInflationFactory(CurrentUserStyleRepository) ให้แสดงผลอินสแตนซ์ของโรงงานที่ไม่ใช่ค่า Null การคืนค่า Null ก่อนหน้านี้เป็นข้อผิดพลาด ดังนั้นการแก้ไขนี้เป็นเพียงการทำให้สัญญา API ชัดเจนขึ้น (I0fcc0)
  • เราได้เพิ่มอาร์กิวเมนต์ currentUserStyleRepository ลงในเมธอด WatchFaceService.getComplicationSlotInflationFactory เพื่อให้สอดคล้องกับ createComplicationSlotsManager (I2ddd2)
  • UserStyleFlavors กลายเป็นฟีเจอร์ที่ไม่ใช่เวอร์ชันทดลอง (I69cdc)
  • เราได้นํา ValueType เวอร์ชันทดลองออกจาก RangedValueComplicationData แล้วแทนที่ด้วย DiscreteRangedValueComplicationData เวอร์ชันทดลอง ซึ่งเหมือนกับ RangedValueComplicationData ยกเว้นช่วงและค่าของจำนวนเต็ม นอกจากนี้ เรายังได้เปิดตัว GoalProgressComplicationData เวอร์ชันทดลอง ซึ่งคล้ายกับ RangedValueComplicationData ยกเว้นว่า GoalProgressComplicationData มีไว้สำหรับความคืบหน้าตามเป้าหมายที่ค่าต่ำสุดจะเป็น 0 โดยปริยาย และค่าที่อนุญาตจะมากกว่า targetValue ได้ หมายเหตุสำหรับตัวแปร RangedValue ทั้งหมด คุณต้องระบุ monochromeImage, ข้อความ หรือชื่ออย่างน้อย 1 รายการ (I9590c)
  • เรานำ boundsWithMargins ออกจาก ComplicationSlotState แล้วเนื่องจากซอฟต์แวร์ระบบไม่มี Use Case สำหรับ boundsWithMargins (I42e26)
  • เราได้เพิ่มการรองรับเวอร์ชันทดลองสำหรับ WeightedElementsComplicationData ซึ่งประกอบด้วยอาร์เรย์ขององค์ประกอบ (คู่ของน้ำหนักและสี) พร้อมกับข้อความ/ชื่อ/รูปภาพ (ไม่บังคับ) ข้อมูลเหล่านี้อาจแสดงเป็นแผนภูมิวงกลมที่สีต้องสื่อความหมายตามบริบท เนื่องจากโดยทั่วไปแล้วแผนภูมิแบบซับซ้อนจะไม่มีพื้นที่เพียงพอที่จะแสดงผลป้ายกำกับ (I87eea)
  • ตอนนี้ ColorRamps เวอร์ชันทดลองซึ่ง RangedValueComplicationData และ GoalProgressComplicationData ใช้หรือไม่ก็ได้ช่วยให้คุณระบุลำดับสีได้สูงสุด 7 สี และแฟล็กที่ระบุว่าควรใช้การเฟรมภาพสีอย่างราบรื่นหรือควรแสดงผลสีแบบทึบขนาดเท่าๆ กัน (I9f5bf)
  • RangedValueComplicationData.drawSegmented เปลี่ยนเป็น valueType ซึ่งเป็น int ที่มี ValueType IntDef ที่สอดคล้องกัน ซึ่งให้ความหมายเชิงอรรถศาสตร์กับค่าช่วง และอาจใช้โดยโปรแกรมแสดงข้อมูลแทรกเพื่อส่งผลต่อการจัดรูปแบบ (I0616b)
  • เราได้เพิ่มการรองรับเวอร์ชันทดลองสำหรับ ColorRanges ที่ไม่บังคับไปยัง RangedValueComplicationData โดยปกติแล้ว ข้อมูลแทรกจะแสดงผลในสีที่หน้าปัดเลือก แต่บางครั้ง ComplicationDataSource ก็เป็นตําแหน่งที่ดีที่สุดในการตั้งค่าสี เช่น เมื่อข้อมูลแทรกมีความหมายเชิงอรรถศาสตร์ที่เฉพาะเจาะจง เช่น สีแดงเป็นสีน้ำเงินสำหรับอุณหภูมิ (I5153a)
  • เราได้เพิ่มคำแนะนำ drawSegmented แบบทดลองลงใน RangedValueComplicationData แล้ว ซึ่งจะเป็นสัญญาณให้โปรแกรมแสดงผลวาดเครื่องหมายค่าช่วงที่มีส่วนของค่า โดย 1 ส่วน = 1 หน่วย (I7d7c1)

การแก้ไขข้อบกพร่อง

  • เราได้เพิ่มความสามารถในการกำหนด ComplicationSlotBounds โดยสัมพันธ์กับระบบพิกัดหน้าจอที่กำหนดไว้ล่วงหน้า (I0985d)

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

10 สิงหาคม 2022

androidx.wear.watchface:watchface-*:1.1.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้

  • นี่เป็นรุ่นที่มีการแก้ไขข้อบกพร่องและขอแนะนําอย่างยิ่งให้ผู้ใช้เวอร์ชัน 1.1.0 อัปเกรด

การแก้ไขข้อบกพร่อง

  • การจัดเตรียมหน้าปัดเป็นแบบไม่พร้อมกัน และหากได้รับข้อมูลแทรกก่อนที่หน้าปัดจะพร้อม ระบบจะใส่ข้อมูลแทรกนั้นไว้ในรายการ pendingInitialComplications และนำไปใช้ภายหลัง ขออภัย pendingInitialComplications มีผลใช้งานเร็วเกินไป ซึ่งหมายความว่ามีช่วงเวลาหนึ่งระหว่างการเริ่มต้นหน้าปัดซึ่งข้อมูลแทรกจะยังคงอยู่ใน pendingInitialComplications และถูกละเว้น ปัญหานี้ได้รับการแก้ไขแล้ว นอกจากนี้ การแก้ไขนี้ยังแก้ไขข้อบกพร่องที่ ComplicationRenderer พยายามโหลดตัวยึดตำแหน่งแบบไม่พร้อมกันอย่างไม่ถูกต้อง ซึ่งทำให้กราฟิกการคอมไพล์ไม่อัปเดต สุดท้ายนี้ แพตช์นี้จะช่วยแก้ไขข้อบกพร่องทางทฤษฎีที่อาจเกิดขึ้นเมื่อต้องผสาน pendingInitialComplications หลายรายการ (0d03ba3)

  • แก้ไขการล็อกตายที่อาจเกิดขึ้นใน InteractiveInstanceManager เมื่อ getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance ถือล็อกไว้นานกว่าที่จำเป็น โดยปกติแล้ว engine.setUserStyle จะทำงานได้อย่างรวดเร็ว แต่หากด้วยเหตุผลบางอย่างที่ทำงานช้า ผลลัพธ์ที่ได้อาจเป็น Deadlock/ANR แพตช์นี้จะย้ายงานที่ไม่จำเป็นออกจากล็อก ซึ่งจะช่วยลดโอกาสที่จะเกิดปัญหาการล็อกตาย (5a2adca)

  • แก้ไขปัญหาหลายอย่างที่คงWatchFaceServiceไว้ บางครั้ง WakeLock อาจเก็บ WatchFaceService ไว้ การเพิ่มการเรียก release() จะแก้ไขปัญหานี้ได้ นอกจากนี้ StateFlows ยังเก็บWatchFaceServiceได้ การยกเลิกCoroutineScopesที่เกี่ยวข้องจะแก้ไขปัญหานี้ได้ (fd48138)

  • เพิ่มการหมดเวลาลงใน awaitDeferredWatchFace* และแก้ไข watchfaceOverlayStyle NullPointerException ภายใต้สถานการณ์ปกติ การดำเนินการนี้จะไม่หมดเวลา รวมถึงหลังจากการติดตั้งใหม่และสถานการณ์ DirectBoot ที่โหลด CPU สูง นอกจากนี้ เรายังแก้ไข NPE ในกรณีที่มีการเรียกใช้ getWatchfaceOverlayStyle หลัง close() ด้วย (a4c3a5a)

เวอร์ชัน 1.1.0

15 มิถุนายน 2022

androidx.wear.watchface:watchface-*:1.1.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สําคัญนับตั้งแต่เวอร์ชัน 1.0.0

การแก้ไขที่ปรับปรุงใหม่

  • เราได้เพิ่มการรองรับสคีมาแบบลําดับชั้น ซึ่งช่วยให้ UI เครื่องมือแก้ไขเขียนลําดับชั้นของสไตล์ได้ ตอนนี้คุณสามารถระบุไอคอนแยกต่างหากสำหรับใช้ในหน้าปัดและเครื่องมือแก้ไขสำหรับอุปกรณ์เสริมได้แล้ว
  • มีการรองรับการเลือกใช้อินสแตนซ์หน้าปัดหลายรายการ โดยแต่ละอินสแตนซ์จะมีรหัสที่ไม่ซ้ำกันสำหรับแพลตฟอร์ม API ทั้งหมด
  • ตอนนี้คุณระบุชื่อที่อ่านออกเสียงได้สำหรับ ComplicationSlots เพื่อใช้ในเครื่องมือแก้ไขได้แล้ว
  • การรองรับการทดลองสำหรับ "รูปแบบ" การจัดแต่ง ซึ่งคือรูปแบบที่คัดสรรมาซึ่งจะแสดงในเครื่องมือแก้ไขที่ใช้ร่วมกัน
  • เมื่อโหลดอินสแตนซ์หน้าปัด 2 รายการสำหรับการแก้ไข อินสแตนซ์หน้าปัดจะแชร์ทรัพยากรได้ ซึ่งจะช่วยประหยัดหน่วยความจำ
  • เมื่อเลือกข้อมูลแทรกในเครื่องมือแก้ไขหน้าปัด ระบบจะเลือกผู้ให้บริการปัจจุบันไว้ล่วงหน้า

ข้อมูลแทรกที่ปรับปรุงใหม่

  • ตอนนี้คุณระบุ ComplicationType สำหรับแหล่งข้อมูลหลักและรองได้แล้ว ซึ่งช่วยให้นักพัฒนาแอปมีความยืดหยุ่นมากขึ้นสำหรับประสบการณ์การใช้งานที่พร้อมใช้งานทันที
  • เราได้เพิ่ม ComplicationDataTimeline ซึ่งจะระบุลำดับข้อมูลแบบจำกัดเวลาที่จะส่งไปยังหน้าปัด ซึ่งสามารถแคชและอัปเดตโดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในช่วงเวลาต่างๆ หรือกิจกรรมในปฏิทินหลายรายการที่กําลังจะเกิดขึ้น
  • ComponentName ของผู้ให้บริการข้อมูลแทรกเป็นส่วนหนึ่งของ ComplicationData
  • ตอนนี้ระบบจะแคชข้อมูลแทรกไว้ ซึ่งจะช่วยให้คุณได้รับประสบการณ์การใช้งานที่ดีขึ้นเมื่อสลับไปมาระหว่างหน้าปัด

การเปลี่ยนแปลงอื่นๆ

  • ตอนนี้คุณกำหนด UserStyleSchema และ ComplicationSlots ใน XML ได้แล้ว วิธีนี้ช่วยให้การสร้างหน้าปัดง่ายขึ้นและช่วยให้ระบบค้นหาข้อมูลเมตาได้เร็วขึ้น
  • ตอนนี้หน้าปัดสามารถกำหนดสีที่ใช้สำหรับการแสดงผลวางซ้อนของระบบได้แล้ว

เวอร์ชัน 1.1.0-rc01

18 พฤษภาคม 2022

androidx.wear.watchface:watchface-*:1.1.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้ทำการปรับเปลี่ยนบางอย่างเพื่อการใช้งานที่ง่ายขึ้นในการรองรับ XML ของหน้าปัด ซึ่งจะช่วยให้คุณระบุ ComplicationSlotBounds และข้อมูลอ้างอิงสนับสนุนได้ง่ายขึ้น การทดสอบข้อมูลแทรกในขอบ BoundingArc ยังคงดำเนินต่อไป โดยเชื่อมต่อกับ drawHighlight แม้ว่าจะยังไม่แนะนําให้ใช้งานในตอนนี้

การเปลี่ยนแปลง API

  • เราได้เพิ่มการโอเวอร์โหลดแบบทดลองของ drawHighlight ซึ่งยอมรับพารามิเตอร์ BoundingArc (I705f8)
  • ตอนนี้ XML หน้าปัดรองรับการอ้างอิงทรัพยากรแล้ว ซึ่งช่วยให้คุณใช้ค่าคงที่เดียวกันทั้งใน XML และโค้ดได้ (I3ef61)
  • เราได้เพิ่มความสามารถในการกำหนด ComplicationSlotBounds ในรูปแบบ center_x, center_y, size_x, size_y ตอนนี้คุณยังใช้หน่วยอื่น (เช่น dp) โดยใช้การอ้างอิงทรัพยากรได้ด้วย (Iace98)

การแก้ไขข้อบกพร่อง

  • แก้ไข runBlockingWithTracing ที่กำลังทำงานในบริบทที่ไม่ถูกต้อง (4f595fe)
  • ทำให้ BaseEditorSession.close เป็นแบบซิงโครนัส ปัญหาของ BaseEditorSession.close แบบไม่เป็นแบบพร้อมกันคือเราเผยแพร่ ComplicationDataSourceInfoRetriever ช้าเกินไป ซึ่งทำให้ระบบส่งสแปมคำเตือนใน logcat การดำเนินการนี้อาจไม่เป็นอันตราย แต่สแปม Logcat จะรบกวนสมาธิและควรหลีกเลี่ยง (35a5308)

เวอร์ชัน 1.1.0-beta02

11 พฤษภาคม 2022

androidx.wear.watchface:watchface-*:1.1.0-beta02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เพิ่มการรองรับComplicationDataประเภทใหม่แบบทดลอง ซึ่งยังไม่พร้อมใช้งาน แต่โปรดติดตามข้อมูลอัปเดต

การเปลี่ยนแปลง API

  • เราได้เพิ่ม BoundingArc ซึ่งเป็นคลาสทดลองที่อธิบายเรขาคณิตของช่องข้อมูลแทรกบนขอบ เราได้เพิ่มข้อมูลนี้ลงใน ComplicationSlot และส่งต่อไปยัง ComplicationSlotState และ WatchFaceMetadataClient แล้ว (I61a40)
  • เราได้เพิ่มความสามารถในการรับค่าการตั้งค่าใน UserStyleSetting XML ซึ่งช่วยให้คุณลดการพูดซ้ำและแชร์การตั้งค่าระหว่างหน้าปัดได้ (Ief841)
  • เราได้เพิ่มComplicationDataทดลองใหม่ 2 ประเภท ได้แก่ ListComplicationData และ ProtoLayoutComplicationData ขณะนี้ยังไม่มีการรองรับการแสดงผลสำหรับประเภทเหล่านี้ และ WearOS ยังไม่รู้จักประเภทเหล่านี้หากเพิ่มลงในไฟล์ Manifest ComplicationDataSource's (I1811c)

การแก้ไขข้อบกพร่อง

  • แก้ไขการอนุกรมประเภท TimeLineEntry เราไม่ได้ทำการจัดรูปแบบประเภท TimeLineEntry ซึ่งหมายความว่าระบบจะตีความ TimeLineEntries ที่แคชไว้ซึ่งมีประเภท NoData อย่างไม่ถูกต้องว่ามีลักษณะเป็นประเภทของโรคแทรกซ้อนหลัก ซึ่งนำไปสู่ NPEs เมื่อมีการเข้าถึงช่องที่ต้องระบุซึ่งไม่มีอยู่ (55ffdf5)
  • แก้ไขข้อบกพร่องที่ setComplicationData วางช่องไทม์ไลน์(fb392f5)
  • แก้ไขข้อบกพร่องที่บางครั้ง runBlockingWithTracing จะทําให้เกิด NPE(12ca62e)
  • แก้ไขข้อบกพร่องที่บางครั้งเราได้รับ ClassNotFoundException: android.support.wearable.complications.ComplicationText เมื่อได้รับข้อมูลแทรก (217942d9)
  • แก้ไขข้อบกพร่องใน GlesRenderer.backgroundThreadInitInternal ที่เรียก onBackgroundThreadGlContextCreated เฉพาะในกรณีที่มีการเรียก EGL14.eglCreateContext เท่านั้น แก้ไขข้อบกพร่องอีกข้อที่ภาพหน้าจอแสดงภาพผิดพลาดเนื่องจาก verticalFlip (c674ad2)
  • แก้ไขการตรวจสอบเวอร์ชัน XML ของ WatchFaceService เนื่องจากระบบโหลดจากแพ็กเกจที่ไม่ถูกต้อง (dfa06f3)
  • ตอนนี้รูปแบบการต่อสายไฟของตำแหน่งโฆษณาใช้กลุ่มภายใน เราไม่ต้องการให้ตัวยึดตำแหน่งทำให้หน้าปัดที่มีอยู่ใช้งานไม่ได้ ซึ่งอาจใช้ a.s.w.c.ComplicationData ภายในที่ซ่อนอยู่ ก่อนหน้านี้รูปแบบการต่อสายของข้อมูล NoDataComplication จะจัดเก็บตัวยึดตําแหน่งในช่องปกติ (ซึ่งเป็นปัญหาเนื่องจากหน้าปัดเก่าจะแสดงผลสตริงตัวยึดตําแหน่งซึ่งไม่เป็นไปตามที่ต้องการ) แต่ตอนนี้เราใช้แพ็กเกจภายในเพื่อแยกสิ่งนี้ออกอย่างสมบูรณ์ (d5e7bd2)

เวอร์ชัน 1.1.0-beta01

20 เมษายน 2022

androidx.wear.watchface:watchface-*:1.1.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้เมธอด WatchFaceMetadataClient (getUserStyleSchema, getComplicationSlotMetadataMap, getUserStyleFlavors) และ HeadlessWatchFaceClient.getUserStyleFlavors จะแสดง RuntimeException ที่ไม่ได้ตรวจสอบแทน WatchFaceException (I0718a)
  • ย้าย WatchFaceMetadataClient.WatchFaceException ออกจากชั้นเรียนแล้วเพื่อให้ใช้ซ้ำได้ (I4e869)

การแก้ไขข้อบกพร่อง

  • WatchFaceMetadataClient จะไม่ขัดข้องอีกต่อไปเมื่อส่ง ComplicationSlotBounds บางส่วน (Iaafd)

เวอร์ชัน 1.1.0-alpha05

6 เมษายน 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha05 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้คุณบอกได้ว่าแหล่งข้อมูลใดส่ง ComplicationData โดยการตรวจสอบ ComplicationData.dataSource หน้าปัดบางหน้าอาจใช้ข้อมูลนี้เพื่อปรับแต่งการแสดงข้อมูลแทรก (I44a73)

การเปลี่ยนแปลง API

  • เราได้เลิกใช้งาน Renderer.CanvasRenderer และ Renderer.GlesRenderer แล้วเพื่อใช้ Renderer.CanvasRenderer2 และ Renderer.GlesRenderer2 ซึ่งรองรับ SharedAssets ที่ส่งไปยังเมธอดการแสดงผล เราได้เปิดตัว ListenableCanvasRenderer2 และ ListenableGlesRenderer2 สำหรับการทำงานร่วมกันของ Java (I31ffa)
  • เพิ่มความสามารถในการกำหนด Flavors ให้กับ @WatchFaceFlavorsExperimental ซึ่งเป็นรายการหน้าปัดที่มีสไตล์ที่กำหนดค่าไว้ล่วงหน้า (I04dd0)
  • ตอนนี้ Renderer.sharedAssets เป็น StateFlow แล้ว และเราได้นํา Renderer.SharedAssetsFactory ที่ไม่ได้ใช้ออกแล้ว (I12ac5)
  • UserStyleSchema.userStyleSettings ไม่ได้เลิกใช้งานแล้ว (Iba7e3)
  • เราได้เพิ่ม HeadlessWatchFaceClient.getUserStyleSchemaDigestHash ซึ่งช่วยให้ HeadlessWatchFaceClient หลีกเลี่ยงค่าใช้จ่ายเพิ่มเติมที่ค่อนข้างต่ำของการส่งสคีมาผ่าน AIDL ก่อนที่จะคํานวณแฮชข้อมูลสรุป (I33597)
  • เราได้เพิ่ม isUserStyleSchemaStatic ลงใน WatchFaceMetadataClient ซึ่งจะเป็นจริงก็ต่อเมื่อ UserStyleSchema เชื่อถือได้ว่าจะไม่มีการเปลี่ยนแปลง เว้นแต่จะมีการอัปเดต APK หน้าปัด (I45a3f)
  • เราได้เพิ่ม getDigestHash ลงใน UserStyleSchema ซึ่งจะคํานวณแฮชข้อมูลสรุปของสคีมา ซึ่งสามารถใช้เพื่อระบุได้อย่างมีประสิทธิภาพว่า UserStyleSchema มีการเปลี่ยนแปลงหรือไม่ (I2063d)
  • เปลี่ยนชื่อ METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED เป็น METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • UserStyleSetting.OnWatchEditorData ได้เปลี่ยนชื่อเป็น UserStyleSetting.WatchFaceEditorData ซึ่งมีข้อมูลที่เครื่องมือแก้ไขหน้าปัดบนนาฬิกาใช้เท่านั้น (If3afb)

เวอร์ชัน 1.1.0-alpha04

9 มีนาคม 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha04 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha04 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ComplicationData ที่อัปเดตล่าสุดอาจไม่พร้อมใช้งานเสมอไป (เช่น ComplicationData ที่แคชไว้ซึ่งหมดอายุแล้ว) เราจึงขยาย NoDataComplication ด้วย ComplicationData ตัวยึดตําแหน่งที่ไม่บังคับ และเพิ่ม ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER ซึ่งอนุญาตให้ใช้ในบริบทของตัวยึดตําแหน่ง NoDataComplicationData เท่านั้น หากเลือกไว้ ระบบจะแนะนำให้แสดงตัวยึดตำแหน่งเหล่านี้ด้วยกล่อง/ส่วนโค้งสีเทา (I6285d)
  • เราได้เพิ่ม ComplicationData.getNextChangeInstant ซึ่งจะบอกคุณถึงช่วงเวลาถัดไปหลังจากช่วงเวลาอ้างอิงซึ่งช่องใดก็ได้ของข้อมูลแทรกอาจเปลี่ยนแปลง ข้อมูลนี้ใช้ภายในเพื่อกำหนดเวลาเฟรมสำหรับการอัปเดตข้อมูลแทรก เช่น หากปกติหน้าปัดจะอัปเดต 1 ครั้งต่อนาที การตั้งค่าข้อมูลแทรกนาฬิกาจับเวลาจะทำให้หน้าปัดอัปเดต 1 ครั้งต่อวินาที (I7ceb2)
  • ตอนนี้ EditorSession.watchFaceId ใช้ได้กับ API ทุกระดับแล้ว นอกจากนี้ ค่าของ WatchState.watchFaceInstanceId จะสอดคล้องกับ WatchState.watchFaceInstanceId เสมอ (I323b9)
  • คุณไม่จำเป็นต้องใช้ getPendingIntentForTouchEvent API อีกต่อไปเนื่องจากปัญหาพื้นฐานได้รับการแก้ไขแล้วในเฟรมเวิร์ก เราจึงนํา API ที่เกี่ยวข้องทั้งหมดออกแล้ว หน้าปัดไม่จำเป็นต้องดำเนินการใดๆ เป็นพิเศษเพื่อให้ PendingIntents เริ่มทำงาน แม้ว่าจะมีการกดปุ่มหน้าแรกไปเมื่อไม่นานก็ตาม (I1f2e8)
  • เราได้เพิ่ม RendererParameters.isForScreenShot ซึ่งจะเป็นจริงหากการแสดงผลมีไว้สำหรับภาพหน้าจอ หน้าปัดบางหน้าที่มีภาพเคลื่อนไหวจำเป็นต้องทราบข้อมูลนี้เพื่อทำการปรับเปลี่ยนเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด (I96d99)
  • เราได้เพิ่ม WatchFaceExceptionReason ลงใน WatchFaceException เพื่อให้บริบทเกี่ยวกับสิ่งที่ผิดพลาด (I01d15)
  • ระบบได้นำ ComplicationDataSourceService.onImmediateComplicationRequest ออกและเพิ่ม ComplicationRequest.immediateResponseRequired แทนเพื่อบ่งบอกว่าผู้ให้บริการต้องตอบกลับอย่างรวดเร็ว (ควรตอบกลับภายในเวลาไม่ถึง 100 มิลลิวินาที) โปรดทราบว่าฟังก์ชันการทำงานนี้ได้รับการปกป้องโดยสิทธิ์ com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE ที่มีสิทธิ์ (Ie6b23)
  • อัปเดต Nullability ใน Core และ AppCompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)

การแก้ไขข้อบกพร่อง

  • ตอนนี้แอปหน้าปัดจะขัดข้องพร้อมข้อยกเว้นหากการตรวจสอบสคีมาไม่สำเร็จ (Ia400f)

เวอร์ชัน 1.1.0-alpha03

9 กุมภาพันธ์ 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha03 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha03 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เราได้เพิ่มการรองรับแบบทดลองสำหรับสคีมารูปแบบแบบลําดับชั้น เราได้เพิ่มพร็อพเพอร์ตี้ใหม่ลงใน androidx.wear.watchface.style.UserStyleSetting.Option ซึ่งก็คือ childSettings ซึ่งในตอนแรกมีเพียง ListOption ที่ใช้เท่านั้น ซึ่งช่วยให้ UI ของเครื่องมือแก้ไขอธิบายลําดับชั้นของสไตล์ได้ โดย UserStyle พื้นฐานจะไม่เปลี่ยนแปลงและยังคงเป็น Map<String, ByteArray> (Iaf6f4)
  • เราได้เพิ่ม WatchFace.OverlayStyle ซึ่งช่วยให้หน้าปัดกำหนดค่าการแสดงผลของสถานะระบบที่วางซ้อนได้ (I8520d)
  • เราได้เปิดตัว clearWithBackgroundTintBeforeRenderingHighlightLayer ซึ่งเป็นพารามิเตอร์คอนสตรัคเตอร์ใหม่ที่ไม่บังคับสําหรับ CanvasRenderer (ค่าเริ่มต้นคือเท็จ) หากตั้งค่าเป็น "จริง" ระบบจะล้างผืนผ้าแคนวาสด้วยสีของสีอ่อนของพื้นหลัง (Ie01e5)
  • เพิ่มคีย์ข้อมูลเมตา androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED ซึ่งช่วยให้แหล่งข้อมูลข้อมูลแทรกสามารถระบุได้ว่าสามารถระบุค่าเริ่มต้นได้โดยไม่ต้องมีการกำหนดค่าใดๆ (Icc0d4)
  • เป็นเรื่องปกติที่เมื่อแก้ไขหน้าปัดจะมีทั้งอินสแตนซ์แบบอินเทอร์แอกทีฟและแบบ Headless เราได้เปิดตัว Renderer.SharedAssets เพื่อช่วยประหยัดหน่วยความจำ ซึ่งช่วยให้โปรแกรมแสดงผลหน้าปัดแชร์ข้อมูลที่แก้ไขไม่ได้ (เช่น พื้นผิวและชิดเดอร์) ระหว่างอินสแตนซ์ได้ GlesRenderer.setEglConfig และ GlesRenderer.setEglDisplay เลิกใช้งานแล้ว เราไม่ได้เป็นตั้งใจให้ตั้งค่าค่าเหล่านี้ได้ และการตั้งค่าดังกล่าวอาจทําให้ลักษณะการทํางานไม่ชัดเจน (I0d9e7)
  • เราได้เพิ่ม setNameResourceId และ setScreenReaderNameResourceId (ซึ่งอ้างอิงทรัพยากรสตริง) ลงใน ComplicationSlot.Builder และตัวรับที่เกี่ยวข้องใน androidx.wear.watchface.client.ComplicationSlotState ซึ่งจะช่วยให้ระบบดึงข้อมูลชื่อ ComplicationSlots เพื่อใช้ในเครื่องมือแก้ไขและโปรแกรมอ่านหน้าจอได้ (If6c6a)
  • ตอนนี้ WatchfaceMetadataClient.getUserStyleSchema และ getComplicationSlotMetadataMap จะแสดงผลเป็น WatchFaceException แทน RemoteException (I86f11)
  • onSynchronousComplicationRequest และฟังก์ชันที่เกี่ยวข้องใน ComplicationDataSourceService ได้เปลี่ยนชื่อเป็น onImmediateComplicationRequest แล้ว ฯลฯ (I87ba0)
  • ตัวแก้ไขหน้าปัดมีพื้นที่บนหน้าจอน้อยกว่าตัวแก้ไขสำหรับอุปกรณ์เสริมมาก จึงควรรองรับไอคอนที่แตกต่างกันสำหรับตัวแก้ไขหน้าปัด แพตช์นี้จะเพิ่ม OnWatchEditorData (ปัจจุบันมีเพียงไอคอน) ลงใน UserStyleSettings ทั้งหมดและคลาส Option ตามความเหมาะสม (If1886)
  • เราได้เพิ่ม @JvmOverloads ลงในตัวสร้างของ ListenableGlesRenderer เพื่อให้การทํางานร่วมกันของ Java ดีขึ้น (I2974a)

การแก้ไขข้อบกพร่อง

  • ตอนนี้เครื่องมือสร้างของ ListenableGlesRenderer ได้รับการทําเครื่องหมายเป็น @Throws(GlesException::class) อย่างถูกต้องแล้ว และตอนนี้คุณขยายคลาสนี้ใน Java ได้แล้ว (Iac6d0)
  • แก้ไขข้อบกพร่องเกี่ยวกับPhotoImageComplicationData tapAction ที่ไม่ได้รับการจัดการอย่างถูกต้อง (I1cc30)

เวอร์ชัน 1.1.0-alpha02

12 มกราคม 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha02 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha02 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ ComplicationData และคลาสย่อยที่เกี่ยวข้องมีการลบล้างเมธอด hashcode, equals และ toString แล้วเพื่อช่วยในการแก้ไขข้อบกพร่องและการทดสอบ ซึ่งทำให้ใช้งานได้ง่ายขึ้น

การเปลี่ยนแปลง API

  • เมธอด WatchfaceMetadataClient จะแสดงข้อผิดพลาด RemoteExceptions อีกครั้งตามความเหมาะสม ซึ่งช่วยให้โค้ดไคลเอ็นต์ตรวจหาข้อผิดพลาดจากหน้าปัดได้ง่ายขึ้น (I78785)
  • ตอนนี้ ComplicationData และคลาสย่อยมี hashcode, equals และ toString แล้ว (I24bc6)

เวอร์ชัน 1.1.0-alpha01

15 ธันวาคม 2021

androidx.wear.watchface:watchface-*:1.1.0-alpha01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้คุณกำหนด UserStyleSchema และ ComplicationSlots ใน XML ได้แล้ว ซึ่งช่วยให้สร้างหน้าปัดได้ง่ายขึ้น นอกจากนี้ การค้นหา WatchFaceMetadataClient ยังเร็วขึ้นด้วยเนื่องจากไม่จําเป็นต้องเชื่อมโยงกับบริการเพื่อรับข้อมูลเมตา WatchFaceMetadataClient และ ListenableWatchFaceMetadataClient ไม่ได้อยู่ในช่วงทดลองอีกต่อไป และจะกลายเป็นส่วนหนึ่งของ API ที่เสถียร ระบบจะรองรับหน้าปัดหลายอินสแตนซ์ (ไม่บังคับ) โดยแต่ละอินสแตนซ์จะมีตัวเลือกการจัดสไตล์ที่ผู้ใช้กำหนดไว้แตกต่างกัน ซึ่งจะปรากฏในเครื่องมือเลือกหน้าปัด หากต้องการเลือกใช้ฟีเจอร์นี้ หน้าปัดต้องมีแท็กข้อมูลเมตาต่อไปนี้ในไฟล์ Manifest

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • หน้าปัดบางหน้ามีสถานะที่ไม่ได้บันทึกไว้ใน UserStyle เพื่อรองรับสถานะนี้และอินสแตนซ์หลายรายการ ตอนนี้รหัสอินสแตนซ์ของหน้าปัดพร้อมใช้งานผ่าน WatchState.watchFaceInstanceId แล้ว

  • ระบบกำลังแคช ComplicationData เพื่อให้ข้อมูลแทรกแสดงทันทีเมื่อโหลด บางครั้งระบบจะแคช ComplicationData ไว้ในหน่วยความจำ และบางครั้งไลบรารีหน้าปัดจะจัดเรียงตามลําดับ เมื่อแปลงเป็นอนุกรม การดำเนินการแตะที่เกี่ยวข้องจะหายไป หากเป็นเช่นนั้น ComplicationData.tapActionLostDueToSerialization จะแสดงผลเป็น true และหน้าปัดควรแสดงผลข้อมูลแทรกในลักษณะอื่น (เช่น เป็นสีเทาหรือโปร่งแสงบางส่วน) เพื่อบ่งบอกว่าแตะไม่ได้ ระบบจะส่งComplicationDataที่อัปเดตแล้วพร้อมtapActionโดยเร็วที่สุด

  • ComplicationData บางรายการไม่ควรแคชไว้เป็นเวลานาน เราจึงเพิ่มฟีเจอร์ทั่วไปอย่าง ComplicationDataTimeline เข้ามาเพื่อรองรับกรณีนี้ ซึ่งสามารถใช้เพื่อระบุลำดับ ComplicationData ที่จำกัดเวลาเพื่อส่งไปยังหน้าปัด ซึ่งสามารถแคชและอัปเดตโดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในเวลาต่างๆ หรือกิจกรรมในปฏิทินหลายรายการที่กําลังจะเกิดขึ้น ComplicationRequestListener ได้รับการขยายให้มีเมธอดใหม่ onComplicationDataTimeline ซึ่งคุณใช้เพื่อแสดงผลข้อมูลนี้ได้

  • DefaultComplicationDataSourcePolicy ได้รับการขยายการให้บริการเพื่อให้คุณระบุ ComplicationType สําหรับแหล่งข้อมูลหลักและรองได้

  • เราได้เพิ่มการรองรับผู้ให้บริการข้อมูลแทรกแบบซิงค์ ซึ่งข้อมูลแทรกจะอัปเดตด้วยความถี่สูงกว่าปกติสูงสุด 1 ครั้งต่อวินาทีเมื่อหน้าปัดแสดงอยู่และไม่ใช่โหมดแอมเบียนท์ หมายเหตุ: ผู้ให้บริการข้อมูลแทรกแบบซิงโครนัสอาจมีการจำกัดการใช้งานเนื่องจากข้อกังวลด้านหน่วยความจำ

  • เราอาจเปลี่ยนการเปลี่ยนแปลง PendingIntentTapListener กลับ เนื่องจากเราแก้ปัญหาพื้นฐาน (หน้าปัดไม่สามารถเปิดใช้งานกิจกรรมเป็นเวลา 5 วินาทีหลังจากกดปุ่ม Home) ในเฟรมเวิร์กแทน

การเปลี่ยนแปลง API

  • ComplicationData.isCached เปลี่ยนเป็น tapActionLostDueToSerialization ซึ่งมีประโยชน์มากกว่าเมื่อต้องพิจารณาว่าควรแสดงผลช่องข้อมูลแทรกในลักษณะอื่นหรือไม่เพื่อบ่งบอกว่าแตะไม่ได้ (I6de2f)
  • เพิ่ม ComplicationDataTimeline ไปยัง wear-complication-data-source แล้ว ซึ่งสามารถใช้เพื่อระบุลำดับ ComplicationData ที่จำกัดเวลาเพื่อส่งไปยังหน้าปัด ซึ่งสามารถแคชและอัปเดตโดยอัตโนมัติ เช่น พยากรณ์อากาศของวันนี้ในเวลาต่างๆ หรือกิจกรรมในปฏิทินหลายรายการที่กําลังจะเกิดขึ้น ComplicationRequestListener ได้รับการขยายให้มีเมธอดใหม่ onComplicationDataTimeline ซึ่งคุณใช้เพื่อแสดงผลข้อมูลนี้ได้ มี Wrapper ของ Kotlin ใหม่ SuspendingTimelineComplicationDataSourceService สำหรับระงับบริการแหล่งข้อมูล (Idecdc)
  • เพิ่ม PendingIntentTapListener และ WatchFaceControlClient.getPendingIntentForTouchEvent แล้ว ซึ่งจะช่วยหน้าปัดที่ต้องเปิด Intent เพื่อตอบสนองต่อการแตะเพื่อแก้ปัญหาที่เฟรมเวิร์กบล็อกการเปิดใช้งานใหม่เป็นเวลา 5 วินาทีหลังจากกดปุ่ม Home (I98074)
  • เปิดตัวแคช ComplicationData สำหรับหน้าปัดแต่ละหน้า การดำเนินการนี้มีวัตถุประสงค์เพื่อให้หน้าปัดแสดงค่าข้อมูลข้อมูลแทรกล่าสุดที่ทราบเมื่อโหลดจนกว่าระบบจะมีเวลาอัปเดต มีเมธอด API ใหม่ WatchFaceControlClient.hasComplicationCache สำหรับ OEM ซึ่งอาจส่งผลต่อกลยุทธ์ของระบบในการส่งข้อมูลแทรกไปยังหน้าปัด นอกจากนี้ ComplicationData ยังมีพร็อพเพอร์ตี้ isCached และเราขอแนะนำให้แสดงผลข้อมูลแทรกที่แคชไว้แตกต่างกัน เนื่องจากระบบแคช tapAction ไม่ได้และจะแสดงเป็น null ในข้อมูลแทรกที่แคชไว้ (I404b0)
  • รหัสอินสแตนซ์ของหน้าปัดพร้อมใช้งานแล้วผ่าน WatchState.watchFaceInstanceId หน้าปัดส่วนใหญ่ไม่จําเป็นต้องใช้คีย์นี้ แต่หากมีสถานะต่อหน้าปัดที่ไม่ได้จัดเก็บไว้ในสคีมา คีย์นี้จะเป็นคีย์ที่ใช้ระบุอินสแตนซ์หน้าปัด คุณสามารถระบุรหัสเมื่อโทรหา WatchFaceControlClient.createHeadlessWatchFaceClient ได้แล้วเพื่อสนับสนุนการดำเนินการนี้ (I1ff98)
  • DefaultComplicationDataSourcePolicy ที่ขยายการให้บริการโดยสามารถตั้งค่า ComplicationTypes เริ่มต้นสำหรับผู้ให้บริการหลัก รอง และผู้ให้บริการระบบสำรอง ComplicationSlot.defaultDataSourceType เลิกใช้งานแล้วในตอนนี้ (If0ce3)
  • ตอนนี้ ComplicationSlot.configExtras เปลี่ยนแปลงได้และอัปเดตได้ก่อนเรียกใช้ EditorSession.openComplicationDataSourceChooser() (I6f852)
  • เพิ่ม WatchFace.setComplicationDeniedDialogIntent และ setComplicationRationaleDialogIntent แล้ว ระบบจะเปิดใช้งาน Intent เหล่านี้เพื่อแสดงกล่องโต้ตอบเหตุผลก่อนขอสิทธิ์ใช้ข้อมูลแทรก และกล่องโต้ตอบอีกกล่องที่อธิบายว่าจำเป็นต้องมีสิทธิ์ใช้ข้อมูลแทรกเมื่อพยายามแก้ไขข้อมูลแทรกเมื่อถูกปฏิเสธสิทธิ์ (เครื่องมือเลือกผู้ให้บริการจะเปิดไม่สำเร็จ จึงต้องใช้กล่องโต้ตอบ) (I3a29c)
  • ตอนนี้คุณกำหนด UserStyleSchema และ ComplicationSlots ใน XML ได้แล้ว วิธีนี้ช่วยให้การสร้างหน้าปัดง่ายขึ้นและทำให้WatchFaceMetadataClientค้นหาได้เร็วขึ้นเนื่องจากไม่จำเป็นต้องเชื่อมโยงกับบริการเพื่อรับข้อมูลเมตา (I85bfa)
  • เพิ่ม InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent เพื่อให้ลูกค้าระบุได้ว่าหน้าปัดรองรับ getPendingIntentForTouchEvent หรือไม่ (I0b917)
  • WatchFaceMetadataClient และ ListenableWatchFaceMetadataClient ไม่ได้อยู่ในขั้นทดลองอีกต่อไป สามารถใช้เพื่อรับข้อมูลเมตาของหน้าปัดได้อย่างมีประสิทธิภาพ หากเป็นไปได้โดยไม่ต้องเปิด Binder ไปยังหน้าปัด (Ibb827)
  • เพิ่มการรองรับผู้ให้บริการข้อมูลแทรกแบบซิงค์ ซึ่งข้อมูลแทรกจะอัปเดตด้วยความถี่สูงกว่าปกติสูงสุด 1 ครั้งต่อวินาทีเมื่อหน้าปัดแสดงอยู่และไม่ใช่โหมดแอมเบียนท์ หากต้องการใช้ ผู้ให้บริการต้องใส่เมตาแท็ก androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS ใหม่ในไฟล์ Manifest และลบล้าง onSynchronousComplicationRequest นอกจากนี้ ยังอาจต้องลบล้าง onStartSynchronousComplicationRequests และ onStopInteractiveComplicationRequests เพื่อรับการแจ้งเตือนเมื่อข้อมูลแทรกเข้าสู่และออกจากโหมดอินเทอร์แอกทีฟ ทั้งนี้ขึ้นอยู่กับลักษณะของแหล่งข้อมูล (I8fe9d)

รุ่น 1.0

เวอร์ชัน 1.0.1

9 กุมภาพันธ์ 2022

androidx.wear.watchface:watchface-*:1.0.1 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องเกี่ยวกับPhotoImageComplicationData tapAction ที่ไม่ได้รับการจัดการอย่างถูกต้อง (I1cc30)

เวอร์ชัน 1.0.0

1 ธันวาคม 2021

androidx.wear.watchface:watchface-*:1.0.0 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้

ฟีเจอร์หลักของ 1.0.0

แพ็กเกจ androidx.wear.watchface เป็นไลบรารีใหม่ที่แนะนำสำหรับการพัฒนาหน้าปัด WearOS ซึ่งจะมีฟีเจอร์ใหม่ๆ หลายรายการเมื่อเทียบกับไลบรารีการสนับสนุนอุปกรณ์ที่สวมใส่ได้แบบเก่า

  • ไลบรารีรองรับการจัดสไตล์ของผู้ใช้โดยตรง (ดู androidx.wear.watchface.style) เช่น การเปลี่ยนจานสี สไตล์เข็มนาฬิกา ลักษณะเครื่องหมายบอกเวลา เป็นต้น ตอนนี้การพัฒนาเครื่องมือแก้ไขหน้าปัดในนาฬิกาโดยใช้ androidx.wear.watchface.editor ทำได้ง่ายขึ้นมาก และคุณแก้ไขหน้าปัดได้จากแอปที่ใช้ร่วมกันของระบบโดยไม่ต้องเขียนโค้ดเพิ่มเติม
  • แนวทางปฏิบัติแนะนำที่ผสานรวมไว้แล้ว คลังจะสร้างป้ายกำกับเนื้อหาสำหรับโปรแกรมอ่านหน้าจอโดยอัตโนมัติสำหรับข้อมูลแทรก (คุณเพิ่มป้ายกำกับของคุณเองได้ด้วย) และอัตราเฟรมจะลดลงโดยอัตโนมัติเมื่อแบตเตอรี่เหลือน้อยและไม่ชาร์จเพื่อยืดอายุการใช้งานแบตเตอรี่
  • คุณใช้โค้ดน้อยลงในการพัฒนาหน้าปัด โดยเฉพาะสำหรับข้อมูลแทรกที่ย้ายข้อมูลโค้ดที่ซ้ำกันจำนวนมากไปยังไลบรารีแล้ว

การแก้ไขข้อบกพร่อง

  • แก้ไข EditorSession.userStyle.compareAndSet (I6f676)
  • แก้ไขเวลาหน่วงของหน้าปัดสั้นมาก (Iffb97)
  • เรียกใช้ InteractiveWatchFaceImpl.onDestroy บนเธรด UI (I83340)
  • แก้ไขปัญหาหลายประการเกี่ยวกับตัวรับสัญญาณการออกอากาศ (I7d25f)

เวอร์ชัน 1.0.0-rc01

3 พฤศจิกายน 2021

androidx.wear.watchface:watchface-*:1.0.0-rc01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไข dump() (เรียกโดย adb shell dumpsys) ซึ่งใช้งานไม่ได้เนื่องจากการย้ายข้อมูลขั้นตอน (087cf9e)

  • ตรวจสอบลําดับของ writeDirectBootPrefs ให้ถูกต้อง เราต้องการให้ writeDirectBootPrefs ทำงานหลังจาก initStyleAndComplications เสมอ ไม่เช่นนั้นเราอาจเสี่ยงที่จะเลื่อนเวลาเริ่มต้นเทรด UI (37650ac)

  • ตรวจสอบว่ามีการเรียก Renderer.onDestroy ในกรณีที่สร้างโปรแกรมแสดงผลแล้ว แต่ WF init ยังไม่เสร็จสมบูรณ์และมีการเรียกใช้ Engine.onDestroy เราจะต้องเรียกใช้ Renderer.onDestroy (f9952dc)

  • การเพิ่มประสิทธิภาพ/การแก้ไข isBatteryLowAndNotCharging แพตช์นี้จะย้ายการตั้งค่าเริ่มต้นของ isBatteryLowAndNotCharging ไปไว้ก่อนหน้านี้ ซึ่งหมายความว่าจะดำเนินการควบคู่ไปกับ createWatchFace ได้ นอกจากนี้ เรายังรับฟัง ACTION_POWER_DISCONNECTED ด้วย (ddffd80

  • InteractiveWatchFaceClientImpl.isConnectionAlive เป็นเท็จหลังจากปิด (ab9774e)

เวอร์ชัน 1.0.0-beta01

27 ตุลาคม 2021

androidx.wear.watchface:watchface-*:1.0.0-beta01 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.0.0-alpha24

13 ตุลาคม 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha24 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha24 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ระบบได้ย้ายชั้นเรียนในแพ็กเกจ androidx.wear.watchface.complications ไปยังโปรเจ็กต์ wear:watchface:watchface-complications ใหม่แล้ว โปรดทราบว่าคุณจะรวมทั้งไลบรารีนี้และ wear:watchface:watchface-complications-data เวอร์ชันอัลฟ่าก่อนหน้าไม่ได้ เนื่องจากคุณจะได้รับข้อผิดพลาดเกี่ยวกับคลาสที่ซ้ำกัน (I97195)
  • Renderer.dump เปลี่ยนชื่อเป็น Renderer.onDump และมีการกำกับเนื้อหาด้วย @UiThread (I44845)
  • เปลี่ยนชื่อ InteractiveWatchFaceClient.addWatchFaceReadyListener เป็น addOnWatchFaceReadyListener และเปลี่ยนชื่อ removeWatchFaceReadyListener เป็น removeOnWatchFaceReadyListener แล้ว (I48fea)
  • EditorSession getComplicationsPreviewData และ getComplicationsDataSourceInfo ไม่ใช่ฟังก์ชันที่ระงับอีกต่อไป แต่คือพร็อพเพอร์ตี้ StateFlow<> ที่มีค่าเป็น Null ในตอนเริ่มต้น ใน ListenableEditorSession เราได้นํา getListenableComplicationPreviewData และ getListenableComplicationsProviderInfo ออกแล้วเพื่อใช้ออบเจ็กต์ StateFlow<> ใหม่จากคลาสพื้นฐาน หากต้องการตรวจสอบการเปลี่ยนแปลงในโค้ด Java ให้ลองใช้ androidx.lifecycle.FlowLiveDataConversions.asLiveData เพื่อแปลงเป็น LiveData<> (Ic5483)

เวอร์ชัน 1.0.0-alpha23

29 กันยายน 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha23 ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-alpha23 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

ตอนนี้ไลบรารีหน้าปัดเป็นกลุ่มไลบรารีเดียวแล้ว ไลบรารีจึงย้ายไปอยู่ที่อื่นและคุณจะต้องอัปเดตการนําเข้า gradle ดังนี้

เครื่องเก่า ใหม่
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

การเปลี่ยนแปลง API

  • ย้ายข้อมูลandroidx.wearไลบรารีหน้าปัดและข้อมูลแทรกแยกต่างหากไปยังกลุ่มไลบรารี androidx.wear.watchface (b25f3c0)
  • เพิ่ม EditorRequest.canWatchFaceSupportHeadlessEditing เพื่อให้ไคลเอ็นต์ทราบว่าเครื่องมือแก้ไขหน้าปัดรองรับการแก้ไขแบบ Headless หรือไม่ โปรดทราบว่าจะมีผลลัพธ์ที่ผิดพลาดบางส่วนเนื่องจากมีการเพิ่มการรองรับใน asop/1756809 แต่ระบบจะแสดงผลลัพธ์ที่ถูกต้องสำหรับหน้าปัดทั้งหมดในอนาคต (ca55590)
  • ตอนนี้โปรแกรมแสดงผลมีเมธอด dump() ซึ่งสามารถลบล้างเพื่อเพิ่มข้อมูลที่กําหนดเองลงในข้อมูลที่สร้างขึ้นโดยบริการกิจกรรม WatchFaceService ของเชลล์ ABD (95235f9)
  • ตอนนี้ InteractiveWatchFaceClient.addWatchFaceReadyListener จะระบุผู้ดำเนินการก่อน (563ac2f)
  • ระบบนำ StateFlowCompatHelper ออกแล้ว คุณควรใช้ asLiveData (androidx.lifecycle.asLiveData) แทน (bd35d3)
  • CurrentUserStyleRepository.userStyle จะเปลี่ยนแปลงไม่ได้อีกต่อไป (I44889)
  • เปลี่ยนชื่อ WatchFaceReadyListener เป็น OnWatchFaceReadyListener แล้ว (Ic12a9)

การแก้ไขข้อบกพร่อง

  • InteractiveInstanceManager.deleteInstance เพื่อเรียก onDestroy ซึ่งจําเป็นเพื่อให้ระบบเก็บขยะ InteractiveWatchFaceImpl (fce4af8, b/199485839)