Fiziksel düğmeler

Giyilebilir cihazlar genellikle sap olarak da bilinen birden fazla fiziksel düğme içerir. Wear OS cihazlarda her zaman en az bir düğme (güç düğmesi) bulunur. Bunun dışında, sıfır veya daha fazla çok işlevli düğme olabilir. Bazı cihazlarda fiziksel olarak döndürülebilen bir yan düğme de bulunur.

Uygulamanızda, uygulamanız ön plandayken kullanılacak işlemler için çok işlevli düğmeler atayabilirsiniz. Örneğin, bir fitness uygulaması çok işlevli düğmeleri kullanarak antrenmanı başlatabilir veya duraklatabilir:

Birden fazla yan düğmesi olan bir kol saati. Sistem, düğmelerden birini çok işlevli düğme olarak belirler.
Şekil 1. Çok işlevli düğmelerin gösterildiği Wear OS fitness uygulaması.

Uygun kullanım alanları ve tasarım hususları için Wear OS tasarım ilkeleri başlıklı makaleyi inceleyin.

Bu belgede, bir cihazdaki kullanılabilir çok işlevli düğmeler hakkında bilgilerin nasıl alınacağı ve düğme basma işlemlerinin nasıl işleneceği açıklanmaktadır.

Düğme meta verileri

Bir cihazdaki düğmeler hakkında daha fazla bilgi edinmek için Wear Input AndroidX kitaplığında tanımlanan API'yi kullanın. Uygulama modülünüzün build.gradle dosyasına aşağıdaki bağımlılığı ekleyin:

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

Düğme sayısı

Cihazda kaç düğmenin bulunduğunu belirlemek için WearableButtons.getButtonCount() yöntemini kullanın. Bu yönteme güç düğmesi de dahildir. Bu nedenle, yöntem birden büyük bir değer döndürürse kullanılabilir çok işlevli düğmeler vardır. Atanabilir çok işlevli düğmelerin doğru sayısını elde etmek için sayıdan bir çıkarın. Çünkü ilk düğme her zaman güç düğmesidir.

Düğmeye basma işlemleri için tuş kodları

Her düğme, aşağıdaki tabloda gösterildiği gibi KeyEvent sınıfındaki bir int sabitiyle eşlenir:

Düğme KeyEvent
Çok işlevli düğme 1 KEYCODE_STEM_1
Çok işlevli düğme 2 KEYCODE_STEM_2
Çok işlevli düğme 3 KEYCODE_STEM_3

Aşağıdaki örnek kodda, kullanılabilir düğme sayısının nasıl alınacağı gösterilmektedir:

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

Düğmeye basma işlemlerini işleme

Uygulamanızın işleyebileceği çeşitli olası düğme tuş kodları vardır:

  • KEYCODE_STEM_1.
  • KEYCODE_STEM_2.

Uygulamanız bu anahtar kodlarını alıp belirli uygulama içi işlemlere dönüştürebilir.

Düğmeye basma işlemini işlemek için onKeyDown() yöntemini uygulayın.

Örneğin, bu uygulama, bir uygulamadaki işlemleri kontrol etmek için düğme basma işlemlerine yanıt verir:

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

Düğme konumlarını belirleme

AndroidX kitaplığı, bir düğmenin konumunu açıklayan iki yöntem sunar:

Bu API'ler uygulamanızın ihtiyaçlarına uygun değilse WearableButtons.getButtonInfo() API'yi kullanarak ekrandaki düğmenin konumunu alabilir ve daha özelleştirilmiş bir şekilde işleyebilirsiniz. API'ler hakkında daha fazla bilgi için Wear API referansı'na bakın.