หน้าปัด Wear

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

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

ตั้งแต่เดือนมกราคม 2026 เป็นต้นไป หน้าปัดนาฬิกาจะต้องใช้ Watch Face Format เพื่อให้ติดตั้งในอุปกรณ์ Wear OS ทั้งหมดได้

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

อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
17 ธันวาคม 2025 1.2.1 - 1.3.0-beta01 -

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

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

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

Groovy

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

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

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

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

Kotlin

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

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

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

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

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

ความคิดเห็น

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

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

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

เวอร์ชัน 1.3

เวอร์ชัน 1.3.0-beta01

17 ธันวาคม 2025

androidx.wear.watchface:watchface-*:1.3.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-beta01 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับข้อมูลตัวอย่างการแสดงผลแบบคงที่ ซึ่งผู้ให้บริการการแสดงผลสามารถระบุข้อมูลตัวอย่างแบบคงที่ในไฟล์ Manifest ได้ ดูรายละเอียดเพิ่มเติมได้ที่ androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser
  • เราได้เพิ่มคลาสยูทิลิตี ComplicationTextFormatting พร้อมรองรับการจัดรูปแบบข้อมูลและเวลาให้สั้นที่สุด ซึ่งมีประโยชน์สำหรับภาวะแทรกซ้อนที่พื้นที่เป็นสิ่งสำคัญอย่างยิ่ง

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

  • ตอนนี้พร็อพเพอร์ตี้ Renderer.watchfaceColors ซึ่งก่อนหน้านี้เป็นเวอร์ชันทดลองได้เปลี่ยนเป็นแบบส่วนตัวแล้ว พร็อพเพอร์ตี้นี้ยังคงมีตัวดึงข้อมูลสาธารณะ (Ifdf60, b/409363281)

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

  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (I48968, b/407632515)

เวอร์ชัน 1.3.0-alpha07

23 เมษายน 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha07 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • คุณกำหนดสคีมา UserStyle ของหน้าปัดได้มาระยะหนึ่งแล้ว และกำหนด ColorUserStyleSetting ใน XML ได้

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

  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
  • เพิ่ม Watch Face Push API ซึ่งช่วยให้แอป Wear OS ติดตั้งหน้าปัดในนาฬิกาได้โดยอัตโนมัติ

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

  • เราขอแนะนำให้ผู้ให้บริการแทรกข้อมูลที่ใช้ 1.3.0-alpha06 อัปเกรดเนื่องจากเราได้แก้ไขข้อบกพร่องที่ทำให้เกิดข้อขัดข้องกับ ComplicationDataSourceUpdateRequester ใน WearOS เวอร์ชันถัดไปแล้ว

เวอร์ชัน 1.3.0-alpha06

26 มีนาคม 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เราได้เลิกใช้งาน API หน้าปัด Wear (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava และ watchface-style) เพื่อให้หันมาใช้ Wear Watchface Format แทน และจะนำออกจาก AndroidX ในที่สุด เราไม่ได้เลิกใช้งาน Complication API และจะยังคงมี API นี้ต่อไป (Ice960)
  • ตอนนี้ API ของภาวะแทรกซ้อนสามารถสื่อสารกับ WearSDK ได้โดยตรง ซึ่งมีประสิทธิภาพมากกว่าเนื่องจากมีการข้าม IPC น้อยลง

เวอร์ชัน 1.3.0-alpha05

15 มกราคม 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

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

เราได้เพิ่มฟีเจอร์ที่มุ่งเน้น OEM ซึ่งช่วยให้ผู้ให้บริการข้อมูลแทรกของ OEM เพิ่มส่วนเสริมไปยัง ComplicationData เพื่อให้หน้าปัดของ OEM ใช้ได้

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

  • ตอนนี้คลาส UserStyleSetting และ UserStyleOption มีตัวสร้างแล้ว ซึ่งเป็นวิธีที่แนะนำในการสร้างคลาส (Iacd03)
  • รองรับการส่งค่าพิเศษใน ComplicationData โดยมีไว้สำหรับใช้โดย OEM ซึ่งควบคุมทั้งผู้ให้บริการแทรกข้อมูลและหน้าปัดนาฬิกาที่รับ การตั้งค่าพิเศษต้องใช้สิทธิ์ com.google.android.wearable.permission.COMPLICATION_EXTRAS ที่มีสิทธิ์ (I4e3b2)
  • โดยทั่วไปแล้ว หน้าปัดจะอนุญาตให้ผู้ใช้เลือกสีโดยใช้ ListUserStyle พร้อมไอคอนสำหรับแต่ละ ListOption เนื่องจากระบบจะส่งสคีมา UserStyle ผ่านบลูทูธ จึงควรลดขนาดสคีมาให้เล็กที่สุด ซึ่งอาจเป็นปัญหาหากมีตัวเลือกสีหลายสิบรายการเนื่องจากไอคอนทั้งหมด เราจึงเพิ่ม ColorUserStyleSetting ในตำแหน่งที่ตัวเลือกมีรายการสีแทนที่จะเป็นไอคอน ซึ่งมีขนาดกะทัดรัดกว่ามาก (Ib542e)
  • ColorUserStyleSetting และ ColorOption ต้องใช้ API 34 (I8771d)

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

  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ifd363, b/326456246)

เวอร์ชัน 1.3.0-alpha04

18 กันยายน 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.3.0-alpha03

17 เมษายน 2024

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

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

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

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

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

เวอร์ชัน 1.3.0-alpha02

3 เมษายน 2024

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

ฟีเจอร์ใหม่

  • ตอนนี้เราใช้การอ้างอิงความเท่ากันเพื่อเปรียบเทียบค่าที่ดีที่สุดและ selectedData เนื่องจากตัวดำเนินการเท่ากับมีค่าใช้จ่ายสูง (446b00)

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

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

เวอร์ชัน 1.3.0-alpha01

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

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

ฟีเจอร์ใหม่

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

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

  • StatefulWatchFaceService ตอนนี้รองรับการลบล้าง getComplicationSlotInflationFactory ซึ่งจะมีการส่งส่วนต่อท้ายที่กำหนดโดยผู้ใช้ซึ่งสร้างโดย createExtra() (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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-alpha09

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-alpha08

19 เมษายน 2023

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha07

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

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

ฟีเจอร์ใหม่

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

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

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

  • เราได้เพิ่มพารามิเตอร์ที่ไม่บังคับ eglContextAttribList ลงใน GlesRenderer & GlesRenderer2 ซึ่งช่วยให้คุณตั้งค่า EGL14.EGL_CONTEXT_CLIENT_VERSION ที่ส่งไปยัง EGL14.eglCreateContext ได้ (I2a83e)
  • เราได้ย้ายข้อมูลไลบรารีหน้าปัดไปยัง androidx.core.util.Consumer แทน java.util.function.Consumer (I273f5)
  • ข้อยกเว้นที่ส่งมาจากตัวเข้าถึงพร็อพเพอร์ตี้ KT (Iff9d9) เพิ่มเติม
  • เราได้เพิ่ม InteractiveWatchFaceClient.isComplicationDisplayPolicySupported เพื่อให้ไคลเอ็นต์พิจารณาได้ว่าจะต้องจำลองการรองรับในนามของหน้าปัดเก่าหรือไม่ (I24c89)
  • เราตัดสินใจว่า isForSafeWatchFace ควรเป็นIntDefแบบ 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 สำหรับประเภทแทรกใหม่ 2 ประเภท ได้แก่ GOAL_PROGRESS และ WEIGHTED_ELEMENTS

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

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

เวอร์ชัน 1.2.0-alpha05

7 ธันวาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

เวอร์ชัน 1.2.0-alpha04

9 พฤศจิกายน 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha03

5 ตุลาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha02

21 กันยายน 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha01

10 สิงหาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

10 สิงหาคม 2022

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

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

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

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

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

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

  • เพิ่มการหมดเวลาใน awaitDeferredWatchFace* และแก้ไข 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 และรองรับการอ้างอิงได้ง่ายขึ้น การทดลองกับความซับซ้อนของ Edge 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 ขณะนี้ยังไม่มีการรองรับการแสดงผลสำหรับทั้ง 2 ประเภทนี้ และ WearOS ยังไม่รู้จักประเภทเหล่านี้หากเพิ่มลงในไฟล์ Manifest ของ ComplicationDataSource's (I1811c)

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

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

เวอร์ชัน 1.1.0-beta01

20 เมษายน 2022

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha05

6 เมษายน 2022

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.1.0-alpha04

9 มีนาคม 2022

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

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

  • ComplicationData ข้อมูลล่าสุดอาจไม่พร้อมใช้งานเสมอไป (เช่น ComplicationData ที่แคชไว้หมดอายุแล้ว) เราจึงขยาย NoDataComplication ด้วย ComplicationData ตัวยึดตำแหน่งที่ไม่บังคับ และเพิ่ม ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER ซึ่งอนุญาตให้ใช้ภายในบริบทของตัวยึดตำแหน่ง NoDataComplicationData เท่านั้น หากเลือกไว้ ระบบจะแนะนำให้แสดงตัวยึดตำแหน่งเหล่านี้ด้วยกล่อง/ส่วนโค้งสีเทา (I6285d)
  • เราได้เพิ่ม ComplicationData.getNextChangeInstant ซึ่งจะบอกคุณถึงช่วงเวลาถัดไปหลังจากช่วงเวลาอ้างอิงที่ฟิลด์ของภาวะแทรกซ้อนอาจเปลี่ยนแปลง ใช้ภายในเพื่อกำหนดเวลาเฟรมสำหรับการอัปเดตข้อมูลแทรก เช่น หากปกติแล้วหน้าปัดจะอัปเดตทุกๆ 1 นาที การตั้งค่าภาวะแทรกซ้อนของนาฬิกาจับเวลาจะทำให้หน้าปัดอัปเดตทุกๆ 1 วินาที (I7ceb2)
  • EditorSession.watchFaceId ตอนนี้ใช้ได้กับ API ทุกระดับแล้ว นอกจากนี้ ค่าของแอตทริบิวต์นี้จะสอดคล้องกับ WatchState.watchFaceInstanceId เสมอ (I323b9)
  • 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)
  • อัปเดตค่า Null ใน Core และ Appcompat ให้ตรงกับ Tiramisu DP2 (I0cbb7)

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

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

เวอร์ชัน 1.1.0-alpha03

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

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha02

12 มกราคม 2022

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.1.0-alpha01

15 ธันวาคม 2021

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

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

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

รุ่น 1.0

เวอร์ชัน 1.0.1

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

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

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

  • แก้ไขข้อบกพร่องที่ทำให้ระบบจัดการ 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 โดยมีฟีเจอร์ใหม่ๆ มากมายที่เหนือกว่า Wearable Support Library แบบเดิม

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

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

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

เวอร์ชัน 1.0.0-rc01

3 พฤศจิกายน 2021

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

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

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

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

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

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

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

เวอร์ชัน 1.0.0-beta01

27 ตุลาคม 2021

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

เวอร์ชัน 1.0.0-alpha24

13 ตุลาคม 2021

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

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

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

เวอร์ชัน 1.0.0-alpha23

29 กันยายน 2021

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

ฟีเจอร์ใหม่

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

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

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

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

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

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