Cómo mantener encendida la pantalla

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 un parámetro para mantener la pantalla encendida de forma manual.

Mantén la pantalla encendida de forma manual

Para mantener encendida la pantalla del dispositivo, 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:

class MainActivity : Activity() {

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

Otra forma de mantener la pantalla encendida es configurar el atributo android:keepScreenOn en el archivo 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>

Usar android:keepScreenOn="true" equivale a usar FLAG_KEEP_SCREEN_ON. Puedes usar el enfoque que mejor se adapte a tu app. La ventaja de configurar la marca de manera programática en tu actividad es que te brinda la opción de borrarla más adelante y, de esa manera, permitir que la pantalla se apague.

Si una app con la marca FLAG_KEEP_SCREEN_ON pasa a segundo plano, el sistema permite que la pantalla se apague normalmente. En este caso, no es necesario que borres la marca de forma explícita. 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 activa de videos. Si la actividad en primer plano no establece FLAG_KEEP_SCREEN_ON, el dispositivo ingresa automáticamente al modo ambiente después de un período de inactividad.

Consulta también