Menjaga layar agar tetap aktif

Aplikasi tertentu harus menjaga layar agar tetap aktif, seperti aplikasi film atau game. Beberapa Android API otomatis membuat layar tetap aktif untuk Anda. Dalam kasus lain, Anda dapat menggunakan pengubah Compose atau menyetel flag untuk membuat layar tetap aktif secara manual.

Membuat layar tetap aktif di Compose

Jika aplikasi Anda menggunakan Jetpack Compose, terapkan pengubah keepScreenOn ke composable. Pengubah tersedia di Compose UI 1.9.0 dan yang lebih tinggi. Layar tetap aktif selama pengubah menjadi bagian dari komposisi. Jika tidak ada composable yang menggunakan pengubah, Compose akan berhenti membuat layar tetap aktif secara otomatis.

Agar layar tetap aktif hanya pada waktu tertentu, terapkan pengubah secara bersyarat. Contoh berikut membuat layar tetap aktif hanya saat video diputar:

@Composable
fun VideoPlayer(isPlaying: Boolean, modifier: Modifier = Modifier) {
    Box(
        modifier = modifier
            // Keep the screen on only while the video plays.
            .then(if (isPlaying) Modifier.keepScreenOn() else Modifier)
    ) {
        // Video surface and playback controls.
    }
}

Pengubah menetapkan properti tampilan yang sama dengan atribut android:keepScreenOn yang dijelaskan di bagian berikutnya, sehingga layar tetap aktif hanya saat jendela aplikasi Anda terlihat. Tindakan ini tidak menghapus flag FLAG_KEEP_SCREEN_ON yang ditetapkan aplikasi Anda di jendela.

Membuat layar tetap aktif secara manual

Agar layar perangkat tetap aktif, setel flag FLAG_KEEP_SCREEN_ON dalam aktivitas Anda. Flag ini hanya dapat disetel dalam aktivitas, bukan dalam layanan atau komponen aplikasi lainnya. Contoh:

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    }
}

Cara lain untuk menjaga layar tetap aktif adalah dengan menetapkan atribut android:keepScreenOn dalam file XML tata letak aplikasi Anda:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">
    ...
</RelativeLayout>

Menggunakan android:keepScreenOn="true" setara dengan menggunakan FLAG_KEEP_SCREEN_ON. Anda dapat menggunakan pendekatan mana pun yang terbaik untuk aplikasi Anda. Keuntungan menyetel tanda secara terprogram dalam aktivitas Anda adalah memberi Anda opsi untuk menghapus tanda secara terprogram nanti, sehingga layar dapat nonaktif.

Jika aplikasi dengan flag FLAG_KEEP_SCREEN_ON beralih ke latar belakang, sistem akan mengizinkan layar nonaktif secara normal. Dalam hal ini, Anda tidak perlu menghapus flag secara eksplisit. Jika aplikasi Anda tidak perlu lagi membuat layar tetap aktif, Anda harus menghapus flag dengan memanggil clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

Mode Standby untuk TV

Di perangkat TV, gunakan FLAG_KEEP_SCREEN_ON untuk mencegah perangkat masuk ke Mode Standby selama pemutaran video aktif. Jika aktivitas latar depan tidak menetapkan FLAG_KEEP_SCREEN_ON, perangkat akan otomatis memasuki Mode Standby setelah tidak ada aktivitas selama beberapa waktu.

Lihat juga