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:
-
WearableButtons.getButtonLabel()
restituisce una stringa localizzata che descrive la posizione generica del pulsante sul dispositivo. -
WearableButtons.getButtonIcon()
restituisce un'icona che rappresenta il valore generale posizione del pulsante sul dispositivo.
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.