Экран принудительного включения

Как заставить экран оставаться активным и не отключиться во время работы моего приложения?

Ответ 1

ПОЖАЛУЙСТА, НЕ ИСПОЛЬЗУЙТЕ БЛОКИРОВКУ WAKE

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

Намного лучше использовать флаг окна FLAG_KEEP_SCREEN_ON, который вы можете включить в своем окне активности в onCreate() следующим образом:

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

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

Ответ 2

Этот вопрос уже имеет большой ответ от @hackbod!

Я отвечаю на этот вопрос двумя дополнительными решениями!

Существующее решение:

@Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);    
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

Дополнительные решения:

мы можем использовать keepScreenOn

1. implementation с помощью setKeepScreenOn() in java code

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // or any View (in case generated programmatically ) 
        View v = getLayoutInflater().inflate(R.layout.driver_home, null);

        v.setKeepScreenOn(true);
        setContentView(v);
       }

Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn (boolean)

2. Добавление keepScreenOn в xml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true" >

Документы http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

Примечание (некоторые полезные пункты):

1. Не важно, что keepScreenOn следует использовать на Main/Root/Parent View , он может использоваться с любым child view, будет работать так же, как и в Parent view

2. Дело только в том, что View Visibility must be visible другое не будет работать!

Ответ 3

Другим решением является добавление android:keepScreenOn="true" (документации) к представлениям, которые необходимо сохранить на экране.

Позволяет немного более подробный контроль, с точки зрения которого видение остается, а какие нет. Вы можете даже ссылаться на параметр из файла ресурсов таким образом.