Это требует, чтобы вы дали своему приложению дополнительное разрешение, и очень легко ввести ошибки, когда вы случайно удерживаете блокировку пробуждения и, таким образом, оставляете экран включенным.
Намного, намного лучше использовать флаг окна FLAG_KEEP_SCREEN_ON, который вы можете включить в окне своей активности onCreate()следующим образом:
Это гарантирует, что экран останется включенным, пока ваше окно находится на переднем плане, и только пока оно находится на переднем плане. Это значительно упрощает этот общий вариант использования, устраняя любое жонглирование, которое вам нужно делать при переходе вашего приложения между состояниями.
Это мешает устройству спать? Если это так, то распространенность WAKE_LOCK кажется мне шокирующей ошибкой!
Майкл Крамер
32
Да, экран остается включенным и не дает устройству спать.
hackbod
1
Да, вы можете удалить флаг с помощью соответствующего API окна. Вам не нужно беспокоиться о том, чтобы что-либо было нарисовано, фреймворк сделает это при необходимости.
hackbod
1
@hakbod: это сработает для сохранения экрана живым, но как насчет экрана, который спит, разбудит ли он его и сохранит ли ????
Kavitha
5
@ KC202 вы можете использовать WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, чтобы экран включался при отображении вашего окна. Также часто используется с FLAG_DISMISS_KEYGUARD и / или FLAG_SHOW_WHEN_LOCKED.
hackbod
34
На этот вопрос уже есть отличный ответ от @hackbod!
Я отвечаю на этот вопрос двумя дополнительными решениями!
1.implementation используяsetKeepScreenOn() in java code
@Overrideprotectedvoid 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);}
1. Неважно, что keepScreenOnследует использовать на Main/Root/Parent Viewнем можно использовать с любым child viewбудет работать так же, как он работает вParent view
2. Дело только в том, что по- View's Visibility must be visibleдругому не получится!
Примечание - v.setKeepScreenOn(true);кажется, единственный способ сделать это для полноэкранного диалогового фрагмента
Тим
16
Другое решение - добавить android:keepScreenOn="true"( документацию ) к представлениям, которые должны держать экран включенным.
Позволяет немного более детально контролировать, какие просмотры остаются, а какие нет. Таким образом вы даже можете ссылаться на настройку из файла ресурсов.
Ответы:
ПОЖАЛУЙСТА, НЕ ИСПОЛЬЗУЙТЕ WAKE LOCK
Это требует, чтобы вы дали своему приложению дополнительное разрешение, и очень легко ввести ошибки, когда вы случайно удерживаете блокировку пробуждения и, таким образом, оставляете экран включенным.
Намного, намного лучше использовать флаг окна
FLAG_KEEP_SCREEN_ON
, который вы можете включить в окне своей активностиonCreate()
следующим образом:Это гарантирует, что экран останется включенным, пока ваше окно находится на переднем плане, и только пока оно находится на переднем плане. Это значительно упрощает этот общий вариант использования, устраняя любое жонглирование, которое вам нужно делать при переходе вашего приложения между состояниями.
источник
На этот вопрос уже есть отличный ответ от @hackbod!
Я отвечаю на этот вопрос двумя дополнительными решениями!
Существующее решение:
Дополнительные решения:
мы можем использовать
keepScreenOn
1.
implementation
используяsetKeepScreenOn() in java code
Документы http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Добавление
keepScreenOn
кxml layout
Документы 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
другому не получится!источник
v.setKeepScreenOn(true);
кажется, единственный способ сделать это для полноэкранного диалогового фрагментаДругое решение - добавить
android:keepScreenOn="true"
( документацию ) к представлениям, которые должны держать экран включенным.Позволяет немного более детально контролировать, какие просмотры остаются, а какие нет. Таким образом вы даже можете ссылаться на настройку из файла ресурсов.
источник