Menjeda dan melanjutkan pemutaran media dengan Spasi keyboard eksternal

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:

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

atau

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

Tampilan

Dalam aktivitas di aplikasi Anda, ganti metode onKeyUp():

Kotlin

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    ...
}

Java

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    ...
}

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:

Compose

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

atau

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

Tampilan

Kotlin

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback()
    return true
}
return false

Java

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback();
    return true;
}
return false;

Poin utama

Compose

  • 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.