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

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

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

Solutions Collecting From Web of "Как предотвратить автоматическую блокировку экрана на андроиде по коду?"

Вы должны объявить это использование – разрешение на 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 () . Таким образом мы гарантируем, что наше приложение по-прежнему хорошо работает в случае приостановки или возобновления.

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

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

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

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

В androidmanifest:

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

ИЛИ

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

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

 View#setKeepScreenOn(boolean onOff) 

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

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

 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"/> 

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

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