Physische Tasten

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:

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.