Urządzenie do noszenia ma zwykle wiele fizycznych przycisków, nazywanych też _stems_. Urządzenia z Wear OS zawsze mają co najmniej 1 przycisk: przycisk zasilania. Oprócz tego nie będzie żadnych przycisków wielofunkcyjnych lub ich więcej.
W aplikacji możesz przypisać przyciski wielofunkcyjne do działań. Na przykład aplikacja do fitnessu może rozpoczynać lub wstrzymywać trening za pomocą przycisków wielofunkcyjnych:
Uwaga: Wear OS 3.0 rezerwuje 2 przyciski dla systemu operacyjnego, a Wear OS 2.0 – tylko jeden. Zmniejsza to liczbę przycisków, do których możesz przypisać działania.
Odpowiednie przypadki użycia i kwestie związane z projektowaniem znajdziesz w zasadach projektu Wear OS.
Z tego przewodnika dowiesz się, jak pobrać informacje o przyciskach wielofunkcyjnych dostępnych na urządzeniu i jak przetworzyć naciśnięcia przycisków.
Metadane przycisku
Aby uzyskać dodatkowe informacje o przyciskach na urządzeniu, użyj interfejsu API zdefiniowanego w bibliotece danych wejściowych Wear w AndroidzieX. Dodaj tę zależność do pliku build.gradle
modułu aplikacji:
dependencies { implementation "androidx.wear:wear-input:1.0.0" }
Liczba przycisków
Aby sprawdzić, ile przycisków jest dostępnych na urządzeniu, użyj metody
WearableButtons.getButtonCount()
. Ta metoda zawiera przycisk zasilania, więc jeśli zwraca wartość większą niż 1, możesz użyć przycisków wielofunkcyjnych. Aby uzyskać dokładną liczbę możliwych do przypisania przycisków wielofunkcyjnych, odejmij jeden od tej liczby, ponieważ pierwszy przycisk jest zawsze przyciskiem zasilania.
Kody klawiszy naciśnięć przycisków
Każdy przycisk jest zmapowany na stałą int
z klasy KeyEvent
, jak pokazano w tej tabeli:
Przycisk | Kluczowe zdarzenie |
---|---|
Przycisk wielofunkcyjny 1 | KEYCODE_STEM_1
|
Przycisk wielofunkcyjny 2 | KEYCODE_STEM_2
|
Przycisk wielofunkcyjny 3 | KEYCODE_STEM_3
|
Ten przykładowy kod pokazuje, jak uzyskać liczbę dostępnych przycisków:
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 }
Uchwyt na naciśnięcia przycisku
Aplikacja może obsługiwać kilka różnych kodów klawiszy:
-
KEYCODE_STEM_1
-
KEYCODE_STEM_2
-
KEYCODE_STEM_3
Twoja aplikacja może otrzymać te kody kluczy i przekonwertować je na określone działania w aplikacji.
Aby obsługiwać naciśnięcie przycisku, zaimplementuj metodę
onKeyDown()
.
Ta implementacja reaguje na przykład na naciśnięcia przycisku, by kontrolować działania w aplikacji:
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); }
Określanie pozycji przycisku
Biblioteka AndroidX udostępnia 2 metody opisujące lokalizację przycisku:
-
WearableButtons.getButtonLabel()
zwraca zlokalizowany ciąg tekstowy opisujący ogólne położenie przycisku na urządzeniu. -
WearableButtons.getButtonIcon()
zwraca ikonę określającą ogólne położenie przycisku na urządzeniu.
Uwaga: odradzamy stosowanie deskryptorów tekstowych do opisywania przycisków i ich funkcji. Zamiast tego używaj wskaźników wizualnych. W niektórych przypadkach opis przycisku może być jednak bardziej sensowny.
Poprzednie metody zostały opracowane pod kątem prostych opisów. Jeśli te interfejsy API nie odpowiadają potrzebom Twojej aplikacji, możesz też użyć interfejsu WearableButtons.getButtonInfo()
API, aby uzyskać lokalizację przycisku na ekranie i obsługiwać go w bardziej dostosowany sposób. Więcej informacji o interfejsach API znajdziesz w dokumentacji interfejsu Wear API.