Cada vez que la app reproduce un archivo multimedia, los usuarios deben poder pausar y reanudar la reproducción presionando la barra espaciadora en un teclado físico.
Cómo responder a eventos de teclas presionadas
Las apps basadas en Jetpack Compose o vistas responden a las pulsaciones de teclas del teclado de forma similar: la app escucha los eventos de pulsación de teclas, los filtra y responde a las pulsaciones de teclas, como cuando se presiona la barra espaciadora.
1. Cómo escuchar eventos del teclado
Compose
Con Jetpack Compose, usa el modificador onPreviewKeyEvent
o onKeyEvent
dentro del diseño que administra la pulsación de teclas:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
o
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Views
En una actividad de tu app, anula el método onKeyUp()
:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
El método se invoca cada vez que se suelta una tecla presionada, por lo que se activa exactamente una vez por cada vez que se presiona una tecla.
2. Filtra las pulsaciones de la barra espaciadora
Dentro de los métodos de modificador onPreviewKeyEvent
y onKeyEvent
de Compose o el método onKeyUp()
de vistas, filtra por KeyEvent.KEYCODE_SPACE
para enviar el evento correcto al componente multimedia:
Compose
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
o
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Views
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Puntos clave
KEYCODE_SPACE
: Es la constante de código de tecla para la barra espaciadora.
Compose
onPreviewKeyEvent
: Es un modificador que permite que un componente intercepte eventos clave de hardware cuando este (o uno de sus elementos secundarios) esté enfocado.onKeyEvent
: Al igual queonPreviewKeyEvent
, es un modificador que permite que un componente intercepte eventos clave de hardware cuando el componente (o uno de sus elementos secundarios) esté enfocado.
Views
onKeyUp()
: Es el controlador de eventos al que se llama cuando se libera una tecla y no la maneja una vista (comoTextView
) dentro de una actividad.
Resultados
Tu app ahora puede responder cuando se presiona la barra espaciadora para pausar y reanudar un video o cualquier otro contenido multimedia.