ปุ่มบนตัวเครื่อง

โดยปกติแล้วอุปกรณ์ที่สวมใส่ได้จะมีปุ่มจริงหลายปุ่ม หรือที่เรียกว่าก้าน อุปกรณ์ Wear OS จะมีปุ่มอย่างน้อย 1 ปุ่มเสมอ ซึ่งก็คือปุ่มเปิด/ปิด นอกจากนี้ อาจมีปุ่มมัลติฟังก์ชันตั้งแต่ 0 ปุ่มขึ้นไป อุปกรณ์บางรุ่นยังมีปุ่มด้านข้างแบบหมุนด้วย

ในแอป คุณสามารถกำหนดปุ่มมัลติฟังก์ชันให้ดำเนินการเมื่อแอป ทำงานอยู่เบื้องหน้า ตัวอย่างเช่น แอปฟิตเนสอาจเริ่มหรือหยุดการออกกำลังกายชั่วคราว โดยใช้ปุ่มหลายฟังก์ชัน

นาฬิกาที่มีปุ่มด้านข้างหลายปุ่ม ระบบจะกำหนดให้ปุ่มใดปุ่มหนึ่งเป็นปุ่มหลายฟังก์ชัน
รูปที่ 1 แอปฟิตเนส Wear OS ที่แสดงปุ่มหลายฟังก์ชัน

ดูกรณีการใช้งานที่เหมาะสมและข้อควรพิจารณาในการออกแบบได้ที่หลักการออกแบบของ Wear OS

เอกสารนี้อธิบายวิธีดึงข้อมูลเกี่ยวกับปุ่ม มัลติฟังก์ชัน ที่พร้อมใช้งานในอุปกรณ์ และวิธีประมวลผลการกดปุ่ม

ข้อมูลเมตาของปุ่ม

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับปุ่มในอุปกรณ์ ให้ใช้ API ที่กำหนดไว้ในไลบรารี Wear Input ของ AndroidX เพิ่มทรัพยากร Dependency ต่อไปนี้ในไฟล์ build.gradle ของโมดูลแอป

dependencies {
implementation "androidx.wear:wear-input:1.2.0"
}

จำนวนปุ่ม

พิจารณาว่าอุปกรณ์มีปุ่มกี่ปุ่มโดยใช้เมธอด WearableButtons.getButtonCount() วิธีนี้รวมถึงปุ่มเปิด/ปิดด้วย ดังนั้นหากวิธีนี้แสดงค่าที่มากกว่า 1 แสดงว่ามีปุ่มมัลติฟังก์ชันที่พร้อมใช้งาน หากต้องการทราบจำนวนปุ่มมัลติฟังก์ชันที่กำหนดได้ที่แน่นอน ให้ลบ 1 ออกจากจำนวนปุ่ม เนื่องจากปุ่มแรกจะเป็นปุ่มเปิด/ปิดเสมอ

รหัสแป้นสำหรับการกดปุ่ม

ปุ่มแต่ละปุ่มจะแมปกับค่าคงที่ int จากคลาส KeyEvent ดังที่แสดงในตารางต่อไปนี้

ปุ่ม KeyEvent
ปุ่มมัลติฟังก์ชัน 1 KEYCODE_STEM_1
ปุ่มมัลติฟังก์ชัน 2 KEYCODE_STEM_2
ปุ่มมัลติฟังก์ชัน 3 KEYCODE_STEM_3

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรับจำนวนปุ่มที่พร้อมใช้งาน

val count = WearableButtons.getButtonCount(context)

if (count > 1) {
    Log.d(TAG, "More than one button available")
}

val buttonInfo = WearableButtons.getButtonInfo(
    activity,
    KeyEvent.KEYCODE_STEM_1
)

if (buttonInfo == null) {
    // KEYCODE_STEM_1 is unavailable
    Log.d(TAG, "KEYCODE_STEM_1 not available")
} else {
    // KEYCODE_STEM_1 is present on the device
    Log.d(TAG, "KEYCODE_STEM_1 is present on the device")
}

จัดการการกดปุ่ม

มีรหัสปุ่มที่เป็นไปได้หลายรายการที่แอปของคุณสามารถจัดการได้ ดังนี้

  • KEYCODE_STEM_1
  • KEYCODE_STEM_2

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

หากต้องการจัดการการกดปุ่ม ให้ใช้เมธอด onKeyDown()

ตัวอย่างเช่น การใช้งานนี้จะตอบสนองต่อการกดปุ่มเพื่อควบคุมการทำงาน ในแอป

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    return if (event?.repeatCount == 0) {
        when (keyCode) {
            KeyEvent.KEYCODE_STEM_1 -> {
                Log.d(TAG, "KEYCODE_STEM_1 pressed")
                true
            }
            KeyEvent.KEYCODE_STEM_2 -> {
                Log.d(TAG, "KEYCODE_STEM_2 pressed")
                true
            }
            else -> {
                super.onKeyDown(keyCode, event)
            }
        }
    } else {
        super.onKeyDown(keyCode, event)
    }
}

กำหนดตำแหน่งปุ่ม

ไลบรารี AndroidX มี 2 วิธีที่อธิบายตำแหน่งของปุ่ม ดังนี้

  • WearableButtons.getButtonLabel() จะแสดงสตริงที่แปลเป็นภาษาท้องถิ่นซึ่งอธิบายตำแหน่งทั่วไปของปุ่มใน อุปกรณ์
  • WearableButtons.getButtonIcon() จะแสดงไอคอนที่แสดงถึงตำแหน่งทั่วไปของปุ่มบน อุปกรณ์

หาก API เหล่านี้ไม่เหมาะกับความต้องการของแอป คุณยังใช้ WearableButtons.getButtonInfo() API เพื่อรับตำแหน่งของปุ่มบนหน้าจอ และจัดการในลักษณะที่กำหนดเองมากขึ้นได้ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ได้ที่เอกสารอ้างอิง Wear API