Не выключать экран

Некоторым приложениям, например играм или видеопроигрывателям, требуется, чтобы экран не отключался. Некоторые API Android автоматически поддерживают экран включенным. В других случаях вы можете установить флаг, чтобы вручную оставить экран включенным.

Как вручную настроить, чтобы экран не выключался

Чтобы экран устройства не отключался, установите флаг FLAG_KEEP_SCREEN_ON в действии. Этот флаг можно установить только в действии, но не в сервисе или другом компоненте приложения. Пример:

class MainActivity : Activity() {

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

Ещё один способ не дать экрану выключиться – задать атрибут android:keepScreenOn в XML-файле макета приложения:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">
    ...
</RelativeLayout>

Использование android:keepScreenOn="true" эквивалентно использованию FLAG_KEEP_SCREEN_ON. Вы можете использовать любой подход, который лучше всего подходит для вашего приложения. Преимущество программной установки флага в вашей активности заключается в том, что она дает вам возможность программно очистить флаг позже и тем самым позволить экрану выключиться.

Если приложение с флагом FLAG_KEEP_SCREEN_ON переходит в фоновый режим, система позволяет экрану выключиться в обычном режиме. В этом случае вам не нужно явно снимать флажок. Если приложению больше не нужно держать экран включенным, очистите флаг, вызвав clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

Спящий режим для телевизора

На телевизорах используйте FLAG_KEEP_SCREEN_ON, чтобы устройство не переходило в спящий режим во время воспроизведения видео. Если для активного действия на переднем плане не задано свойство FLAG_KEEP_SCREEN_ON, устройство автоматически переходит в спящий режим после периода бездействия.

Дополнительная информация