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 pulsación de teclas
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 el
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) {
...
}
...
})
Vistas
En una actividad de tu app, anula el onKeyUp() método:
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 pulsaciones de la barra espaciadora
Dentro del método del modificador de Compose onPreviewKeyEvent y onKeyEvent o del método onKeyUp() de las 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) {
...
}
...
})
Vistas
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: Clave de código constante para la barra espaciadora.
Compose
onPreviewKeyEvent: 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, este modificador permite que un componente intercepte eventos clave de hardware cuando este (o uno de sus elementos secundarios) esté enfocado.
Vistas
onKeyUp(): Controlador de eventos que se llama cuando se libera una clave 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.