Por lo general, un dispositivo wearable contiene varios botones físicos, también conocidos como coronas. Los dispositivos Wear OS siempre tienen, como mínimo, un botón (el botón de encendido). Además, es posible que haya cero o más botones multifunción. Algunos dispositivos también proporcionan un botón lateral giratorio físico.
En tu app, puedes asignar botones multifunción a acciones para cuando la app esté en primer plano. Por ejemplo, una app de fitness puede iniciar o pausar un entrenamiento con botones multifunción:

Para conocer los casos de uso apropiados y las consideraciones de diseño, consulta los principios de diseño de Wear OS.
En este documento, se describe cómo recuperar información sobre los botones multifunción disponibles en un dispositivo y cómo procesar las pulsaciones de botones.
Metadatos de botones
Para obtener información adicional sobre los botones de un dispositivo, usa la API definida en la biblioteca de AndroidX Wear Input. Agrega la siguiente dependencia al archivo build.gradle
del módulo de tu app:
dependencies {
implementation "androidx.wear:wear-input:1.2.0"
}
Cantidad de botones
Para determinar cuántos botones están disponibles en el dispositivo, usa el método WearableButtons.getButtonCount()
. Este método incluye el botón de encendido, por lo que, si el método muestra un valor mayor que uno, hay botones multifunción disponibles para usar. Para obtener un recuento preciso de los botones multifunción asignables, resta uno de la cantidad, ya que el primer botón siempre es el de encendido.
Claves de códigos para la presión de botones
Cada botón se asigna a una constante int
de la clase KeyEvent
, como se muestra en la siguiente tabla:
Botón | KeyEvent |
---|---|
Botón multifunción 1 | KEYCODE_STEM_1 |
Botón multifunción 2 | KEYCODE_STEM_2 |
Botón multifunción 3 | KEYCODE_STEM_3 |
El siguiente código de ejemplo muestra cómo obtener el recuento de botones 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") }
Cómo controlar las presiones de los botones
Tu app puede controlar varios códigos de botones:
KEYCODE_STEM_1
.KEYCODE_STEM_2
.
Tu app puede recibir estos códigos clave y convertirlos en acciones específicas en la app.
Para controlar cómo se presiona un botón, implementa el método onKeyDown()
.
Por ejemplo, esta implementación responde a las pulsaciones de un botón para controlar acciones en una 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) } }
Cómo determinar las posiciones de los botones
La biblioteca de AndroidX proporciona dos métodos que describen la ubicación de un botón:
WearableButtons.getButtonLabel()
muestra una cadena localizada que describe la ubicación general del botón en el dispositivo.WearableButtons.getButtonIcon()
muestra un ícono que representa la ubicación general del botón en el dispositivo.
Si estas APIs no satisfacen las necesidades de tu app, también puedes usar la API de WearableButtons.getButtonInfo()
para obtener la ubicación del botón en la pantalla y manejarlo de manera más personalizada. Si quieres obtener más información sobre las APIs, consulta la referencia de la API de Wear.