Przyciski fizyczne

Urządzenie do noszenia zwykle zawiera kilka fizycznych przycisków, zwanych też trzonkami. Urządzenia z Wear OS zawsze mają co najmniej 1 przycisk: przycisk zasilania. Poza tym może być dostępnych co najmniej 1 przycisk wielofunkcyjny. Niektóre urządzenia mają też fizyczny obrotowy przycisk boczny.

W aplikacji możesz przypisywać przyciski wielofunkcyjne do działań, które mają być wykonywane, gdy aplikacja jest na pierwszym planie. Na przykład aplikacja do fitnessu może rozpoczynać lub wstrzymywać trening za pomocą przycisków wielofunkcyjnych:

Zegarek z kilkoma przyciskami bocznymi. System wyznacza jeden z przycisków jako przycisk wielofunkcyjny.
Rysunek 1. Aplikacja fitness na Wear OS z przyciskami wielofunkcyjnymi.

Odpowiednie przypadki użycia i wskazówki dotyczące projektowania znajdziesz w zasadach projektowania Wear OS.

Z tego dokumentu dowiesz się, jak pobierać informacje o dostępnych przyciskach wielofunkcyjnych na urządzeniu i jak przetwarzać ich naciśnięcia.

Metadane przycisku

Aby uzyskać dodatkowe informacje o przyciskach na urządzeniu, użyj interfejsu API zdefiniowanego w bibliotece Wear Input AndroidX. Dodaj tę zależność do pliku build.gradle modułu aplikacji:

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

Liczba przycisków

Określ liczbę przycisków dostępnych na urządzeniu, korzystając z metody WearableButtons.getButtonCount(). Ta metoda obejmuje przycisk zasilania, więc jeśli zwraca wartość większą niż 1, oznacza to, że dostępne są przyciski wielofunkcyjne. Aby uzyskać dokładną liczbę przypisywalnych przycisków wielofunkcyjnych, odejmij od niej 1, ponieważ pierwszy przycisk jest zawsze przyciskiem zasilania.

Kody klawiszy dla naciśnięć przycisków

Każdy przycisk jest przypisany do stałej int z klasy KeyEvent, jak pokazano w tej tabeli:

Przycisk KeyEvent
Przycisk wielofunkcyjny 1 KEYCODE_STEM_1
Przycisk wielofunkcyjny 2 KEYCODE_STEM_2
Przycisk wielofunkcyjny 3 KEYCODE_STEM_3

Poniższy przykładowy kod pokazuje, jak uzyskać liczbę dostępnych przycisków:

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

Obsługa naciśnięć przycisków

Aplikacja może obsługiwać wiele możliwych kodów klawiszy przycisków:

  • KEYCODE_STEM_1.
  • KEYCODE_STEM_2.

Aplikacja może odbierać te kody kluczy i przekształcać je w konkretne działania w aplikacji.

Aby obsłużyć naciśnięcie przycisku, zaimplementuj metodę onKeyDown().

Na przykład ta implementacja reaguje na naciśnięcia przycisków, aby sterować działaniami w aplikacji:

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

Określ położenie przycisków

Biblioteka AndroidX udostępnia 2 metody opisujące lokalizację przycisku:

Jeśli te interfejsy API nie spełniają potrzeb Twojej aplikacji, możesz też użyć interfejsu API WearableButtons.getButtonInfo(), aby uzyskać lokalizację przycisku na ekranie i obsługiwać go w bardziej spersonalizowany sposób. Więcej informacji o interfejsach API znajdziesz w dokumentacji Wear API.