アプリでメディア ファイルを再生する場合は、物理キーボードの Space キーを押すと、再生を一時停止または再開できるようにします。
キー入力イベントに応答する
Jetpack Compose またはビューベースのアプリは、キーボードのキーが押された場合に同様の方法で対応します。アプリはキー操作イベントをリッスンして、イベントをフィルタし、Space キーなどのキー操作に応答します。
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 { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
このメソッドは、押されたキーが離されると呼び出されるため、キー入力ごとに 1 回呼び出されます。
2. Space キーの押下をフィルタする
Compose の onPreviewKeyEvent
修飾子メソッドまたはビューの onKeyUp()
メソッド内で、KeyEvent.KEYCODE_SPACE
をフィルタして、メディア コンポーネントに正しいイベントを送信します。onKeyEvent
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
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
要点
KEYCODE_SPACE
: Space キーのキーコード定数。
Compose
onPreviewKeyEvent
: コンポーネント(またはその子の一つ)がフォーカスされたときにコンポーネントがハードウェア キーイベントをインターセプトできるようにする修飾子。onKeyEvent
:onPreviewKeyEvent
と同様に、コンポーネント(またはその子の一つ)がフォーカスされたときにコンポーネントがハードウェア キーイベントをインターセプトできるようにする修飾子。
視聴回数
結果
これでアプリは Space キーが押された場合に対応して、動画などのメディアを一時停止したり再開したりできるようになります。