เมื่อใดก็ตามที่แอปเล่นไฟล์สื่อ ผู้ใช้ควรจะหยุดชั่วคราวและเล่นต่อ ได้โดยกด Spacebar บนแป้นพิมพ์จริง
ตอบสนองต่อเหตุการณ์การกดแป้น
แอปที่อิงตาม Jetpack Compose หรือ Views จะตอบสนองต่อการกดแป้นพิมพ์ใน ลักษณะที่คล้ายกัน โดยแอปจะรับฟังเหตุการณ์การกดแป้น กรองเหตุการณ์ และ ตอบสนองต่อการกดแป้น เช่น การกดแป้น Spacebar
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) { ... }
ระบบจะเรียกใช้เมธอดนี้ทุกครั้งที่ปล่อยแป้นที่กดไว้ ดังนั้นเมธอดนี้จะทำงาน 1 ครั้งต่อการกดแป้น 1 ครั้ง
2. กรองการกด Spacebar
ภายในเมธอดตัวปรับแต่ง onPreviewKeyEvent และ onKeyEvent ของ Compose หรือ
เมธอด onKeyUp() ของ Views ให้กรอง 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: ค่าคงที่รหัสแป้นสำหรับ Spacebar
Compose
onPreviewKeyEvent: ตัวปรับแต่งที่ช่วยให้คอมโพเนนต์สกัดกั้นเหตุการณ์คีย์ฮาร์ดแวร์ได้เมื่อคอมโพเนนต์ (หรือองค์ประกอบย่อยรายการใดรายการหนึ่ง) มีโฟกัสonKeyEvent: คล้ายกับonPreviewKeyEventซึ่งเป็นตัวปรับแต่งที่ช่วยให้คอมโพเนนต์สกัดกั้นเหตุการณ์คีย์ฮาร์ดแวร์ได้เมื่อคอมโพเนนต์ (หรือองค์ประกอบย่อยรายการใดรายการหนึ่ง) มีโฟกัส
Views
onKeyUp(): ตัวจัดการเหตุการณ์ที่เรียกใช้เมื่อปล่อยแป้นและไม่มีการจัดการ โดย View (เช่นTextView) ภายในกิจกรรม
ผลลัพธ์
ตอนนี้แอปสามารถตอบสนองต่อการกดแป้น Spacebar เพื่อหยุดชั่วคราวและเล่น วิดีโอหรือสื่ออื่นๆ ต่อได้แล้ว