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à.