Pulsanti fisici

Un dispositivo indossabile in genere contiene più pulsanti fisici, noti anche come steli. I dispositivi Wear OS hanno sempre almeno un tasto: il tasto di accensione. Oltre a questi, potrebbero essere presenti zero o più tasti multifunzione. Alcuni dispositivi forniscono anche un pulsante laterale rotante fisico.

Nella tua app, puoi assegnare i pulsanti multifunzione alle azioni da eseguire quando l'app è in primo piano. Ad esempio, un'app per l'attività fisica potrebbe avviare o mettere in pausa un allenamento utilizzando i tasti multifunzione:

Uno smartwatch con più pulsanti laterali. Il sistema designa uno dei tasti come tasto multifunzione.
Figura 1. App per il fitness Wear OS che mostra i pulsanti multifunzione.

Per casi d'uso e considerazioni di progettazione adatti, consulta i principi di progettazione di Wear OS.

Questo documento 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 nella libreria AndroidX Wear Input. Aggiungi la seguente dipendenza nel file build.gradle del modulo dell'app:

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

Numero di pulsanti

Determina il numero di pulsanti disponibili sul dispositivo utilizzando il metodo WearableButtons.getButtonCount(). Questo metodo include il pulsante di accensione, quindi se il metodo restituisce un valore maggiore di uno, sono disponibili pulsanti multifunzione da utilizzare. Per ottenere un conteggio preciso dei tasti multifunzione assegnabili, sottrai uno dal conteggio, poiché il primo tasto è sempre il tasto di accensione.

Codici tasto per la pressione dei pulsanti

Ogni pulsante è mappato a una costante int della classe KeyEvent, come mostrato nella tabella seguente:

Pulsante KeyEvent
Pulsante multifunzione 1 KEYCODE_STEM_1
Pulsante multifunzione 2 KEYCODE_STEM_2
Pulsante multifunzione 3 KEYCODE_STEM_3

Il seguente esempio di codice mostra come ottenere il conteggio dei pulsanti disponibili:

val count = WearableButtons.getButtonCount(context)

if (count > 1) {
    Log.d(TAG, "More than one button available")
}

val buttonInfo = WearableButtons.getButtonInfo(
    activity,
    KeyEvent.KEYCODE_STEM_1
)

if (buttonInfo == null) {
    // KEYCODE_STEM_1 is unavailable
    Log.d(TAG, "KEYCODE_STEM_1 not available")
} else {
    // KEYCODE_STEM_1 is present on the device
    Log.d(TAG, "KEYCODE_STEM_1 is present on the device")
}

Gestire le pressioni dei pulsanti

Esistono diversi codici chiave dei pulsanti che la tua app può gestire:

  • KEYCODE_STEM_1.
  • KEYCODE_STEM_2.

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

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

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

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    return if (event?.repeatCount == 0) {
        when (keyCode) {
            KeyEvent.KEYCODE_STEM_1 -> {
                Log.d(TAG, "KEYCODE_STEM_1 pressed")
                true
            }
            KeyEvent.KEYCODE_STEM_2 -> {
                Log.d(TAG, "KEYCODE_STEM_2 pressed")
                true
            }
            else -> {
                super.onKeyDown(keyCode, event)
            }
        }
    } else {
        super.onKeyDown(keyCode, event)
    }
}

Determinare le posizioni dei pulsanti

La libreria AndroidX fornisce due metodi che descrivono la posizione di un pulsante:

Se queste API non soddisfano le esigenze della tua app, puoi anche utilizzare l'API WearableButtons.getButtonInfo() per ottenere la posizione del pulsante sullo schermo e gestirlo in modo più personalizzato. Per ulteriori informazioni sulle API, consulta il riferimento API Wear.