Display eingeschaltet lassen

Bei bestimmten Apps, z. B. Spielen oder Film-Apps, muss das Display eingeschaltet bleiben. Einige Android-APIs sorgen automatisch dafür, dass das Display eingeschaltet bleibt. In anderen Fällen können Sie einen Compose-Modifikator verwenden oder ein Flag setzen, um das Display manuell eingeschaltet zu lassen.

Bildschirm in „Compose“ eingeschaltet lassen

Wenn Ihre App Jetpack Compose verwendet, wenden Sie den Modifikator keepScreenOn auf eine komponierbare Funktion an. Der Modifikator ist in Compose UI 1.9.0 und höher verfügbar. Der Bildschirm bleibt eingeschaltet, solange der Modifikator Teil der Komposition ist. Wenn kein Composable den Modifikator verwendet, wird das Display nicht mehr automatisch eingeschaltet.

Wenn das Display nur manchmal eingeschaltet bleiben soll, wenden Sie den Modifikator bedingt an. Im folgenden Beispiel bleibt das Display nur während der Wiedergabe eines Videos eingeschaltet:

@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.
    }
}

Der Modifikator legt dasselbe Ansichtsattribut fest wie das im nächsten Abschnitt beschriebene Attribut android:keepScreenOn. Das Display bleibt also nur eingeschaltet, solange das Fenster Ihrer App sichtbar ist. Das Flag FLAG_KEEP_SCREEN_ON, das Ihre App für das Fenster festlegt, wird nicht gelöscht.

Display manuell eingeschaltet lassen

Wenn das Display des Geräts eingeschaltet bleiben soll, setze das Flag FLAG_KEEP_SCREEN_ON in deiner Aktivität. Dieses Flag darf nur in einer Aktivität festgelegt werden, nie in einem Dienst oder einer anderen App-Komponente. Beispiel:

class MainActivity : Activity() {

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

Eine weitere Möglichkeit, das Display eingeschaltet zu lassen, besteht darin, das Attribut android:keepScreenOn in der Layout-XML-Datei Ihrer Anwendung festzulegen:

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

Die Verwendung von android:keepScreenOn="true" entspricht der Verwendung von FLAG_KEEP_SCREEN_ON. Sie können den Ansatz verwenden, der für Ihre App am besten geeignet ist. Der Vorteil, wenn Sie das Flag programmatisch in Ihrer Aktivität festlegen, besteht darin, dass Sie das Flag später programmatisch löschen und so das Ausschalten des Bildschirms ermöglichen können.

Wenn eine App mit dem Flag FLAG_KEEP_SCREEN_ON in den Hintergrund wechselt, lässt das System zu, dass das Display normal ausgeschaltet wird. In diesem Fall müssen Sie das Flag nicht explizit löschen. Wenn der Bildschirm nicht mehr eingeschaltet bleiben muss, sollten Sie das Flag durch Aufrufen von clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) löschen.

Inaktivmodus für Fernseher

Verwende auf TV-Geräten FLAG_KEEP_SCREEN_ON, um zu verhindern, dass das Gerät während der aktiven Videowiedergabe in den Inaktivmodus wechselt. Wenn die Aktivität im Vordergrund nicht FLAG_KEEP_SCREEN_ON festlegt, wechselt das Gerät nach einer gewissen Zeit der Inaktivität automatisch in den Inaktivmodus.

Weitere Informationen