ตั้งค่า Watch Face Format

หมายเหตุ: หน้านี้จะแสดงขั้นตอนในการจัดการการกำหนดค่าหน้าปัดด้วยตนเอง หากต้องการออกแบบหน้าปัดโดยใช้เครื่องมือสไตล์ WYSIWYG (สิ่งที่เห็นคือสิ่งที่ได้) แทน โปรดดูคำแนะนำของ Watch Face Studio ก่อน

คู่มือนี้ประกอบด้วยขั้นตอนเกี่ยวกับเครื่องมือที่คุณต้องใช้ในการกำหนดค่าหน้าปัดโดยใช้ Watch Face Format คำแนะนำเกี่ยวกับโครงสร้างโปรเจ็กต์ และคำแนะนำแบบทีละขั้นตอนในการใช้เครื่องมือเพื่อสร้างโครงสร้างดังกล่าว

สิ่งที่ต้องมีก่อน

หากต้องการเตรียมสภาพแวดล้อมการพัฒนาเพื่อใช้ Watch Face Format ให้ทำตามขั้นตอนการตั้งค่าต่อไปนี้

  1. ติดตั้ง SDK สำหรับ Android 14 (API ระดับ 34) ขึ้นไป หากหน้าปัดไม่ได้ใช้ฟีเจอร์หรือลักษณะการทำงานเฉพาะของเวอร์ชัน 2 คุณจะติดตั้ง SDK สำหรับ Android 13 (API ระดับ 33) แทนได้

    SDK มีเครื่องมืออื่นๆ ที่จําเป็น ซึ่งรวมถึง aapt2 และ android.jar

  2. หรือจะติดตั้ง Android Studio ก็ได้ ซึ่งจะมีเครื่องมือเหล่านี้ให้ใช้งานด้วย

โครงสร้างโปรเจ็กต์

เมื่อคุณสร้างหน้าปัดที่กำหนดเองซึ่งใช้ Watch Face Format นั้น Android App Bundle ที่มีไฟล์หน้าปัดที่กำหนดเองต้องแยกจาก Android App Bundle ที่มีตรรกะของแอป Wear OS โดยสิ้นเชิง App Store บางแห่ง รวมถึง Google Play ป้องกันไม่ให้คุณอัปโหลด Android App Bundle ที่มีทั้งตรรกะ Wear OS และหน้าปัดที่กำหนดเอง

สร้างแพ็กเกจหน้าปัด

หากต้องการสร้าง App Bundle ของ Android ที่มีไฟล์หน้าปัด ให้ทำตามขั้นตอนที่แสดงในส่วนต่อไปนี้

ประกาศการใช้ Watch Face Format

ในไฟล์ Manifest ของแอปใหม่ (AndroidManifest.xml) ให้เพิ่มพร็อพเพอร์ตี้แอปพลิเคชันซึ่งระบุการใช้รูปแบบหน้าปัด โปรดสร้าง APK หน้าปัด 2 รายการที่แตกต่างกัน 1 รายการรองรับเวอร์ชัน 2 และอีก 1 รายการรองรับเวอร์ชัน 1 เว้นแต่ว่าคุณต้องการจำกัดการเข้าถึงหน้าปัดสำหรับอุปกรณ์ที่ใช้ Wear OS 5 ขึ้นไป ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดค่าเวอร์ชันของแอป

<manifest ...>
    <!--
        Use SDK version 34 for version 2 of WFF, and SDK version 33 for version
        1 of WFF
    -->
    <uses-sdk
        android:minSdkVersion="34"
        android:targetSdkVersion="34" />

    <!--
        WFF is a resource-only format, so the hasCode attribute should be set to
        false to reflect this.
    -->
    <application
        android:label="@string/watch_face_name"
        android:hasCode="false"
        ...>
        <meta-data android:name="com.google.android.wearable.standalone"
            android:value="true" />
        <property
            android:name="com.google.wear.watchface.format.version"
            android:value="2" />
    </application>
</manifest>

ประกาศข้อมูลเมตาของหน้าปัด

ในไดเรกทอรีทรัพยากร res/xml ของแอป ให้สร้างไฟล์ใหม่ชื่อ watch_face_info.xml ในส่วนนี้ คุณกำหนดข้อมูลเมตาของหน้าปัดได้

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>

    <Preview value="@drawable/watch_face_preview" />
    <Category value="CATEGORY_EMPTY" />
    <AvailableInRetail value="true" />
    <MultipleInstancesAllowed value="true" />
    <Editable value="true" />
</WatchFaceInfo>

ช่องในไฟล์นี้จะแสดงรายละเอียดต่อไปนี้

Preview
อ้างอิง Drawable ที่มีรูปภาพตัวอย่างของหน้าปัด
Category

กำหนดหมวดหมู่ของหน้าปัด ต้องเป็นสตริงหรือการอ้างอิงถึงสตริง เช่น @string/ref_name ผู้ผลิตอุปกรณ์แต่ละรายสามารถกำหนดหมวดหมู่หน้าปัดของตนเองได้

ค่าเริ่มต้น: empty_category_meta ซึ่งจะจัดกลุ่มหน้าปัดนี้ไว้ด้วยกันกับหน้าปัด "หมวดหมู่ว่าง" อื่นๆ ที่ด้านล่างของมุมมองเครื่องมือเลือกหน้าปัด

AvailableInRetail

หน้าปัดพร้อมใช้งานในโหมดสาธิตสำหรับร้านค้าปลีกของอุปกรณ์หรือไม่ ต้องเป็นค่าบูลีนหรือการอ้างอิงค่าบูลีน เช่น @bool/watch_face_available_in_retail

ค่าเริ่มต้น: false

MultipleInstancesAllowed

หน้าปัดมีหน้าปัดโปรดได้หลายหน้าหรือไม่ ต้องเป็นค่าบูลีน หรือเป็นการอ้างอิงค่าบูลีน เช่น @bool/watch_face_multiple_instances_allowed

ค่าเริ่มต้น: false

Editable

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

ค่าเริ่มต้น: false

ประกาศชื่อหน้าปัด

ในไฟล์ Manifest ของแอป (AndroidManifest.xml) ให้ตั้งค่าแอตทริบิวต์ android:label ให้ชื่อหน้าปัดดังนี้

<application android:label="@string/watch_face_name" >

ประกาศรายละเอียดหน้าปัด

โครงสร้างของเอกสารหน้าปัด WFF พื้นฐานมีดังนี้

<WatchFace width="450" height="450">
  <Scene>
    <!-- Content to be rendered -->
  </Scene>
</WatchFace>

สร้างไฟล์ XML นี้เป็น res/raw/watchface.xml เมื่อสร้างหน้าปัด หากใช้หน้าปัดเดียว หากต้องการรองรับรูปร่างและขนาดหน้าจอที่ต่างกัน ให้ประกาศการรองรับรูปร่างและขนาดหลายแบบ

องค์ประกอบรูทคือ WatchFace เสมอ height และ width จะกำหนดขอบเขตของพื้นที่พิกัดสำหรับใช้ในหน้าปัด และหน้าปัดจะปรับขนาดให้พอดีกับอุปกรณ์ที่ใช้อยู่ height และ width ไม่ได้แสดงพิกเซลจริง

Watch Face Format จะจัดระเบียบรายละเอียดต่างๆ เกี่ยวกับหน้าปัดดังนี้

  • ข้อมูลเมตา เช่น เวลาและการนับก้าวที่แสดงในรูปภาพตัวอย่างหน้าปัด
  • การกำหนดค่าของผู้ใช้ เช่น ธีมสีต่างๆ สำหรับหน้าปัด องค์ประกอบที่ผู้ใช้เปิด/ปิดได้ และตัวเลือกองค์ประกอบต่างๆ Watch Face Format เวอร์ชัน 2 เปิดตัวรูปแบบซึ่งสามารถปรากฏในการกําหนดค่าของผู้ใช้ แต่ละรูปแบบจะระบุการกำหนดค่าผู้ใช้ที่กำหนดไว้ล่วงหน้า ซึ่งจะระบุประเภทและสไตล์ขององค์ประกอบที่ปรากฏพร้อมกับเวลาในหน้าปัด การตั้งค่าล่วงหน้าเหล่านี้ช่วยให้คุณสร้างกลุ่มองค์ประกอบที่ดูดีได้ง่ายขึ้น ในแอปที่ใช้ร่วมกันของ Wear OS ผู้ใช้จะเห็นหน้าปัดของคุณในเวอร์ชันต่างๆ เรียงกันในแถวที่เลื่อนได้
  • ฉากซึ่งมีองค์ประกอบภาพต่างๆ ของหน้าปัด องค์ประกอบที่ปรากฏใกล้กับตอนท้ายของฉากจะปรากฏอยู่ด้านบนขององค์ประกอบอื่นๆ ดังนั้นลำดับทั่วไปจึงมีดังนี้
    • เข็มของนาฬิกาแอนะล็อกหรือข้อความของนาฬิกาดิจิทัล
    • ข้อมูลแทรกที่แสดงข้อมูลเพิ่มเติม เช่น วันของสัปดาห์หรือจำนวนก้าวของผู้ใช้
    • กราฟิกอื่นๆ ที่ให้ภาพที่น่าสนใจหรือตกแต่งหน้าปัด เช่น รูปภาพที่ตั้งแคมป์
  • กลุ่มองค์ประกอบ ซึ่งช่วยให้คุณแก้ไของค์ประกอบหลายรายการพร้อมกันได้ คุณสามารถสร้างตัวแปรของกลุ่มเหล่านี้ภายในฉาก ซึ่งจะช่วยให้คุณเลือกซ่อนหรือแก้ไขเนื้อหาได้เมื่อระบบเข้าสู่โหมดแอมเบียนท์เพื่อประหยัดพลังงาน

แอตทริบิวต์เป็นแบบคงที่และมีหลักเกณฑ์เกี่ยวกับความถี่และค่าที่ถูกต้องเพื่อหลีกเลี่ยงแหล่งที่มาของข้อผิดพลาดส่วนใหญ่เมื่อสร้างหน้าปัด

ประกาศการรองรับรูปร่างของหน้าปัด (ไม่บังคับ)

ขั้นตอนนี้จำเป็นเฉพาะในกรณีที่คุณต้องการรองรับลักษณะการทำงานที่แตกต่างกันสำหรับหน้าปัดขนาดต่างๆ คุณข้ามขั้นตอนนี้ได้หากต้องการให้หน้าปัดปรับขนาดตามขนาดของนาฬิกา

ในไดเรกทอรีทรัพยากร res/xml ของแอป ให้ประกาศชุดรูปร่างหน้าปัดที่คุณรองรับใน watch_face_shapes.xml ดังนี้

<WatchFaces>

    <WatchFace shape="CIRCLE" width="300" height="300"
               file="@raw/watchface"/>
    <WatchFace shape="CIRCLE" width="450" height="450"
               file="@raw/watchface_large_circle"/>

    <!-- Remove any references to rectangular watch faces -->
    <WatchFace shape="RECTANGLE" width="380" height="400"
               file="@raw/watchface_rectangle"/>
</WatchFaces>

จากนั้นกำหนดลักษณะที่ปรากฏและลักษณะการทํางานของหน้าปัดสำหรับรูปร่างหน้าปัดแต่ละแบบ หากไม่ได้กำหนดไฟล์รูปร่าง คุณก็สร้างไฟล์เดียวเท่านั้นได้ นั่นคือ watchface.xml

เมื่อใช้ตัวอย่างจากส่วนนี้ ไฟล์ XML ดิบจะเป็นดังนี้

  • res/raw/watchface.xml
  • res/raw/watchface_large_circle.xml
  • res/raw/watchface_rectangle.xml

ระบุผู้เผยแพร่หน้าปัด (ไม่บังคับ)

(ไม่บังคับ) ในไฟล์ Manifest ของแอป ให้ประกาศสตริงที่กำหนดเองซึ่งคุณใช้ระบุผู้เผยแพร่หน้าปัด หรือชื่อและเวอร์ชันของเครื่องมือที่คุณใช้

<application ...>
    ...
    <property
        android:name="com.google.wear.watchface.format.publisher"
        android:value="<var>{toolName}-{toolVersion}</var>" />
</application>

ตรวจสอบความถูกต้องและประสิทธิภาพของหน้าปัด

ในระหว่างการพัฒนาและก่อนอัปโหลดไปยัง Google Play ให้ใช้เครื่องมือตรวจสอบเพื่อตรวจสอบว่าหน้าปัดไม่มีข้อผิดพลาด และเป็นไปตามคำแนะนำในการใช้หน่วยความจำ

สร้าง App Bundle ของหน้าปัด

หากต้องการสร้าง Android App Bundle ที่มีหน้าปัด ให้ใช้ระบบการบิลด์ Gradle ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างแอปโดยใช้ Gradle

ซึ่งแสดงอยู่ในตัวอย่างใน GitHub