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 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:
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 del 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"
è equivalente all'utilizzo di
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 attivare la 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à.