Mantieni lo schermo attivo

Alcune app, come i giochi o le app di film, devono mantenere lo schermo acceso. Alcune API Android mantengono automaticamente lo schermo acceso. In altri casi, puoi impostare un flag per mantenere lo schermo acceso manualmente.

Mantieni lo schermo attivo manualmente

Per mantenere attivo lo schermo del dispositivo, imposta il flag FLAG_KEEP_SCREEN_ON nella tua attività. Questo flag può essere impostato solo in un'attività, mai in un servizio o in un altro componente dell'app. Ad esempio:

class MainActivity : Activity() {

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

Un altro modo per mantenere lo schermo attivo è impostare l'attributo android:keepScreenOn nel file XML di layout dell'applicazione:

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

L'utilizzo di android:keepScreenOn="true" equivale all'utilizzo di FLAG_KEEP_SCREEN_ON. Puoi utilizzare l'approccio più adatto alla tua app. Il vantaggio di impostare il flag in modo programmatico nella tua attività è che ti offre la possibilità di cancellarlo in un secondo momento, consentendo così lo spegnimento dello schermo.

Se un'app con il flag FLAG_KEEP_SCREEN_ON passa in background, il sistema consente allo schermo di spegnersi normalmente. In questo caso, non è necessario cancellare esplicitamente il flag. Se la tua app non ha più bisogno di tenere lo schermo acceso, devi cancellare il flag chiamando clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

Modalità Ambient per la TV

Sui dispositivi TV, utilizza FLAG_KEEP_SCREEN_ON per impedire al dispositivo di passare alla modalità Ambient durante la riproduzione attiva di video. Se l'attività in primo piano non imposta FLAG_KEEP_SCREEN_ON, il dispositivo entra automaticamente in modalità Ambient dopo un periodo di inattività.

Vedi anche