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 ein Flag setzen, um das Display manuell eingeschaltet zu lassen.
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.
Du kannst den Ansatz verwenden, der für deine App am besten geeignet ist. Der Vorteil, wenn du das Flag programmatisch in deiner Aktivität festlegst, besteht darin, dass du es später programmatisch löschen und so das Ausschalten des Bildschirms ermöglichen kannst.
Wenn eine App mit dem Flag FLAG_KEEP_SCREEN_ON in den Hintergrund wechselt, kann das Display normal ausgeschaltet werden. In diesem Fall müssen Sie das Flag nicht explizit löschen. Wenn Ihre App den Bildschirm nicht mehr eingeschaltet lassen 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 Vordergrundaktivität FLAG_KEEP_SCREEN_ON nicht festlegt, wechselt das Gerät nach einer gewissen Zeit der Inaktivität automatisch in den Inaktivmodus.