Как запретить Android-устройству программно переходить в спящий режим?
Одним из вариантов является использование пробуждения от блокировки . Пример из документов:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
// screen and CPU will stay awake during this section
wl.release();
На этой странице также есть таблица , описывающая различные виды вейк-шоков.
Имейте в виду, что необходимо соблюдать осторожность при использовании замков. Убедитесь, что вы всегда release()
блокируете, когда закончите (или не на переднем плане). В противном случае ваше приложение может вызвать серьезную разрядку батареи и использование процессора.
Документация также содержит полезную страницу, которая описывает различные подходы к поддержанию устройства в неактивном состоянии и, когда вы решите его использовать. Если «запретить переход устройства в спящий режим» относится только к экрану (а не к тому, чтобы процессор оставался активным), тогда блокировка активизации, вероятно, больше, чем вам нужно.
Вы также должны быть уверены, что у вас есть манифесте установлено разрешение WAKE_LOCK , чтобы использовать этот метод.
Если вы просто хотите , чтобы предотвратить спящий режим на конкретном
View
, просто позвонитеsetKeepScreenOn(true)
по этомуView
или установитьkeepScreenOn
свойствоtrue
. Это предотвратит выключение экрана, пока онView
находится на экране. Для этого не требуется специального разрешения.источник
setKeepScreenOn(true)
эффект вступит в силу только тогда, когдаView
он виден.Я нашел другое рабочее решение: добавьте следующую строку в ваше приложение под событием onCreate.
Мой пример проекта Cordova выглядит так:
После этого мое приложение не будет спать, пока оно было открыто. Спасибо за ответ идет к xSus.
источник
android:keepScreenOn="true"
может быть лучшим вариантом иметь от макета XML.Дополнительная информация: https://developer.android.com/training/scheduling/wakelock.html
источник
Установите флажки в окне действий, как показано ниже
источник
Из корневой оболочки (например, оболочки adb) вы можете заблокировать с помощью:
После чего устройство будет бодрствовать, пока вы не выполните:
С той же строкой для «mylockname».
Обратите внимание, что это не помешает экрану стать черным, но будет препятствовать сну процессора.
Обратите внимание, что / sys / power / wake_lock предназначен для чтения и записи для пользовательского радио (1001), групповой системы (1000) и, конечно, root.
Ссылка здесь: http://lwn.net/Articles/479841/
источник
То, что сказал @eldarerathis, правильно во всех аспектах, блокировка от пробуждения является правильным способом удержания устройства от засыпания.
Я не знаю, что требуется вашему приложению, но очень важно подумать о том, как создать свое приложение, чтобы не заставлять телефон бодрствовать больше, чем вам нужно, иначе время работы от аккумулятора сильно сократится.
Я хотел бы указать вам на этот действительно хороший пример того, как использовать
AlarmManager
для запуска событий и пробуждения телефона и (вашего приложения), чтобы выполнить то, что вам нужно сделать, а затем снова заснуть: Alarm Manager (источник: commonsware.com)источник
Если вы являетесь пользователем Xamarin, это решение:
источник