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

อุปกรณ์ที่สวมใส่ได้มักมีปุ่มหลายปุ่ม หรือที่เรียกว่า _stems_ Wear OS อุปกรณ์จะมีปุ่มอย่างน้อย 1 ปุ่ม นั่นคือปุ่มเปิด/ปิด นอกเหนือจากนั้น หรือมากกว่า อาจมีปุ่มหลายฟังก์ชัน

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

หมายเหตุ: Wear OS 3.0 สงวนปุ่มไว้ 2 ปุ่มสำหรับระบบปฏิบัติการ Wear OS 2.0 จะสงวนไว้เพียงรายการเดียวเท่านั้น ซึ่งจะลดจำนวนปุ่มที่คุณกำหนดได้ การดำเนินการ

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

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

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

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

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

จำนวนปุ่ม

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

รหัสคีย์สำหรับการกดปุ่ม

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

ปุ่ม เหตุการณ์สําคัญ
ปุ่มหลายฟังก์ชัน 1 KEYCODE_STEM_1
ปุ่มหลายฟังก์ชัน 2 KEYCODE_STEM_2
ปุ่มหลายฟังก์ชัน 3 KEYCODE_STEM_3

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

Kotlin

val count = WearableButtons.getButtonCount(context)

if (count > 1) {
    // There are multifunction buttons available
}

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

if (buttonInfo == null) {
    // KEYCODE_STEM_1 is unavailable
} else {
    // KEYCODE_STEM_1 is present on the device
}

Java

int count = WearableButtons.getButtonCount(context);

if (count > 1) {
  // There are multifunction buttons available
}

WearableButtons.ButtonInfo buttonInfo =
  WearableButtons.getButtonInfo(activity, KeyEvent.KEYCODE_STEM_1);

if (buttonInfo == null) {
  // KEYCODE_STEM_1 is unavailable
} else {
  // KEYCODE_STEM_1 is present on the device
}

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

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

  • KEYCODE_STEM_1
  • KEYCODE_STEM_2
  • KEYCODE_STEM_3

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

ในการจัดการการกดปุ่ม ให้ใช้ onKeyDown()

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

Kotlin

// Activity
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
    return if (event.repeatCount == 0) {
        when (keyCode) {
            KeyEvent.KEYCODE_STEM_1 -> {
                // Do stuff
                true
            }
            KeyEvent.KEYCODE_STEM_2 -> {
                // Do stuff
                true
            }
            KeyEvent.KEYCODE_STEM_3 -> {
                // Do stuff
                true
            }
            else -> {
                super.onKeyDown(keyCode, event)
            }
        }
    } else {
        super.onKeyDown(keyCode, event)
    }
}

Java

@Override
// Activity
public boolean onKeyDown(int keyCode, KeyEvent event){
  if (event.getRepeatCount() == 0) {
    if (keyCode == KeyEvent.KEYCODE_STEM_1) {
      // Do stuff
      return true;
    } else if (keyCode == KeyEvent.KEYCODE_STEM_2) {
      // Do stuff
      return true;
    } else if (keyCode == KeyEvent.KEYCODE_STEM_3) {
      // Do stuff
      return true;
    }
  }
  return super.onKeyDown(keyCode, event);
}

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

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

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

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

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