Tombol fisik

Perangkat wearable biasanya memiliki beberapa tombol fisik, yang juga dikenal sebagai stem. Perangkat Wear OS selalu memiliki minimal satu tombol: tombol daya. Selain itu, nol atau beberapa tombol multifungsi mungkin ada. Beberapa perangkat juga menyediakan tombol putar samping fisik.

Di aplikasi, Anda dapat menetapkan tombol multifungsi ke tindakan saat aplikasi berada di latar depan. Misalnya, aplikasi kebugaran dapat memulai atau menjeda olahraga menggunakan tombol multifungsi:

Smartwatch dengan beberapa tombol samping. Sistem menetapkan salah satu tombol sebagai tombol multifungsi.
Gambar 1. Aplikasi kebugaran Wear OS yang menampilkan tombol multifungsi.

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

Dokumen 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.2.0"
}

Jumlah tombol

Tentukan 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 jumlah tombol multifungsi yang dapat ditetapkan secara akurat, 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 dalam 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 mendapatkan jumlah tombol yang tersedia:

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

Menangani penekanan tombol

Ada sejumlah kemungkinan kode tombol yang dapat ditangani aplikasi Anda:

  • KEYCODE_STEM_1.
  • KEYCODE_STEM_2.

Aplikasi Anda dapat menerima kode tombol ini dan mengonversinya menjadi tindakan spesifik dalam aplikasi.

Untuk menangani penekanan tombol, implementasikan metode onKeyDown().

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

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

Menentukan posisi tombol

Library AndroidX menyediakan dua metode yang menjelaskan lokasi tombol:

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.