Tombol fisik

Perangkat wearable biasanya memiliki beberapa tombol fisik, yang juga dikenal sebagai _stems_. Perangkat Wear OS selalu memiliki minimal satu tombol: tombol daya. Selain itu, nol atau beberapa tombol multifungsi mungkin ada.

Di aplikasi, Anda dapat menetapkan tombol multifungsi ke tindakan. Misalnya, aplikasi kebugaran dapat memulai atau menjeda olahraga menggunakan tombol multifungsi:

Catatan: Wear OS 3.0 mencadangkan dua tombol untuk OS, sedangkan Wear OS 2.0 hanya mencadangkan satu tombol. Tindakan ini akan mengurangi jumlah tombol yang dapat Anda tetapkan untuk tindakan.

Untuk kasus penggunaan dan pertimbangan desain yang sesuai, tinjau Prinsip desain Wear OS.

Panduan ini menjelaskan cara mengambil informasi tentang tombol multifungsi yang tersedia di perangkat dan cara memproses penekanan tombol.

Metadata tombol

Untuk mendapatkan informasi tambahan tentang tombol di perangkat, gunakan API yang ditentukan dalam library AndroidX Wear Input. Tambahkan dependensi berikut di file build.gradle modul aplikasi Anda:

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

Jumlah tombol

Untuk mengetahui jumlah tombol yang tersedia di perangkat, gunakan metode WearableButtons.getButtonCount(). Metode ini menyertakan tombol daya, jadi jika metode ini menampilkan nilai yang lebih besar dari satu, akan ada tombol multifungsi yang tersedia untuk digunakan. Untuk mendapatkan hitungan yang akurat dari semua tombol multifungsi yang dapat ditetapkan, kurangi satu dari jumlah tersebut, karena tombol pertama selalu berupa tombol daya.

Kode tombol untuk penekanan tombol

Setiap tombol dipetakan ke konstanta int dari class KeyEvent, seperti yang ditunjukkan pada tabel berikut:

Tombol KeyEvent
Tombol multifungsi 1 KEYCODE_STEM_1
Tombol multifungsi 2 KEYCODE_STEM_2
Tombol multifungsi 3 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 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
}

Menangani penekanan tombol

Ada sejumlah kemungkinan kode tombol yang dapat ditangani aplikasi Anda:

  • 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().

Misalnya, implementasi ini merespons 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);
}

Menentukan posisi tombol

Library AndroidX menyediakan dua metode yang menjelaskan lokasi tombol:

Catatan: Sebaiknya hindari penggunaan deskriptor tekstual saat mendeskripsikan tombol dan fungsinya. Gunakan indikator visual sebagai gantinya. Namun, mungkin ada beberapa situasi ketika menjelaskan tombol akan terasa lebih masuk akal.

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