หน้าปัดของ Wear

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

หมายเหตุ: ตั้งแต่วันที่ 10 กรกฎาคม 2024 หน้าปัดต้องใช้ รูปแบบใบหน้าของนาฬิกาเพื่อ ซึ่งติดตั้งในนาฬิกาใหม่ที่เปิดตัวด้วย Wear OS 5 ล่วงหน้า ดูข้อมูลเพิ่มเติม เกี่ยวกับการเปลี่ยนแปลงที่ผู้ใช้เห็นใน ศูนย์ช่วยเหลือ บทความ

นอกจากนี้ ตั้งแต่ต้นปี 2025 เป็นต้นไป (จะประกาศวันที่ที่แน่นอนในช่วง ไตรมาสที่ 4 ปี 2024) หน้าปัดใหม่ทั้งหมดที่เผยแพร่ใน Google Play ต้องใช้หน้าปัด ฟอร์แมต

อัปเดตล่าสุด รุ่นที่เสถียร ตัวเลือกถอนการอ้างสิทธิ์ รุ่นเบต้า รุ่นอัลฟ่า
17 เมษายน 2024 1.2.1 - - 1.3.0-alpha03

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

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

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

Groovy

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

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

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

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

Kotlin

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

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

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

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

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

ความคิดเห็น

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

สร้างรายการใหม่

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

เวอร์ชัน 1.3

เวอร์ชัน 1.3.0-alpha03

17 เมษายน 2024

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

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

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

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

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

เวอร์ชัน 1.3.0-alpha02

3 เมษายน 2024

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.3.0-alpha01

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

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

24 มกราคม 2024

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

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

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

เวอร์ชัน 1.2.0

29 พฤศจิกายน 2023

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

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

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

เวอร์ชัน 1.2.0-rc01

18 ตุลาคม 2023

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

เวอร์ชัน 1.2.0-beta02

6 กันยายน 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-beta01

23 สิงหาคม 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-alpha09

21 มิถุนายน 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-alpha08

19 เมษายน 2023

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha07

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

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

ฟีเจอร์ใหม่

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

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

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

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

เวอร์ชัน 1.2.0-alpha06

25 มกราคม 2023

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.2.0-alpha05

7 ธันวาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

เวอร์ชัน 1.2.0-alpha04

9 พฤศจิกายน 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha03

5 ตุลาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.2.0-alpha02

21 กันยายน 2022

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

ฟีเจอร์ใหม่

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

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

  • ขณะนี้ ComplicationData เกือบทุกประเภทรองรับ SmallImages แล้ว

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

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

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

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

เวอร์ชัน 1.2.0-alpha01

10 สิงหาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.1

เวอร์ชัน 1.1.1

10 สิงหาคม 2022

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

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

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

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

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

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

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

เวอร์ชัน 1.1.0

15 มิถุนายน 2022

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

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

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

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

ข้อมูลแทรกที่ได้รับการปรับปรุง:

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

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

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

เวอร์ชัน 1.1.0-rc01

18 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.1.0-beta02

11 พฤษภาคม 2022

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

ฟีเจอร์ใหม่

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

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

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

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

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

เวอร์ชัน 1.1.0-beta01

20 เมษายน 2022

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha05

6 เมษายน 2022

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.1.0-alpha04

9 มีนาคม 2022

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha03

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

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

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

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

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

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

เวอร์ชัน 1.1.0-alpha02

12 มกราคม 2022

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

ฟีเจอร์ใหม่

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

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

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

เวอร์ชัน 1.1.0-alpha01

15 ธันวาคม 2021

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

ฟีเจอร์ใหม่

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

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

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

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

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

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

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

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

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

รุ่น 1.0

เวอร์ชัน 1.0.1

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

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

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

  • แก้ไขข้อบกพร่องกับการดำเนินการแตะ PhotoImageComplicationData ครั้งไม่ ได้รับการจัดการอย่างถูกต้อง (I1cc30)

เวอร์ชัน 1.0.0

1 ธันวาคม 2021

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

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

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

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

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

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

เวอร์ชัน 1.0.0-rc01

3 พฤศจิกายน 2021

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

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

  • แก้ไข dump() (เรียกโดย adb shell dumpsys) ที่เสียหายจากการย้ายข้อมูลโฟลว์ (087cf9e)

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

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

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

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

เวอร์ชัน 1.0.0-beta01

27 ตุลาคม 2021

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

เวอร์ชัน 1.0.0-alpha24

13 ตุลาคม 2021

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

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

  • ย้ายชั้นเรียนในแพ็กเกจ androidx.wear.watchface.complications ไปยังโปรเจ็กต์ wear:watchface:watchface-complications ใหม่แล้ว โปรดทราบว่าการดำเนินการนี้หมายความว่าคุณไม่สามารถรวมไลบรารีนี้ รวมทั้งเวอร์ชันอัลฟ่าของ wear:watchface:watchface-complications-data เวอร์ชันก่อนหน้า เนื่องจากจะได้รับข้อผิดพลาดเกี่ยวกับชั้นเรียนที่ซ้ำกัน (I97195)
  • Renderer.dump ได้เปลี่ยนชื่อเป็น Renderer.onDump แล้ว และมีการใส่คำอธิบายประกอบเป็น @UiThread (I44845)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener ถูกเปลี่ยนชื่อเป็น addOnWatchFaceReadyListener และ removeWatchFaceReadyListener ถูกเปลี่ยนชื่อเป็น removeOnWatchFaceReadyListener (I48fea)
  • EditorSession getComplicationsPreviewData และ getComplicationsDataSourceInfo จะไม่ระงับฟังก์ชันอีกต่อไป แต่เป็นพร็อพเพอร์ตี้ StateFlow<> ที่มีค่าเป็น Null ในตอนแรก ใน 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)
  • ตอนนี้ตัวแสดงผลมีเมธอด dump() ซึ่งสามารถลบล้างเพื่อเพิ่มข้อมูลที่กำหนดเองลงในข้อมูลที่สร้างโดยบริการกิจกรรม WatchFaceService ของ ABD shell dumpsys (95235f9)
  • ตอนนี้ InteractiveWatchFaceClient.addWatchFace ReadyListener จะระบุผู้ดำเนินการก่อนแล้ว (563ac2f)
  • นำ StateFlowCompatHelper ออกแล้ว ควรใช้ asLiveData (androidx.lifecycle.asLiveData) แทน (bd35d3)
  • CurrentUserStyleRepository.userStyle เปลี่ยนแปลงไม่ได้แล้ว (I44889)
  • WatchFace ReadyListener เปลี่ยนชื่อเป็น OnWatchFace ReadyListener แล้ว ) แล้ว (Ic12a9)

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

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