Sempre que seu app reproduzir um arquivo de mídia, os usuários poderão pausar e retomar a reprodução pressionando a barra de espaço em um teclado físico.
Responder a eventos de pressionamento de tecla
Apps baseados no Jetpack Compose ou em visualizações respondem a pressionamentos de tecla de maneiras semelhantes: o app detecta eventos de pressionamento de tecla, filtra os eventos e responde a pressionamentos, como o de uma barra de espaço.
1. Detectar eventos de teclado
Compose
Com o Jetpack Compose, use o modificador onPreviewKeyEvent
ou
onKeyEvent
no layout que gerencia o pressionamento de tecla:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
ou
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Visualizações
Em uma atividade no app, substitua o método onKeyUp()
:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
O método é invocado sempre que uma tecla pressionada é solta. Portanto, ele é acionado exatamente uma vez para cada tecla pressionada.
2. Filtrar pressionamentos da barra de espaço
Nos métodos modificadores onPreviewKeyEvent
e onKeyEvent
do Compose ou
no método onKeyUp()
das visualizações, filtre por KeyEvent.KEYCODE_SPACE
para enviar o
evento correto ao componente de mídia:
Compose
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
ou
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Visualizações
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Pontos principais
KEYCODE_SPACE
: constante de código de tecla da barra de espaço.
Compose
onPreviewKeyEvent
: modificador que permite que um componente intercepte eventos de teclas do hardware quando ele ou um dos filhos está em foco.onKeyEvent
: semelhante aoonPreviewKeyEvent
, o modificador que permite que um componente intercepte eventos de teclas do hardware quando o componente (ou um dos filhos) está em foco.
Visualizações
onKeyUp()
: manipulador de eventos chamado quando uma tecla é liberada e não é processada por uma visualização (comoTextView
) em uma atividade.
Resultados
Agora seu app pode responder a pressionamentos de tecla da barra de espaço para pausar e retomar um vídeo ou outra mídia.