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

Consulta también