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

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

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

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