Як змусити екран залишатися активним і не вимикатися під час роботи програми?
Як змусити екран залишатися активним і не вимикатися під час роботи програми?
Відповіді:
Це вимагає надання додатку додаткового дозволу, і дуже легко вводити помилки там, де ви випадково залишаєтесь у положенні блокування, і таким чином залишаєте екран увімкненим.
Набагато краще використовувати прапор вікна 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"( документацію ) до представлень, які потребують утримання екрана.
Дозволяє трохи детальніше керувати, з точки зору того, які перегляди залишаються, а які ні. Ви навіть можете посилатися на налаштування з файлу ресурсу таким чином.