Pemutaran media dijeda dan dilanjutkan dengan Spasi keyboard

Ikon rating bintang empat

Pengoptimalan layar besar mencakup kemampuan untuk menangani input keyboard eksternal, seperti menanggapi saat Spacebar ditekan untuk menjeda atau melanjutkan pemutaran video dan media lainnya. Fitur ini sangat berguna untuk tablet, yang sering terhubung ke keyboard eksternal, dan Chromebook, yang biasanya dilengkapi dengan keyboard eksternal tetapi dapat digunakan dalam mode tablet.

Jika media adalah satu-satunya elemen jendela (seperti pemutaran video layar penuh), tanggapi peristiwa penekanan tombol di tingkat layar di Jetpack Compose.

Praktik terbaik

Setiap kali aplikasi Anda memutar file media, pengguna harus dapat menjeda dan melanjutkan pemutaran dengan menekan Spasi pada keyboard fisik.

Bahan

  • KEYCODE_SPACE: Konstanta kode tombol untuk Spasi.
  • onPreviewKeyEvent: Modifier yang memungkinkan komponen menangkap peristiwa tombol hardware saat komponen tersebut (atau salah satu turunannya) difokuskan.
  • onKeyEvent: Serupa dengan onPreviewKeyEvent, Modifier ini memungkinkan komponen untuk menangkap peristiwa tombol hardware saat komponen tersebut (atau salah satu turunannya) difokuskan.

Langkah

Untuk merespons penekanan tombol keyboard di Jetpack Compose, aplikasi Anda harus memproses peristiwa penekanan tombol, memfilter peristiwa, dan merespons penekanan tombol yang dipilih, seperti penekanan tombol Spasi.

1. Memproses peristiwa keyboard

Dengan Jetpack Compose, Anda dapat memanfaatkan pengubah onPreviewKeyEvent atau onKeyEvent dalam komponen yang mengelola penekanan tombol.

Perbedaan utama antara kedua pengubah adalah tempat peristiwa dikirim jika pengubah tidak menggunakannya:

  • onPreviewKeyEvent — Mengirimkan peristiwa ke turunan pertamanya.
  • onKeyEvent — Mengirimkan peristiwa ke induk composable.

2. Memfilter dan menangani penekanan tombol Spasi

Di dalam lambda pengubah onPreviewKeyEvent atau onKeyEvent, filter peristiwa tombol tempat rilis tombol (KeyEventType.KeyUp) cocok dengan Spasi (Key.Spacebar).

Tampilkan true jika kode Anda menangani peristiwa tersebut dan Anda tidak ingin peristiwa tersebut disebarkan lebih lanjut. Tampilkan false untuk mengizinkan komponen lain menangani peristiwa tersebut.

  • Opsi A: Menggunakan onPreviewKeyEvent

    Column(
        modifier = Modifier.onPreviewKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

  • Opsi B: Menggunakan onKeyEvent

    Column(
        modifier = Modifier.onKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

Hasil

Aplikasi Anda kini dapat merespons penekanan tombol Spasi untuk menjeda dan melanjutkan video atau media lainnya.

Referensi lainnya

Untuk mempelajari peristiwa keyboard lebih lanjut dan cara mengelolanya, lihat Menangani input keyboard.