Ein tragbares Gerät enthält in der Regel mehrere physische Tasten, die auch als _stems_ bezeichnet werden. Wear OS-Geräte haben immer mindestens eine Taste: die Ein/Aus-Taste. Darüber hinaus können null oder mehr Multifunktionstasten vorhanden sein.
Sie können in Ihrer App Multifunktionstasten zu Aktionen zuweisen. Eine Fitness-App kann beispielsweise ein Training mithilfe von Multifunktionstasten starten oder pausieren:
Hinweis:Wear OS 3.0 reserviert zwei Schaltflächen für das Betriebssystem, Wear OS 2.0 jedoch nur eine. Dadurch kannst du weniger Schaltflächen Aktionen zuweisen.
Lies dir für geeignete Anwendungsfälle und Designüberlegungen die Designprinzipien für Wear OS durch.
In diesem Leitfaden wird beschrieben, wie du Informationen zu verfügbaren Multifunktionstasten auf einem Gerät abrufen und das Drücken von Tasten verarbeiten kannst.
Metadaten der Schaltfläche
Um zusätzliche Informationen zu den Schaltflächen auf einem Gerät zu erhalten, verwende die API, die in der AndroidX-Bibliothek Wear Input definiert ist. Füge die folgende Abhängigkeit in die Datei build.gradle
deines App-Moduls ein:
dependencies { implementation "androidx.wear:wear-input:1.0.0" }
Anzahl der Tasten
Mit der Methode
WearableButtons.getButtonCount()
kannst du herausfinden, wie viele Schaltflächen auf dem Gerät verfügbar sind. Diese Methode beinhaltet die Ein/Aus-Taste. Wenn also die Methode einen Wert zurückgibt, der größer als eins ist, stehen Multifunktionstasten zur Verfügung. Damit du die genaue Anzahl der zuweisbaren Multifunktionstasten erhalten kannst, musst du von der Anzahl eins subtrahieren, da die erste Taste immer die Ein/Aus-Taste ist.
Tastenkombinationen für Tastenbetätigung
Jede Schaltfläche ist einer int
-Konstante aus der Klasse KeyEvent
zugeordnet, wie in der folgenden Tabelle dargestellt:
Schaltfläche | Schlüsselereignis |
---|---|
Multifunktionstaste 1 | KEYCODE_STEM_1
|
Multifunktionstaste 2 | KEYCODE_STEM_2
|
Multifunktionstaste 3 | KEYCODE_STEM_3
|
Der folgende Beispielcode zeigt, wie die Anzahl der verfügbaren Schaltflächen abgerufen wird:
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 }
Drücken der Grifftaste
Es gibt mehrere mögliche Tastencodes, die Ihre App verarbeiten kann:
-
KEYCODE_STEM_1
-
KEYCODE_STEM_2
-
KEYCODE_STEM_3
Deine App kann diese Schlüsselcodes empfangen und in bestimmte In-App-Aktionen umwandeln.
Implementiere die Methode
onKeyDown()
, um das Drücken einer Schaltfläche zu verarbeiten.
Diese Implementierung reagiert beispielsweise auf das Drücken von Schaltflächen, um Aktionen in einer App zu steuern:
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); }
Bestimmen der Schaltflächenpositionen
Die AndroidX-Bibliothek bietet zwei Methoden zur Beschreibung der Position einer Schaltfläche:
-
WearableButtons.getButtonLabel()
gibt einen lokalisierten String zurück, der die allgemeine Platzierung der Schaltfläche auf dem Gerät beschreibt. -
WearableButtons.getButtonIcon()
gibt ein Symbol zurück, das für die allgemeine Position der Taste auf dem Gerät steht.
Hinweis:Wir empfehlen, bei der Beschreibung von Schaltflächen und ihren Funktionen keine Textdeskriptoren zu verwenden. Verwenden Sie stattdessen visuelle Indikatoren. In einigen Fällen ist die Beschreibung einer Schaltfläche jedoch sinnvoller.
Die vorherigen Methoden wurden für einfache Beschreibungen entwickelt. Wenn diese APIs nicht zu den Anforderungen deiner App passen, kannst du auch die WearableButtons.getButtonInfo()
API verwenden, um die Position der Schaltfläche auf dem Bildschirm zu ermitteln und sie individuell anzupassen. Weitere Informationen zu den APIs findest du in der Wear API-Referenz.