Tombol multifungsi di Wear

Selain tombol power (sisi), Wear OS by Google mendukung tombol fisik tambahan yang dikenal sebagai tombol multifungsi (MF). Wearable Support Library menyediakan API untuk menentukan informasi tentang tombol MF yang tersedia di suatu perangkat.

Tutorial ini berfokus pada bagaimana Anda dapat mengambil informasi tentang tombol MF yang tersedia di perangkat dan memproses objek KeyEvent.

Lihat referensi terkait berikut:

Menangani peristiwa penting

Jika perlu menangani penekanan tombol multifungsi, aplikasi Anda dapat melakukannya melalui kode peristiwa penekanan tombol standar dalam framework Android. Kode tombol biasanya terkait one-to-one dengan setiap tombol fisik di perangkat.

Kumpulan kode tombol yang tersedia dan dapat ditangani oleh aplikasi Anda adalah: KEYCODE_STEM_1, KEYCODE_STEM_2, KEYCODE_STEM_3. Aplikasi dapat menerima kode tombol ini dan mengubahnya menjadi tindakan spesifik dalam aplikasi.

Untuk menangani penekanan tombol, implementasikan metode onKeyDown().

Contohnya, implementasi ini merespons beberapa penekanan tombol untuk mengontrol tindakan dalam aplikasi:

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);
    }
    

Mencari tombol yang tersedia

Untuk mencari tahu tombol mana yang tersedia untuk digunakan, Anda dapat menggunakan metode WearableButtons.getButtonInfo() dan WearableButtons.getButtonCount() yang tersedia dalam Wearable Support Library. Cara mudah untuk menemukan apakah ada tombol sekunder yang tersedia adalah dengan memeriksa nilai yang dihasilkan dari WearableButtons.getButtonCount(). Jika lebih besar dari 1, artinya tersedia tombol multifungsi dan dapat digunakan.

Kode tombol untuk penekanan tombol

Setiap tombol dipetakan ke konstanta int dari class KeyEvent seperti dalam tabel berikut:

Tombol KeyEvent
Tombol MF 1 KEYCODE_STEM_1
Tombol MF 2 KEYCODE_STEM_2
Tombol MF 3 KEYCODE_STEM_3
  • Jika perangkat hanya memiliki satu tombol MF, tombol akan selalu dipetakan ke KEYCODE_STEM_1.
  • Jika perangkat memiliki dua tombol MF, tombol akan selalu dipetakan ke KEYCODE_STEM_1 dan KEYCODE_STEM_2.
  • Jika perangkat memiliki tiga tombol MF, tombol akan selalu dipetakan ke KEYCODE_STEM_1, KEYCODE_STEM_2, dan KEYCODE_STEM_3.

Kode contoh berikut menunjukkan cara untuk mendapatkan jumlah tombol yang tersedia:

Kotlin

    val count = WearableButtons.getButtonCount(context)

    if (count > 1) {
        // There are multi-function 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 multi-function 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
    }
    

Menentukan posisi tombol

Wearable Support Library menyediakan dua API yang menjelaskan lokasi tombol:

Catatan: Sebaiknya jangan gunakan deskriptor tekstual saat mendeskripsikan tombol dan fungsinya, tetapi gunakanlah indikator visual. Namun, mungkin ada beberapa situasi ketika menjelaskan tombol akan terasa lebih masuk akal.

Metode di atas didesain untuk deskripsi sederhana. Jika API ini tidak sesuai dengan kebutuhan aplikasi Anda, gunakan API WearableButtons.getButtonInfo() untuk mendapatkan lokasi tombol di layar dan menanganinya dalam cara yang lebih disesuaikan. Untuk informasi selengkapnya tentang API, lihat Referensi API Wear.