В моем приложении длительный процесс загрузки, и если устройства помещаются в блокировку экрана, мой процесс по какой-то причине останавливается.
Как я могу предотвратить автоматическое блокирование экрана устройства?
В моем приложении длительный процесс загрузки, и если устройства помещаются в блокировку экрана, мой процесс по какой-то причине останавливается.
Как я могу предотвратить автоматическое блокирование экрана устройства?
вы должны объявить это использование - разрешение на 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