Ciertas apps necesitan mantener la pantalla encendida, como las apps de juegos o de cine. Algunas APIs de Android mantienen la pantalla encendida automáticamente. En otros casos, puedes establecer una marca para mantener la pantalla encendida de forma manual.
Cómo mantener la pantalla encendida de forma manual
Para mantener la pantalla del dispositivo encendida, establece la marca FLAG_KEEP_SCREEN_ON
en tu actividad. Esta marca solo se puede establecer en una actividad, nunca en un servicio ni en otro componente de la app. Por ejemplo:
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); } }
Otra forma de mantener la pantalla encendida es configurar el atributo android:keepScreenOn
en el archivo en formato XML de diseño de tu aplicación:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
El uso de android:keepScreenOn="true"
equivale a usar FLAG_KEEP_SCREEN_ON
.
Puedes usar el enfoque que se adapte mejor a tu app. La ventaja de configurar la marca programáticamente en tu actividad es que te brinda la opción de borrar el marcador más adelante de manera programática, lo que permite que se apague la pantalla.
Si una app con la marca FLAG_KEEP_SCREEN_ON
pasa a segundo plano, el sistema permite que la pantalla se apague de forma normal. No es necesario borrar la marca de forma explícita en este caso. Si tu app ya no necesita mantener la pantalla encendida, debes borrar la marca llamando a clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
.
Modo ambiente para TV
En dispositivos de TV, usa FLAG_KEEP_SCREEN_ON
para evitar que el dispositivo entre en el Modo ambiente durante la reproducción de video activa. Si la actividad en primer plano no establece FLAG_KEEP_SCREEN_ON
, el dispositivo entra automáticamente en el modo ambiente después de un período de inactividad.