A otimização para telas grandes inclui a capacidade de processar entradas do teclado externo, como usar o pressionamento da Spacebar para pausar ou retomar a reprodução de vídeos e outras mídias. Isso é especialmente útil para tablets, que geralmente se conectam a teclados externos, e para Chromebooks, que geralmente vêm com teclados externos, mas podem ser usados no modo tablet.
Quando a mídia é o único elemento da janela (por exemplo, uma reprodução de vídeo em tela cheia), responda a eventos de pressionamento de tecla no nível da tela, no caso do Jetpack Compose.
Práticas recomendadas
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.
Componentes
KEYCODE_SPACE: constante de código de tecla da barra de espaço.onPreviewKeyEvent:Modifiero que permite a um componente interceptar eventos de teclas do hardware quando ele ou um dos filhos está em foco.onKeyEvent: semelhante aoonPreviewKeyEvent, esseModifierpermite que um componente intercepte eventos de teclas do hardware quando ele ou um dos filhos está em foco.
Etapas
Para responder a pressionamentos de tecla no Jetpack Compose, seu app precisa detectar eventos de pressionamento de tecla, filtrá-los e responder a pressionamentos selecionados, como o de uma barra de espaço.
1. Detectar eventos de teclado
Com o Jetpack Compose, você pode usar os modificadores onPreviewKeyEvent ou onKeyEvent no componente que gerencia o pressionamento de tecla.
A principal diferença entre os dois modificadores é para onde o evento é enviado se o modificador não o consumir:
onPreviewKeyEvent: envia o evento ao primeiro filho.onKeyEvent: envia o evento ao elemento combinável pai.
2. Filtrar e processar pressionamentos da barra de espaço
Dentro da expressão lambda do modificador onPreviewKeyEvent ou onKeyEvent, filtre eventos de tecla em que a liberação de tecla (KeyEventType.KeyUp) corresponda à barra de espaço (Key.Spacebar).
Retorne true se o código processar o evento e você não quiser que ele se propague. Retorne false para permitir que outros componentes processem o evento.
Opção A: usar
onPreviewKeyEventColumn( modifier = Modifier.onPreviewKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
Opção B: usar
onKeyEventColumn( modifier = Modifier.onKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
Resultados
Seu app agora pode responder a pressionamentos de tecla da barra de espaço para pausar e retomar um vídeo ou outra mídia.
Outros recursos
Para saber mais sobre os eventos de teclado e como gerenciá-los, consulte Gerenciar a entrada do teclado.