Manter a tela ativada

Alguns apps precisam manter a tela ativada, por exemplo, os apps de jogos ou filmes. Algumas APIs do Android mantêm a tela ligada automaticamente. Em outros casos, você pode definir uma flag para manter a tela ligada manualmente.

Manter a tela ligada manualmente

Para manter a tela do dispositivo ligada, defina a flag FLAG_KEEP_SCREEN_ON na atividade. Essa flag só pode ser definida em uma atividade, nunca em um serviço ou outro componente do app. Exemplo:

class MainActivity : Activity() {

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

Outra maneira de manter a tela ligada é definir o atributo android:keepScreenOn no arquivo XML de layout do aplicativo:

<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" é equivalente a usar FLAG_KEEP_SCREEN_ON. Você pode usar a abordagem mais adequada para seu app. A vantagem de definir a flag de forma programática na atividade é que você pode limpar a flag mais tarde e, assim, permitir que a tela seja desativada.

Se um app com a flag FLAG_KEEP_SCREEN_ON entrar em segundo plano, o sistema vai permitir que a tela seja desligada normalmente. Não é necessário limpar explicitamente a flag nesse caso. Se o app não precisar mais manter a tela ligada, limpe a flag chamando clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

Modo ambiente para TV

Em dispositivos de TV, use FLAG_KEEP_SCREEN_ON para impedir que o dispositivo entre no modo ambiente durante a reprodução de vídeo ativa. Se a atividade em primeiro plano não definir FLAG_KEEP_SCREEN_ON, o dispositivo vai entrar automaticamente no modo ambiente após um período de inatividade.

Consulte também