У меня есть три действия в моем приложении. Я хочу, чтобы экран не спал, когда он находится во втором действии. Экран не должен исчезать во втором действии, если клавиша блокировки не будет нажата вручную. Я прошел через многие ссылки, но мне кажется неясным.
Храните экран в течение всей моей активности
Ответ 1
Как обсуждалось в учебнике Android Keep the Screen On, вы можете сделать это несколькими способами. Вы можете установить FLAG_KEEP_SCREEN_ON в окне активности:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
эквивалентом XML для этого является добавление атрибута android:keepScreenOn="true"
в корневой вид вашего макета активности. Преимущество установки программного кода в том, что вы можете использовать
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
когда вам больше не нужно заставлять экран оставаться включенным во время работы.
Другим способом управления экраном (и некоторыми другими ресурсами) является использование блокировки слежения:
mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();
В манифесте должно быть включено это разрешение:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Однако, как обсуждалось в учебнике, блокировка слежения более подходит для других случаев использования (таких как служба или фоновая задача, требующая, чтобы процессор продолжал работать, пока экран выключен).
Ответ 2
Я нахожу это решение намного проще:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
...
android:keepScreenOn="true"> // Add this line
Просто добавьте это в свой макет действий XML.
Ответ 3
Как я понимаю ваш вопрос, я думаю, вы должны использовать WAKE_LOCK
для него в своем приложении.
Что-то вроде,
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
И в файле приложения manifest.xml добавьте это,
<uses-permission android:name="android.permission.WAKE_LOCK" />
Ответ 4
попробуйте использовать этот
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Ответ 5
Этот код устарел, используйте вместо этого:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
После того, как вы закончите с использованием, позвоните (лучшее решение - вызвать этот метод в методе onDestroy для некоторой активности):
wl.release();
Подробнее об этом на ссылка