Приостановка и возобновление воспроизведения мультимедиа с помощью клавиши пробела на клавиатуре.

Значок четырехзвездочного рейтинга

Оптимизация для больших экранов включает в себя возможность обработки ввода с внешней клавиатуры, например, реагирование на нажатие пробела для приостановки или возобновления воспроизведения видео и других мультимедийных файлов. Это особенно полезно для планшетов, которые часто подключаются к внешним клавиатурам, и Chromebook, которые обычно поставляются с внешними клавиатурами, но могут использоваться в режиме планшета.

Когда медиаконтент является единственным элементом окна (например, воспроизведение видео в полноэкранном режиме), реагируйте на события нажатия клавиш на уровне экрана в Jetpack Compose.

Передовые методы

При воспроизведении медиафайлов в вашем приложении пользователи должны иметь возможность приостанавливать и возобновлять воспроизведение, нажимая клавишу пробела на физической клавиатуре.

Ингредиенты

  • KEYCODE_SPACE : Константа кода клавиши пробела.
  • onPreviewKeyEvent : Modifier , позволяющий компоненту перехватывать события нажатия аппаратных клавиш, когда он (или один из его дочерних компонентов) находится в фокусе.
  • onKeyEvent : Подобно onPreviewKeyEvent , этот Modifier позволяет компоненту перехватывать события нажатия аппаратных клавиш, когда он (или один из его дочерних компонентов) находится в фокусе.

Шаги

Чтобы реагировать на нажатия клавиш в Jetpack Compose, ваше приложение должно отслеживать события нажатия клавиш, фильтровать эти события и реагировать на выбранные нажатия, например, на нажатие клавиши пробела.

1. Отслеживайте события клавиатуры.

В Jetpack Compose вы можете использовать модификаторы onPreviewKeyEvent или onKeyEvent внутри компонента, который управляет нажатием клавиши.

Основное различие между двумя модификаторами заключается в том, куда отправляется событие, если модификатор его не обрабатывает:

  • onPreviewKeyEvent — Передает событие первому дочернему элементу.
  • onKeyEvent — Передает событие родительскому элементу, являющемуся составным элементом.

2. Фильтрация и обработка нажатий пробела.

Внутри лямбда-функции с модификатором onPreviewKeyEvent или onKeyEvent отфильтруйте события нажатия клавиш, где отпускание клавиши ( KeyEventType.KeyUp ) соответствует нажатию клавиши пробела ( Key.Spacebar ).

Возвращайте true если ваш код обрабатывает событие, и вы не хотите, чтобы событие распространялось дальше. Возвращайте false , чтобы другие компоненты могли обработать событие.

  • Вариант A: Использование onPreviewKeyEvent

    Column(
        modifier = Modifier.onPreviewKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

  • Вариант B: Использование onKeyEvent

    Column(
        modifier = Modifier.onKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

Результаты

Теперь ваше приложение может реагировать на нажатия клавиши пробела для приостановки и возобновления воспроизведения видео или других медиафайлов.

Дополнительные ресурсы

Чтобы узнать больше о событиях клавиатуры и способах управления ими, см. раздел «Обработка ввода с клавиатуры» .