Pulsanti fisici

Un dispositivo indossabile in genere contiene più pulsanti fisici, noti anche come _stems_. Wear OS i dispositivi hanno sempre, come minimo, un tasto di accensione. Oltre questo valore, zero o più potrebbero essere presenti pulsanti multifunzione.

Nella tua app puoi assegnare pulsanti multifunzione alle azioni. Ad esempio, un'app per l'attività fisica potrebbe avviare o sospendere un esercizio utilizzando i pulsanti multifunzione:

Nota:Wear OS 3.0 riserva due pulsanti per il sistema operativo, mentre Wear OS 2.0 ne riserva un solo. In questo modo si riduce il numero di pulsanti che puoi assegnare azioni a.

Per i casi d'uso adatti e considerazioni sulla progettazione, Principi di progettazione per Wear OS.

Questa guida descrive come recuperare informazioni sui pulsanti multifunzione disponibili su un dispositivo e come elaborare le pressioni dei pulsanti.

Metadati del pulsante

Per ottenere ulteriori informazioni sui pulsanti di un dispositivo, utilizza l'API definita nel Libreria AndroidX Wear Input. Aggiungi il parametro questa dipendenza nel file build.gradle del modulo dell'app:

dependencies {
implementation "androidx.wear:wear-input:1.0.0"
}

Numero di pulsanti

Per sapere quanti pulsanti sono disponibili sul dispositivo, utilizza il WearableButtons.getButtonCount(). Questo metodo include il tasto di accensione, Pertanto, se il metodo restituisce un valore maggiore di uno, sono disponibili pulsanti multifunzione per l'uso. Per ottenere un conteggio preciso dei pulsanti multifunzione assegnabili, sottrai uno dal conteggio, dato che il primo è sempre il tasto di accensione.

Codici dei tasti per la pressione dei pulsanti

Ogni pulsante è mappato a una costante int da KeyEvent come illustrato nella tabella seguente:

Pulsante Evento chiave
Pulsante multifunzione 1 KEYCODE_STEM_1
Pulsante multifunzione 2 KEYCODE_STEM_2
Pulsante multifunzione 3 KEYCODE_STEM_3

Il seguente codice di esempio mostra come ottenere il pulsante disponibile conteggio:

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
}

Maniglia la pressione dei pulsanti

L'app può gestire una serie di possibili codici chiave dei pulsanti:

  • KEYCODE_STEM_1
  • KEYCODE_STEM_2
  • KEYCODE_STEM_3

La tua app può ricevere questi codici chiave e convertirli in azioni in-app specifiche.

Per gestire la pressione di un pulsante, implementa la funzione onKeyDown().

Ad esempio, questa implementazione risponde alla pressione dei pulsanti per controllare azioni in un'app:

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);
}

Determina le posizioni dei pulsanti

La libreria AndroidX offre due metodi per descrivere la posizione di un pulsante:

Nota: ti consigliamo di evitare di utilizzare descrittori testuali. per descrivere i pulsanti e le loro funzioni. Utilizza invece indicatori visivi. Tuttavia, casi in cui la descrizione di un pulsante è più sensata.

I metodi precedenti erano pensati per descrizioni semplici. Se queste API non sono adatte alla configurazione in base alle tue esigenze, puoi anche usare l'API WearableButtons.getButtonInfo() per ottenere posizione del pulsante sullo schermo e gestirla in modo più personalizzato. Per ulteriori informazioni informazioni sulle API, consulta Riferimento API Wear.