Ответы:
Это требует, чтобы вы дали своему приложению дополнительное разрешение, и очень легко ввести ошибки, когда вы случайно удерживаете блокировку пробуждения и, таким образом, оставляете экран включенным.
Намного, намного лучше использовать флаг окна 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#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другому не получится!
v.setKeepScreenOn(true);кажется, единственный способ сделать это для полноэкранного диалогового фрагмента
Другое решение - добавить android:keepScreenOn="true"( документацию ) к представлениям, которые должны держать экран включенным.
Позволяет немного более детально контролировать, какие просмотры остаются, а какие нет. Таким образом вы даже можете ссылаться на настройку из файла ресурсов.