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