Всякий раз, когда ваше приложение воспроизводит медиафайл, пользователи должны иметь возможность приостанавливать и возобновлять воспроизведение, нажимая клавишу пробела на физической клавиатуре.
Реагировать на события нажатия клавиш
Приложения на основе Jetpack Compose или представлений реагируют на нажатия клавиш клавиатуры аналогичным образом: приложение прослушивает события нажатия клавиш, фильтрует события и реагирует на нажатия клавиш, например на нажатие клавиши пробела .
1. Слушайте события клавиатуры
Сочинить
В Jetpack Compose используйте модификатор onPreviewKeyEvent
или onKeyEvent
в макете, который управляет нажатием клавиши:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
или
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Просмотры
В действии вашего приложения переопределите метод onKeyUp()
:
Котлин
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Ява
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
Метод вызывается каждый раз при отпускании нажатой клавиши, поэтому он срабатывает ровно один раз для каждого нажатия клавиши.
2. Фильтрация нажатия клавиши пробела
Внутри методов-модификаторов Compose onPreviewKeyEvent
и onKeyEvent
или представлений метода onKeyUp()
отфильтруйте KeyEvent.KEYCODE_SPACE
, чтобы отправить правильное событие в ваш медиа-компонент:
Сочинить
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
или
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Просмотры
Котлин
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Ява
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Ключевые моменты
-
KEYCODE_SPACE
: константа кода клавиши для клавиши пробела .
Сочинить
-
onPreviewKeyEvent
: модификатор, который позволяет компоненту перехватывать события аппаратных клавиш, когда он (или один из его дочерних элементов) находится в фокусе. -
onKeyEvent
: АналогичноonPreviewKeyEvent
, модификатор, который позволяет компоненту перехватывать события аппаратных клавиш, когда компонент (или один из его дочерних элементов) находится в фокусе.
Просмотры
-
onKeyUp()
: обработчик событий, вызываемый при отпускании клавиши и не обрабатываемый представлением (например,TextView
) внутри действия.
Результаты
Теперь ваше приложение может реагировать на нажатие клавиши пробела , чтобы приостановить и возобновить воспроизведение видео или другого мультимедиа.