Force Screen On

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

3 ответа

Решение

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

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

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

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

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

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

Этот вопрос уже имеет отличный ответ от @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

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

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

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

2. Дело только в том, чтоView's Visibility must be visible в противном случае это не сработает!

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

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

Используйте строку кода ниже в вашем методе OnCreate()

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Другие вопросы по тегам