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:

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:
WearableButtons.getButtonLabel()
zwraca zlokalizowany ciąg znaków opisujący ogólne położenie przycisku na urządzeniu.WearableButtons.getButtonIcon()
zwraca ikonę reprezentującą ogólne położenie przycisku na urządzeniu.
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.