Un accessoire connecté contient généralement plusieurs boutons physiques, également appelés tiges. Les appareils Wear OS comportent toujours au moins un bouton : le bouton Marche/Arrêt. Au-delà, ils peuvent utiliser d'autres boutons multifonctions, mais cela n'est pas obligatoire. Certains appareils sont également dotés d'un bouton latéral rotatif.
Dans votre application, vous pouvez attribuer des boutons multifonctions à des actions lorsque votre application est au premier plan. Par exemple, une application de fitness peut démarrer ou suspendre une séance d'entraînement à l'aide de boutons multifonctions :

Pour les cas d'utilisation appropriés et les considérations de conception, consultez les principes de conception pour Wear OS.
Ce document explique comment récupérer des informations concernant les boutons multifonctions disponibles sur un appareil et comment traiter les pressions sur les boutons.
Métadonnées des boutons
Pour en savoir plus sur les boutons d'un appareil, utilisez l'API définie dans la bibliothèque AndroidX Wear Input. Ajoutez la dépendance suivante au fichier build.gradle
du module de votre application :
dependencies {
implementation "androidx.wear:wear-input:1.2.0"
}
Nombre de boutons
Pour déterminer le nombre de boutons disponibles sur l'appareil, utilisez la méthode WearableButtons.getButtonCount()
. Cette méthode inclut le bouton Marche/Arrêt. Par conséquent, si elle renvoie une valeur supérieure à 1, des boutons multifonctions sont disponibles. Pour obtenir un décompte précis des boutons multifonctions attribuables, soustrayez le nombre 1 de ce décompte, car le premier bouton est toujours le bouton Marche/Arrêt.
Codes de clavier pour les boutons
Chaque bouton est mappé à une constante int
de la classe KeyEvent
, comme indiqué dans le tableau suivant :
Bouton | KeyEvent |
---|---|
Bouton multifonctions 1 | KEYCODE_STEM_1 |
Bouton multifonctions 2 | KEYCODE_STEM_2 |
Bouton multifonctions 3 | KEYCODE_STEM_3 |
L'exemple de code suivant montre comment obtenir le nombre de boutons disponibles :
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") }
Gérer les pressions sur les boutons
Votre application peut gérer plusieurs codes de clavier spécifiques aux boutons :
KEYCODE_STEM_1
.KEYCODE_STEM_2
.
Votre application peut recevoir ces codes de clavier et les convertir en actions spécifiques.
Pour gérer une pression sur un bouton, implémentez la méthode onKeyDown()
.
Par exemple, cette implémentation répond à des pressions sur un bouton permettant de contrôler les actions dans une application :
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) } }
Déterminer l'emplacement d'un bouton
La bibliothèque AndroidX propose deux méthodes décrivant l'emplacement d'un bouton :
WearableButtons.getButtonLabel()
renvoie une chaîne localisée décrivant l'emplacement général du bouton sur l'appareil.WearableButtons.getButtonIcon()
renvoie une icône représentant l'emplacement général du bouton sur l'appareil.
Si ces API ne répondent pas aux besoins de votre application, vous pouvez également utiliser l'API WearableButtons.getButtonInfo()
pour obtenir l'emplacement du bouton à l'écran et le gérer de manière plus personnalisée. Pour en savoir plus sur les API, consultez la documentation de référence de l'API Wear.