앱에서 미디어 파일을 재생할 때마다 사용자는 실제 키보드에서 스페이스바를 눌러 재생을 일시중지하거나 재개할 수 있어야 합니다.
키 누르기 이벤트에 응답
Jetpack Compose 또는 뷰를 기반으로 하는 앱은 키보드 키 누름에 비슷한 방식으로 응답합니다. 앱은 키 누름 이벤트를 수신 대기하고, 이벤트를 필터링하고, 스페이스바 키 누름과 같은 키 누름에 응답합니다.
1. 키보드 이벤트 수신 대기
Compose
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()
메서드를 재정의합니다.
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
자바
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
이 메서드는 눌린 키가 해제될 때마다 호출되므로 키 입력마다 정확하게 한 번씩 실행됩니다.
2. 스페이스바 누르기 필터링
Compose onPreviewKeyEvent
및 onKeyEvent
수정자 메서드 또는 뷰 onKeyUp()
메서드 내에서 KeyEvent.KEYCODE_SPACE
를 필터링하여 올바른 이벤트를 미디어 구성요소에 전송합니다.
Compose
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) {
...
}
...
})
뷰
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
자바
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
핵심사항
KEYCODE_SPACE
: 스페이스바의 키 코드 상수입니다.
Compose
onPreviewKeyEvent
: 구성요소 (또는 그 하위 요소 중 하나)에 포커스가 있을 때 구성요소에서 하드웨어 키 이벤트를 가로채도록 하는 수정자입니다.onKeyEvent
:onPreviewKeyEvent
와 마찬가지로 구성요소 (또는 그 하위 요소 중 하나)에 포커스가 있을 때 구성요소에서 하드웨어 키 이벤트를 가로채도록 하는 특수키입니다.
뷰
결과
이제 앱이 스페이스바 키를 누를 때 이에 응답하여 동영상이나 다른 미디어를 일시중지하거나 재개할 수 있습니다.