Как предотвратить автоматическую блокировку экрана на Android по коду? - программирование
Подтвердить что ты не робот

Как предотвратить автоматическую блокировку экрана на Android по коду?

В моем приложении длительный процесс загрузки, и если устройства помещаются в блокировку экрана, мой процесс по какой-то причине останавливается.

Как я могу предотвратить автоматическое блокирование экрана устройства?

4b9b3361

Ответ 1

вы должны объявить это использование - разрешение на AndroidManifest:

<uses-permission android:name="android.permission.WAKE_LOCK" />

И в вашем коде Упражнение:

PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();

Не забудьте освободить эту блокировку, когда ваше приложение приостановлено или уничтожено, выполнив следующее:

wakeLock.release();

Обычно он предложил вызвать метод приобретать внутри onResume() вашей активности и release в onPause(). Таким образом мы гарантируем, что наше приложение по-прежнему хорошо работает в случае приостановки или возобновления.

Ответ 2

Другой способ сохранить блокировку экрана без необходимости запрашивать разрешение в самом явном виде:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Выполняете ли вы длительный процесс загрузки в потоке пользовательского интерфейса? Что-то не кажется правильным - если процесс настолько длинный, что тайм-аут блокировки экрана и ваш процесс завершаются, возможно, он должен пойти в фоновом режиме.

Ответ 3

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();

в androidmanifest:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

ИЛИ

Следуйте этой ссылке

Ответ 4

один интересный вариант, который еще не упоминался, - это

View#setKeepScreenOn(boolean onOff)

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

Ответ 5

Следующая строка позволяет вашему телефону быть включенным, когда приложение находится на переднем плане

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Следующие инструкции позволяют отключить экран блокировки при нажатии кнопки блокировки. Класс KeyguardLock устарел на уровне API 13

/*onCreate*/
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); // Deprecated :/
lock.disableKeyguard();

И в вашем манифесте:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

Ответ 6

Перейдите с защитным кодом ключа, который он отлично работает,

Просто вставьте код в метод onCreate в ваш файл mainactivity И Разрешение в файле манифеста android