Подтвердить что ты не робот

Храните экран в течение всей моей активности

У меня есть три действия в моем приложении. Я хочу, чтобы экран не спал, когда он находится во втором действии. Экран не должен исчезать во втором действии, если клавиша блокировки не будет нажата вручную. Я прошел через многие ссылки, но мне кажется неясным.

4b9b3361

Ответ 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();

Подробнее об этом на ссылка