Как предотвратить автоматическую блокировку экрана на андроид с помощью кода?
в моем приложении есть длительный процесс загрузки, и если устройства ставят на блокировку экрана, мой процесс останавливается по какой-то причине.
Как я могу предотвратить автоматическую блокировку экрана устройства?
6 ответов
вы должны объявить это использует-разрешение на 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() вашей деятельности и релиз метод onPause (). Таким образом, мы гарантируем что наше приложение по-прежнему хорошо работает в случае приостановки или возобновления.
другой способ сохранить блокировку экрана без необходимости запрашивать разрешение в манифесте:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
вы делаете свой длинный процесс загрузки в UI-потоке? Что - то не так-если процесс настолько длинный, что тайм-аут блокировки экрана и ваш процесс заканчивается, возможно, он должен идти в фоновом режиме.
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
в androidmanifest:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
или
соблюдать этой ссылке
следующая строка позволяет вашему телефону быть включен, когда приложение находится на переднем плане
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"/>
один интересный вариант, который еще не упоминали-это
View#setKeepScreenOn(boolean onOff)
метод. Это может использоваться динамически в любой момент во время выполнения приложения, например, для настройки режима экрана в зависимости от состояния приложения
Go с кодом Key guard работает отлично,
просто вставьте код в метод onCreate в файл mainactivity и Разрешение в файле манифеста Android