每當應用程式播放媒體檔案時,使用者應該只需按下實體鍵盤上的空格鍵,就能暫停並繼續播放。
回應按鍵事件
以 Jetpack Compose 或 View 為基礎的應用程式,會以類似的方式回應按下鍵盤按鍵的事件:應用程式會監聽按鍵事件、篩選事件,以及回應按鍵事件 (例如按下空格鍵的事件)。
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) {
...
}
...
})
Views
在應用程式的活動中,覆寫 onKeyUp()
方法:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@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) {
...
}
...
})
Views
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
重點
KEYCODE_SPACE
:空格鍵的按鍵碼常數。
Compose
onPreviewKeyEvent
:修飾符,可讓元件 (或其中一個子項) 在成為焦點時,攔截硬體的按鍵事件。onKeyEvent
:與onPreviewKeyEvent
類似,這個修飾符可讓元件 (或其中一個子項) 在成為焦點時,攔截硬體的按鍵事件。
Views
結果
對於按下空格鍵來暫停並繼續播放影片/其他媒體這類事件,您的應用程式現在可以做出回應。