Urządzenia do noszenia zwykle zawierają wiele fizycznych przycisków, nazywanych też _stems_. Wear OS urządzenia zawsze mają co najmniej 1 przycisk: przycisk zasilania. Poza tym zero lub więcej przyciski wielofunkcyjne.
W aplikacji możesz przypisać przyciski wielofunkcyjne do działań. Na przykład aplikacja do fitnessu może rozpocząć lub wstrzymać trening za pomocą przycisków wielofunkcyjnych:
Uwaga: Wear OS 3.0 rezerwuje dwa przyciski dla systemu operacyjnego, Wear OS 2.0 rezerwuje tylko jedną z nich. Zmniejsza to liczbę przycisków, które można przypisać .
Aby zapoznać się z odpowiednimi przypadkami użycia i sprawami dotyczącymi projektowania, zapoznaj się z Zasady projektowania Wear OS
W tym przewodniku opisano sposób pobierania informacji o dostępnych przyciskach wielofunkcyjnych na na urządzeniu i jak przetwarzać naciśnięcia przycisków.
Metadane przycisku
Aby uzyskać dodatkowe informacje o przyciskach na urządzeniu, użyj interfejsu API zdefiniowanego w
Biblioteka AndroidX Wear input. Dodaj parametr
ta zależność w 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
WearableButtons.getButtonCount()
. Metoda ta wymaga użycia przycisku zasilania,
więc jeśli metoda zwraca wartość większą niż jeden, dostępne są przyciski wielofunkcyjne
do wykorzystania. Aby uzyskać dokładną liczbę możliwych do przypisania przycisków wielofunkcyjnych, odejmij
tylko na jeden, bo pierwszy przycisk to zawsze przycisk zasilania.
Kody klawiszy do naciśnięć przycisku
Każdy przycisk jest zmapowany na stałą int
z KeyEvent
klasy jak w poniższej 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ć przycisk dostępności liczba:
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 }
Naciśnięcia przycisków na uchwytach
Aplikacja może obsługiwać różne kody klawiszy przycisków:
-
KEYCODE_STEM_1
-
KEYCODE_STEM_2
-
KEYCODE_STEM_3
Twoja aplikacja może otrzymywać te kody kluczy i konwertować je na konkretne działania w aplikacji.
Aby obsługiwać naciśnięcia przycisku, zaimplementuj funkcję
onKeyDown()
.
Na przykład ta implementacja reaguje na naciśnięcia przycisków w celu sterowania 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 położenia przycisków
Biblioteka AndroidaX udostępnia 2 metody określania lokalizacji przycisku:
-
WearableButtons.getButtonLabel()
zwraca zlokalizowany ciąg znaków opisujący ogólnego położenia przycisku na urządzeniu. -
WearableButtons.getButtonIcon()
zwraca ikonę symbolizującą ogólny umieszczenie przycisku na urządzeniu.
Uwaga: odradzamy stosowanie deskryptorów tekstowych podczas opisywania przycisków i ich funkcji. Zamiast tego użyj wizualnego wskaźnika. Jednak może się zdarzyć, może okazać się, że opis przycisku ma sens.
Poprzednie metody zostały opracowane z myślą o prostym opisach. Jeśli te interfejsy API nie spełniają wymagań Twojej aplikacji
możesz również użyć interfejsu API WearableButtons.getButtonInfo()
, aby pobrać
lokalizację przycisku na ekranie i obsługują go w bardziej spersonalizowany sposób. Więcej
więcej informacji o interfejsach API znajdziesz
Dokumentacja interfejsu Wear API.