При воспроизведении медиафайлов в вашем приложении пользователи должны иметь возможность приостанавливать и возобновлять воспроизведение, нажимая клавишу пробела на физической клавиатуре.
Реагировать на события нажатия клавиш
Приложения, основанные на 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 { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
Этот метод вызывается каждый раз при отпускании нажатой клавиши, поэтому он срабатывает ровно один раз при каждом нажатии клавиши.
2. Фильтр нажатий пробела
Внутри методов onPreviewKeyEvent и onKeyEvent модификатора Compose или в методе 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
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Ключевые моменты
-
KEYCODE_SPACE: Константа кода клавиши пробела .
Сочинить
-
onPreviewKeyEvent: Модификатор, позволяющий компоненту перехватывать события нажатия аппаратных клавиш, когда он (или один из его дочерних компонентов) находится в фокусе. -
onKeyEvent: АналогичноonPreviewKeyEvent, модификатор, позволяющий компоненту перехватывать события нажатия аппаратных клавиш, когда компонент (или один из его дочерних элементов) находится в фокусе.
Мнения
-
onKeyUp(): Обработчик событий, вызываемый при отпускании клавиши и не обрабатываемый представлением (например,TextView) внутри активности.
Результаты
Теперь ваше приложение может реагировать на нажатия клавиши пробела для приостановки и возобновления воспроизведения видео или других медиафайлов.