Mantieni lo schermo attivo

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

Mantenere lo schermo acceso 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:

Kotlin

class MainActivity : Activity() {

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

Java

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  }
}

Un altro modo per mantenere attivo lo schermo è impostare l'attributo android:keepScreenOn nel file XML di layout della tua 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 a utilizzare FLAG_KEEP_SCREEN_ON. Puoi utilizzare l'approccio più adatto alla tua app. Il vantaggio di impostare il flag programmaticamente nella tua attività è che ti offre la possibilità di cancellarlo in un secondo momento e quindi di disattivare lo schermo.

Se un'app con il flag FLAG_KEEP_SCREEN_ON passa in background, il sistema consente lo spegnimento normale dello schermo. In questo caso non è necessario cancellare esplicitamente il flag. Se la tua app non ha più bisogno di mantenere lo schermo attivo, 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 di video attiva. Se l'attività in primo piano non è impostata su FLAG_KEEP_SCREEN_ON, il dispositivo entra automaticamente in modalità Ambient dopo un periodo di inattività.

Vedi anche