Menjeda dan melanjutkan pemutaran media dengan Spasi keyboard eksternal
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Setiap kali aplikasi Anda memutar file media, pengguna harus dapat menjeda dan melanjutkan
pemutaran dengan menekan Spasi pada keyboard fisik.
Merespons peristiwa penekanan tombol
Aplikasi berbasis Jetpack Compose atau tampilan merespons penekanan tombol keyboard dengan
cara yang sama: aplikasi memproses peristiwa penekanan tombol, memfilter peristiwa, dan
merespons penekanan tombol seperti penekanan tombol Spasi.
1. Memproses peristiwa keyboard
Compose
Dengan Jetpack Compose, gunakan pengubah onPreviewKeyEvent atau
onKeyEvent dalam tata letak yang mengelola penekanan tombol:
Metode ini dipanggil setiap kali tombol yang ditekan dilepas, sehingga terpicu hanya satu kali untuk setiap penekanan tombol.
2. Memfilter penekanan tombol Spasi
Di dalam metode pengubah Compose onPreviewKeyEvent dan onKeyEvent atau
metode onKeyUp() tampilan, filter KeyEvent.KEYCODE_SPACE untuk mengirim
peristiwa yang benar ke komponen media:
onPreviewKeyEvent: Pengubah yang memungkinkan komponen menangkap
peristiwa tombol hardware saat komponen tersebut (atau salah satu turunannya) difokuskan.
onKeyEvent: Serupa dengan onPreviewKeyEvent, pengubah yang memungkinkan
komponen menangkap peristiwa tombol hardware saat komponen (atau salah satu
turunan) difokuskan.
Tampilan
onKeyUp(): Pengendali peristiwa yang dipanggil saat tombol dirilis dan tidak ditangani
oleh tampilan (seperti TextView) dalam aktivitas.
Hasil
Aplikasi Anda kini dapat merespons penekanan tombol Spasi untuk menjeda dan melanjutkan
video atau media lainnya.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Pause and resume media playback with external keyboard Spacebar\n\nWhenever your app plays a media file, users should be able to pause and resume\nplayback by pressing the \u003ckbd\u003eSpacebar\u003c/kbd\u003e on a physical keyboard.\n\nRespond to keypress events\n--------------------------\n\nApps based on Jetpack Compose or views respond to keyboard key presses in\nsimilar ways: the app listens for keypress events, filters the events, and\nresponds to keypresses such as a \u003ckbd\u003eSpacebar\u003c/kbd\u003e keypress.\n\n### 1. Listen for keyboard events\n\n**Compose**\n\nWith Jetpack Compose, use either the [`onPreviewKeyEvent`](/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).onPreviewKeyEvent(kotlin.Function1)) or the\n[`onKeyEvent`](/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).onKeyEvent(kotlin.Function1)) modifier within the layout that manages the keystroke: \n\n Column(modifier = Modifier.onPreviewKeyEvent { event -\u003e\n if (event.type == KeyEventType.KeyUp) {\n ...\n }\n ...\n })\n\nor \n\n Column(modifier = Modifier.onKeyEvent { event -\u003e\n if (event.type == KeyEventType.KeyUp) {\n ...\n }\n ...\n })\n\n| **Note:** The main difference between the two modifiers is where the event is dispatched if the modifier does not consume it: \n|\n| - `onPreviewKeyEvent` --- Dispatches the event to its first child\n| - `onKeyEvent` --- Dispatches the event to the composable's parent\n\n**Views**\n\nIn an activity in your app, override the [`onKeyUp()`](/reference/kotlin/android/app/Activity#onkeyup) method: \n\n### Kotlin\n\n```kotlin\noverride fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {\n ...\n}\n```\n\n### Java\n\n```java\n@Override\npublic boolean onKeyUp(int keyCode, KeyEvent event) {\n ...\n}\n```\n\nThe method is invoked every time a pressed key is released, so it fires exactly\nonce for every keystroke.\n| **Caution:** Do not use the [`onKeyDown()`](/reference/kotlin/android/app/Activity#onkeydown) method, which fires repeatedly as long as the key is pressed.\n\n### 2. Filter \u003ckbd\u003eSpacebar\u003c/kbd\u003e presses\n\nInside the Compose `onPreviewKeyEvent` and `onKeyEvent` modifier methods or\nviews `onKeyUp()` method, filter for [`KeyEvent.KEYCODE_SPACE`](/reference/kotlin/android/view/KeyEvent#keycode_space) to send the\ncorrect event to your media component:\n\n**Compose** \n\n Column(modifier = Modifier.onPreviewKeyEvent { event -\u003e\n if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {\n ...\n }\n ...\n })\n\nor \n\n Column(modifier = Modifier.onKeyEvent { event -\u003e\n if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {\n ...\n }\n ...\n })\n\n**Views** \n\n### Kotlin\n\n```kotlin\nif (keyCode == KeyEvent.KEYCODE_SPACE) {\n togglePlayback()\n return true\n}\nreturn false\n```\n\n### Java\n\n```java\nif (keyCode == KeyEvent.KEYCODE_SPACE) {\n togglePlayback();\n return true;\n}\nreturn false;\n```\n| **Note:** Return `true` from the `onKeyUp()` method if your code manages the event and you don't want the event to propagate any further. Return `false` if you want to allow propagation of the event so that other components can manage the event.\n\nKey points\n----------\n\n- [`KEYCODE_SPACE`](/reference/kotlin/android/view/KeyEvent#keycode_space): Key code constant for the \u003ckbd\u003eSpacebar\u003c/kbd\u003e.\n\n**Compose**\n\n- [`onPreviewKeyEvent`](/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).onPreviewKeyEvent(kotlin.Function1)): Modifier that enables a component to intercept hardware key events when it (or one of its children) is focused.\n- [`onKeyEvent`](/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).onKeyEvent(kotlin.Function1)): Similar to `onPreviewKeyEvent`, modifier that enables a component to intercept hardware key events when the component (or one of its children) is focused.\n\n**Views**\n\n- [`onKeyUp()`](/reference/kotlin/android/app/Activity#onkeyup): Event handler called when a key is released and not handled by a view (such as [`TextView`](/reference/kotlin/android/widget/TextView)) within an activity.\n\n### Results\n\nYour app can now respond to \u003ckbd\u003eSpacebar\u003c/kbd\u003e key presses to pause and resume\na video or other media."]]