Как заставить экран оставаться активным и не отключиться во время работы моего приложения?
Экран принудительного включения
Ответ 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"
(документации) к представлениям, которые необходимо сохранить на экране.
Позволяет немного более подробный контроль, с точки зрения которого видение остается, а какие нет. Вы можете даже ссылаться на параметр из файла ресурсов таким образом.