Force Screen On - PullRequest
       33

Force Screen On

107 голосов
/ 25 января 2010

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

Ответы [ 3 ]

326 голосов
/ 25 января 2010

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

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

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

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

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

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

31 голосов
/ 28 августа 2013

На этот вопрос уже отличный ответ @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);
       }

Документы 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's Visibility must be visible в противном случае это не будет работать!

16 голосов
/ 05 апреля 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...