Держите экран включенным

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

API, которые поддерживают экран включенным

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

Это неполный список API, которые поддерживают включение экрана:

Вручную держать экран включенным

Чтобы экран устройства оставался включенным, установите флаг 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)
    }
}

Ява

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);
  }
}

Другой способ сохранить экран включенным — установить атрибут 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) .

Режим Ambient для телевизора

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

См. также

,

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

API, которые поддерживают экран включенным

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

Это неполный список API, которые поддерживают экран включенным:

Вручную держать экран включенным

Чтобы экран устройства оставался включенным, установите флаг 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)
    }
}

Ява

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);
  }
}

Другой способ сохранить экран включенным — установить атрибут 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) .

Режим Ambient для телевизора

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

См. также