Где найти спящий режим в телефоне что. Что делать, если смартфон быстро разряжается

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

В каких случаях автоотключение экрана нежелательно

Однако нередко возникает ситуация, когда данная опция начинает раздражать. Например, при неспешном чтении с экрана, без пролистывания, он может потухнуть через полминуты и приходится нажимать кнопку включения, разблокировать устройство и искать необходимый фрагмент для продолжения. Также таймаут может мешать в следующих случаях:

  • просмотр фото и видео;
  • игры, в которых перерыв в действиях пользователя может занимать много времени (например, шахматы);
  • работа с навигационными картами при включенном GPS позиционировании.

Таймаут (анг.timeout) – перерыв в каком-либо действии, деятельности. Time – время, out – отсутствие, прекращение, бездеятельность. Используется для обозначения перерыва на определенное время.

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

Настройка спящего режима собственными средствами Android

Настроить время, после которого Android выключит экран и перейдет в спящий режим из-за бездействия пользователя, можно в системных настройках. Для этого необходимо перейти в настройки смартфона или планшета, хотя правильнее это должно звучать как «перейти в настройки Android» и выбрать раздел «Экран », где в подразделе «Спящий режим » выставить необходимое время или вообще выключить данную опцию, если возможность ее выключения предусмотрена производителем устройства.

На скриншотах приведены настройки таймаута планшета Huawei MediaPad T3 8, в котором нет возможности отключения спящего режима. В других гаджетах это может быть пункт «Никогда » или «Отключить спящий режим ».

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

Настройка отключения экрана сторонними средствами

В каталоге Google Play можно найти большое количество приложения для управления спящим режимом Android. Рассмотрим наиболее популярные из них.

Негаснущий экран

Небольшое и легкое приложение под названием «Негаснущий экран » отключает спящий режим и не дают потухнуть экрану во время работы заранее выбранных приложений.

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

Утилита корректно определяет установленное на смартфоне/планшете программное обеспечение, бесплатна и интуитивно понятна.

Интересное приложение, использующее фронтальную камеру, чтобы экран не отключался, пока пользователь в него смотрит. Камера под управлением Hold Screen On Demo следит за глазами пользователя и как только он перестает смотреть в экран, утилита его отключает.

В Hold Screen On Demo есть возможность настроить список конкретных приложений, при работе которых камера будет отслеживать взгляд пользователя и отключать экран, если пользователь отлучится. Приложение бесплатно и без рекламы

Если данные утилиты вам не подходят, то в разделе Google Play «Похожие » всегда можно найти альтернативы вышерассмотренным инструментам

Многие привыкли подключать смартфоны к заряднику каждый вечер. Сегодня это норма. Развиваются технологии, оптимизируется Android, производители нашпиговывают свои аппараты hi-end начинкой, но при этом, как будто сговорившись, очень неохотно увеличивают емкость аккумуляторов, издевательски балансируя на том самом уровне автономии в один световой день. Но не будем поднимать тему о заговоре маркетологов, в этой статье мы раскажем об оптимизации того, что имеем, и всех наиболее эффективных и безопасных способах улучшить энергосбережение смартфона как минимум на 50%.

ЧАСТЬ 1. ЖЕЛЕЗО

Беспроводные сети и GPS

Запомни: хочешь сэкономить энергию - отключай лишних потребителей, то, чем в данный момент не пользуешься. Например, оставленные включенными беспроводные сети Wi-Fi и Bluetooth постоянно сканируют пространство и ищут доступные точки для подключения или устройства для спарринга; включенная «передача данных» (мобильный интернет) позволяет многочисленным приложениям постоянно «ломиться» в сеть для обновления своих данных и отправки запросов, дополнительно загружая процессор и опустошая проплаченный трафик или кошелек; включенная геолокация (GPS, ГЛОНАСС, определение координат по беспроводным сетям) помогает постоянно отслеживать твое положение, выполняя запросы любопытных приложений. Все это может потреблять значительную часть заряда аккумулятора, поэтому «вымыл руки, закрыл кран», ну в смысле - нажал на кнопку и отключил потребителя.

Мобильная сеть

Уровень приема мобильной сети оказывает сильное влияние на сохранение заряда. Чем слабее уровень принимаемого сигнала (меньше делений индикатора антенны на экране), тем больше аппарат тратит энергии на усиление и поддержание этого сигнала. Поэтому в зонах неуверенного приема сигнала (в поезде, к примеру) лучше включать режим «В самолете», тем самым отключая радиомодуль устройства. Аналогично можно поступать вечером, отключая радиомодуль на ночь.

Проблема выбора: 2G или 3G Рассматривая характеристики любого телефона, ты, наверное, замечал, что производители всегда указывают время автономной работы в сетях 3G меньше, чем в сетях 2G. Это объясняется тем, что сети 3G многоканальны и обеспечивают более высокое качество и надежность соединения (безразрывный переход от одной станции к другой). Поэтому, если тебя не пугают кратковременные потери сигнала и чуть худшее качество разговора при выходе из подземного перехода (хотя это зависит и от множества других факторов), можешь в настройках режима сети (Настройки → Еще →Мобильные сети → Тип сети) выбирать «только 2G» (only GSM) и экономить до 20% на связи с сетью.

Кроме того, если ты находишься в зоне плохого приема сети 3G, а на аппарате выбран автоматический режим «2G/3G», аппарат будет постоянно пытаться подключиться к сети 3G, даже если ее сигнал в несколько раз слабее сигнала 2G. Стоит ли говорить, что такие постоянные скачки требуют значительного расхода энергии, которого также можно избежать.

Однако, когда речь заходит о передаче данных (подключении к интернету), ситуация меняется на противоположную. При болееменее значительном трафике предпочтительнее использовать сети 3G или Wi-Fi вместо 2G. На первый взгляд это кажется спорным утверждением, но дьявол кроется в деталях: во-первых, передача данных в сети 2G (по технологии EDGE) требует на 30% больше энергии, чем в сети 3G, и лишь на 10% меньше, чем потребляет Wi-Fi; во-вторых, скорость передачи данных в сети 3G (HSPA) до 170 раз выше скорости в сети 2G (EDGE), не говоря уже о Wi-Fi, где разница будет в 600 раз. Это означает, что для скачивания той или иной информации устройству потребуется меньше времени, а значит, и меньше энергии.

Простой пример: ты хочешь скачать несколько песен общим размером 30 Мб. С помощью EDGE на это уйдет 30 Мб * 8 / 0,08 Мбит/с / 60 = 50 мин, c помощью HSPA - 30 Мб * 8 / 14 Мбит/с = 17 с, ну а с помощью Wi-Fi - всего 30 Мб * 8 / 50 Мбит/с = 5 с. Теперь, умножив время скачивания на среднее потребление того или иного режима, получим: для EDGE - 300 мА * 50 мин / 60 = 250 мА ч; для HSPA - 210 мА * 17 с / 60 / 60 = 1 мА ч; для Wi-Fi - 330 мА * 5 с / 60 /60 = 0,5 мА ч. В конечном итоге все будет зависеть от объема данных: чем он больше, тем больше будет экономия при использовании более скоростной сети.

Вывод.

При упоре на голосовые вызовы и редком обращении в интернет (например, только обновление погоды и чтение новостей) предпочтительней использовать режим 2G, он даст наибольшую экономию энергии. При частом использовании интернета с большим объемом трафика (просмотр страниц с картинками, работа с почтовыми вложениями, скачивание файлов) предпочтительнее использовать режим 3G. В качестве компромиссного решения при необходимости можешь менять настройки сети 2G/3G, используя панель быстрого доступа или виджеты.

Датчики и сенсоры

Современные телефоны напичканы всевозможными датчиками, которые, естественно, требуют энергии для своей работы. Посмотреть, какие датчики есть в твоем телефоне и сколько они потребляют, очень просто, достаточно установить приложение Android System info, зайти во вкладку System и выбрать пункт Sensor. В первых Android-устройствах обычный акселерометр (датчик, определяющий положение устройства) потреблял до 15 мА ч, в современных аппаратах это значение, как правило, в 100 раз меньше, поэтому нет особого смысла отключать «автоматическую ориентацию экрана» или «автоматическую яркость» (датчик освещенности), значительным образом это не повлияет на общее энергопотребление аппарата.

Однако следует помнить, что многие приложения, в которых задействовано управление наклонами аппарата, могут использовать сразу несколько датчиков (акселерометр, гироскоп, датчик вращения, датчик ускорения, датчик ориентации, датчик гравитации и другие), что в сумме может дать потребление до 100 мА ч.

Экран

Экран любого современного устройства - главный потребитель энергии, при этом есть ряд основных факторов, влияющих на его прожорливость:

  1. Размер экрана. Чем экран больше, тем больше энергии необходимо на его подсветку.
  2. Яркость и время подсветки. Чем больше значения яркости экрана и тайм-аута отключения, заданные в настройках, тем больше устройство потребляет энергии. Рекомендую установить автоматическое управление яркостью (по датчику освещенности) и тайм-аут подсветки не более 30 с.
  3. Разрешение экрана. Чем оно выше, тем больше энергии потребляет видеоускоритель устройства, отвечающий за отображение изображения на экране.
  4. Технология изготовления экрана. Грубо все экраны можно разделить на две категории:
  • жидкокристаллические (ЖК) дисплеи, состоящие из ЖК-матрицы и источника света (подсветки). К ним относятся экраны LСD, TFT-LCD, SCLCD, IPS, TFT;
  • дисплеи на органических светодиодах (OLED), состоящие из активной матрицы, излучающей свет. К ним относятся экраны AMOLED, Super AMOLED и подобные.

Приведу простой пример, объясняющий различие в их работе. Если ты хочешь прочитать текст на листе бумаги ночью, у тебя два варианта: либо включить основной свет в комнате, либо подсветить листок маленьким фонариком. Результат в итоге один, но получен он будет с разными энергозатратами.

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

В AMOLED-экранах свет излучают только те пиксели, которые задействованы в формировании изображения, если пиксель в нем не участвует (при черном цвете на картинке), он ничего не излучает и, соответственно, не потребляет энергии. Таким образом, общее потребление экрана будет зависеть не только от установленной яркости, но и от изображения: чем больше в нем черного цвета и темных оттенков, тем меньше потребление энергии экраном. Однако есть и обратное правило: чем больше на картинке белых участков, тем больше такой экран потребляет энергии, и в определенных случаях AMOLED-экран может оказаться даже более «прожорливым», чем ЖК-экран.


Сравнение энергопотребления экранов LCD и AMOLED в зависимости от отображаемой картинки

Смотрим таблицу..
Таким образом, все плюсы от экономичности AMOLED- экранов можно получить, лишь соблюдая некоторые нехитрые правила, а именно: стараться не использовать белый фон, в приложениях устанавливать темные темы; в качестве обоев рабочего стола использовать темные картинки с температурой цветов не более 6500К. Только в этом случае AMOLED-экран сможет оказаться до двух раз экономичнее ЖК-экрана.

Процессор

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

Частота.

Все современные устройства могут управлять частотой своего процессора, уменьшая ее при малых нагрузках, тем самым снижая энергопотребление. Правильно оптимизированное устройство при выключении экрана должно переходить в режим экономичного энергопотребления, снижать частоту процессора до 15–30% от максимальной величины и оставаться на этой частоте до следующего пробуждения пользователем. Поэтому оценить оптимизацию энергопотребления устройства можно, посмотрев статистику работы процессора на той или иной частоте. Для этого открываем приложение Android System info, выбираем вкладку System и пункт CPU.

Если большую часть времени процессор работает на максимальной частоте, значит, с оптимизацией есть проблема. Для ее решения устанавливаем приложение SetCPU (нужен root), с помощью которого можно не только задать рабочую частоту процессора (или уточнить диапазон рабочих частот), но и создать профили частот, активируемые по какому-либо событию (запуску приложения, уменьшению заряда, отключению экрана, времени), то есть оптимизировать процесс управления частотой под себя. Например, частоту в рабочем режиме можно установить не более 1000–1200 МГц; по событию «экран выключен» и «заряд менее 15%» максимальную частоту ограничить половиной от рабочей частоты, а минимальную - установить на минимум; задать профили для часто запускаемых приложений с ограничением их максимальной рабочей частоты той величиной, при которой сохраняется комфортная для тебя отзывчивость интерфейса (так, для игр вполне может хватить 800 МГц, а для просмотра фильмов и прослушивания музыки - 500 МГц). Такой подход поможет сэкономить до 50% заряда, расходуемого процессором.

Правда, при этом следует понимать, что чем меньше будет частота, тем менее отзывчивым может стать интерфейс и ниже общая скорость работы. Режимы управления частотой процессора. Эти режимы (алгоритмы) определяют, как будет изменяться частота процессора, в каких пределах и как быстро, в зависимости от испытываемой процессором загрузки, ее длительности и прочего. Режимы управления частотой и шаг изменения частоты заложены в ядре, и их набор для разных прошивок может отличаться. Не буду приводить описание этих режимов, при необходимости ты сам легко их найдешь.

Скажу лишь, что для многоядерных устройств предпочтительнее использовать режим hotplug (если такого режима у тебя в списке SetCPU нет - используй interactive, ну или ondemand, он есть по умолчанию на большинстве ядер), который в простое отключает незадействованные ядра процессора и наиболее эффективен в соотношении производительность/экономичность.

Уменьшение напряжения процессора (андервольтинг).

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

ЧАСТЬ 2. СОФТ

После отключения экрана устройство должно переходить в режим энергосбережения (так называемый режим suspend), при этом уменьшается частота процессора, отключаются «лишние» ядра, сворачивается активность приложений. Цель этого режима понятна - максимальное снижение потребления энергии тогда, когда устройство пользователю не нужно, а так как телефон большую часть времени находится в таком режиме, от его эффективности существенно зависит общая продолжительность работы устройства.

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

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

Для начала нужно проверить, есть ли у девайса проблемы с режимом энергосбережения в режиме «сна». Сделать это можно даже без установки сторонних приложений с помощью стандартного пункта меню настроек «Использование аккумулятора» (или «Батарея»), желательно после долгого периода бездействия телефона, например утром. Можно не задерживаться на первом экране, показывающем, на какие задачи ушел уже израсходованный заряд, тут мало для нас интересного, лучше тапнем на график и перейдем в «Подробный журнал», отображающий график разряда аккумулятора и пять полосок. Определить наличие будящих приложений можно, сравнив полоски «экран включен» и «рабочий режим».

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

Что же вообще будит устройство и почему? Для нормального функционирования многих приложений необходимо периодическое обновление данных или даже работа в фоне (например, для музыкального проигрывателя), поэтому наиболее частыми будильщиками выступают приложения с настроенным автообновлением или автосинхронизацией, клиенты социальных сетей, почтовые программы, различные мессенджеры, виджеты состояния системы и погоды.

Для уменьшения расхода заряда в этих приложениях можно отключить автосинхронизацию и уменьшить интервал их обновления. Однако часто в списке будящих программ попадаются и другие приложения или процессы, в том числе системные, не имеющие в настройках опций «усыпления».

Disable Service: синий - работающие в фоне процессы, красный -отключенные, белый - общее количество процессов приложения

C такими приложениями и процессами можно поступить одним из следующих способов:

  • Удалить, если это не особо нужное пользовательское предложение.
  • Отключить автозагрузку с помощью Autorun Manager. Советую отключать не только подозрительные и будящие программы, но и другие редко используемые приложения, которые часто висят в оперативной памяти и кеше (вкладка настроек «Приложения → Работающие»). Так в памяти появятся действительно часто запускаемые программы.
  • Временно заморозить с помощью Titanium Backup или того же Autorun Manager. Это на случай, если приложение понадобится в будущем или если речь идет о системном приложении, которое нежелательно удалять (если, например, ты хочешь сохранить возможность обновления по воздуху). При заморозке приложение пропадет из списка программ, но физически не удалится. Однако следует помнить, что заморозка некоторых системных приложений может привести к сбою в работе системы, поэтому действуем осторожно.
  • Отключить конкретный будящий процесс приложения с помощью программы Disable Service, без отключения всего приложения.
  • Принудительно отправить будящие приложения в глубокий сон с помощью приложения Greenify. Но следует учитывать, что «гринифицированное» приложение перестанет запускаться по событиям, обновлять свои данные, получать push-уведомления и прочее до следующего запуска вручную. Еще одна полезная мелочь - Greenify встраивается в Wakelock Detector, и его функционал доступен прямо оттуда.

Иногда сторонние приложения могут влиять на сон устройства через системные процессы, которые оказываются «крайними» и выводятся в списке wakelock’ов как виновники незасыпания (например, процессы suspend, events/0). Найти истинных виновников незасыпания в этом случае можно, последовательно замораживая/удаляя подозрительные приложения (начав с недавно установленных) и наблюдая за лидерами в списке wakelock’ов.

Устройство может не засыпать, если нажата одна или несколько хард-кнопок. При выключенном экране полоска «режим работы» будет полностью залита. Данная проблема существует со времен первых девайсов на Android и в современных прошивках уже должна быть устранена, но в случае сильного расхода заряда не поленись и проверь, особенно если смартфон «транспортируется» в чехле.

  • Покупай аккумуляторы и зарядные устройства только от официального производителя. Как показывает опыт, реальная емкость дешевых аккумуляторов гораздо меньше указанной, а дешевые зарядные устройства в лучшем случае не выдадут заявленный на них максимальный ток, а в худшем - навредят аккумулятору повышенным напряжением или пульсирующим током.
  • Старайся заряжать устройство не от USB-порта компьютера, а от сетевой зарядки. На старте зарядка аккумулятора идет более высоким током, который не может выдать USB-порт, в результате увеличивается время зарядки и уменьшается ресурс аккумулятора (прежде всего это касается мощных аккумуляторов с большим зарядным током от 1 А).
  • Заряжай устройства полными циклами, старайся не допускать глубокого разряда (до выключения) и частичных подзарядов в середине цикла, все это сказывается на ресурсе аккумулятора, постепенным снижением его емкости.
  • SD- и SIM-карты могут влиять на энергопотребление. Если ты столкнулся с высоким разрядом, попробуй походить день без SD-карты. Если предположения подтвердятся - отформатируй карту в самом телефоне или при необходимости замени ее. SIM-карты также лучше менять на новые каждые 3–4 года (благо это бесплатно).
  • Раз в полгода (а при подозрительно быстром разряде - чаще) проверяй внешнее состояние аккумулятора на наличие вздутия и деформаций (начало вздутия можно заметить, приложив аккумулятор к ровной поверхности), в случае их обнаружения аккумулятор лучше заменить.
  • Также периодически продувай и чисти USB-контакты устройства.

Christopher Bird

Управление питанием в операционной системе Android - блокировка сна

Наверное, многие сталкивались с ситуацией, когда мобильное устройство не может отработать на одной зарядке аккумулятора в течение полного дня. Каждый понимает всю неприятность ситуации, когда к концу рабочего дня телефон превращается в бесполезный кирпич. Современные приложения дают возможность выполнять на смартфонах задачи, для которых раньше требовался компьютер. Но если сравнивать смартфоны с PC, то из-за существенно меньшего размера, они отличаются и существенно меньшей емкостью аккумуляторов. Таким образом, телефон должен обладать, по сути, функциональностью ноутбука, но при этом - и это очень строгое требование - должен работать от аккумулятора без подзарядки в течение достаточно долгого времени.

В Android и в других мобильных ОС удалось добиться длительной работы от аккумулятора за счет использования агрессивной модели управления питанием. Через некоторое время после использования телефона его экран отключается, а CPU переходит в режим пониженного потребления электроэнергии. Таким образом, когда телефон не используется, энергия расходуется совсем понемногу. Благодаря такому подходу, телефоны в режиме ожидания могут работать без подзарядки в течение нескольких дней. Диспетчер электропитания Android построен на следующем, вполне логичном принципе: при отключении экрана отключается и CPU.

Но разработчики Android предусмотрели возможность не давать устройствам с этой ОС переходить в спящий режим. В некоторых случаях может потребоваться, чтобы CPU оставался в активном состоянии даже при выключенном экране, или же может понадобиться запретить автоматическое отключение экрана при выполнении определенных задач. Для этой цели разработчики Google* включили так называемые блокировки сна в API PowerManager. Приложения, которым нужно избежать «засыпания» устройства, могут воспользоваться такой блокировкой. Пока в системе есть активная блокировка сна, устройство не сможет «заснуть», то есть перейти в режим ожидания (до снятия блокировки). При использовании блокировок сна важно понимать, что необходимо правильно снимать эти блокировки, когда они не нужны. Иначе аккумулятор устройства быстро сядет: ведь устройство не сможет вернуться в состояние пониженного расхода электроэнергии.

В этой статье описываются некоторые приложения Android, использующие блокировки сна в Android 4.0. В статье также описано приложение «Wakelocks» из набора SDPSamples для демонстрации реализации блокировок сна в коде.

Использование блокировок сна приложениями

В системе Android можно увидеть, какие службы удерживают блокировки сна и не дают системе перейти в один из режимов экономии электроэнергии. Файл file /proc/wakelocks на устройстве содержит список служб и драйверов, использующих блокировки сна. Отслеживая содержимое файла /sys/power/wake_lock (требуется доступ с правами root), можно узнать, есть ли блокировка ресурсов CPU, и какая служба удерживает блокировку wakelock2. Мне удалось зафиксировать несколько случаев использования блокировок на моем смартфоне Galaxy Nexus под управлением Android 4.0:

Таблица: Использование блокировок сна стандартными приложениями Android

Приложения YouTube и Музыка являются хорошими примерами использования блокировок сна на различных уровнях. Приложение YouTube захватывает блокировку сна, когда пользователь просматривает потоковое видео. В течение всего воспроизведения видео экран остается включенным (невзирая на установленные в системе параметры экрана). Но если во время воспроизведения пользователь нажмет кнопку питания, то устройство перейдет в режим сна: экран будет отключен, а воспроизведение звука и видео прекратится. Приложение «Музыка» использует другую блокировку сна при воспроизведении аудио. Параметры экрана не изменяются, поэтому экран устройства отключится согласно настроенным параметрам. Но даже при отключенном экране блокировка сна не даст отключиться CPU, чтобы воспроизведение музыки продолжалось, даже если пользователь нажмет кнопку питания.

Выбор типа блокировки

Перед тем, как начать написание кода блокировок сна, нужно понять, какие существуют типы блокировок сна, чтобы выбрать наиболее подходящий тип для использования в приложении. В API Android PowerManager описываются различные доступные флаги блокировок, изменяющие состояние электропитания устройства:

Значение флага CPU Экран Подсветка клавиатуры
PARTIAL_WAKE_LOCK Вкл Выкл Выкл
SCREEN_DIM_WAKE_LOCK Вкл Затемнен Выкл
SCREEN_BRIGHT_WAKE_LOCK Вкл Полная яркость Выкл
FULL_WAKE_LOCK Вкл Полная яркость Полная яркость

Таблица: Из API Android PowerManager.

Обратите внимание, что блокировки сна существенно сокращают время работы устройств с Android от аккумуляторов, поэтому блокировки сна не следует использовать, если можно обойтись без них. При возможности, их следует снимать как можно скорее.

Приложение, использующее блокировку сна, должно запросить особое разрешение для этого. Для этого применяется разрешение android.permission.WAKE_LOCK в файле манифеста приложения. Это означает, что даже при установке пользователем приложения с блокировками сна с помощью Google Play, пользователи получат предупреждение о том, что данное приложение содержит компоненты, которые могут не дать телефону «заснуть». Если требуется запретить затемнение экрана при определенном действии приложения, это можно сделать и способом, для которого не нужно особое разрешение. В WindowManager есть переменная FLAG_KEEP_SCREEN_ON, которую можно задать, если методу View приложения нужно оставить экран во включенном состоянии. Для управления экраном рекомендуется использовать именно такой подход, поскольку его воздействие происходит только внутри приложения. При переключении пользователя к другому приложению WindowManager снимает блокировку сна.

Удержание экрана во включенном состоянии (из набора SDPSamples)

Приложение WakeLock из набора SDPSamples демонстрирует, что приложение может удерживать экран во включенном состоянии с помощью Window Manager, без написания кода блокировки сна. Запустите приложение WakeLock и выберите элемент списка "Win Man Screen On".

Пока в строке состояния кнопки будет текст «Screen is LOCKED», экран будет включен. Если же в строке состояния кнопки будет текст «Screen is UNLOCKED», то через 5 секунд бездействия экран отключится.

В коде это осуществляется функцией screenLockUpdateState() в файле WakeLockActivity.java путем установки и снятия FLAG_KEEP_SCREEN_ON для текущего окна при каждом нажатии кнопки и изменении состояния.

Public void screenLockUpdateState() { if (mIsDisplayLocked) { ... // update display state getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } else { ... // update display state getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } }

Реализация блокировки сна

В приложение WakeLock из набора SDPSamples реализованы блокировки сна различных типов. После запуска приложения WakeLock выбираем один из 4 типов блокировок сна: Power Wake Lock Full, Power Wake Lock Bright, Power Wake Lock Dim и Power Wake Lock Partial. Эти 4 варианта соответствуют 4 флагам блокировок сна, описанным в API PowerManager. Каждый элемент демонстрирует реакцию устройства на попытку отключить экран через 5 секунд.

Отслеживая содержимое файла /sys/power/wake_lock (требуется доступ с правами root), можно увидеть, что после нажатия кнопки питания сохраняется только блокировка сна PARTIAL_WAKE_LOCK . Остальные блокировки сна не дают полностью отключить экран: он продолжает работать с тем или иным уровне яркости.

При написании кода блокировок сна нужно прежде всего запросить разрешение на их использование в манифесте AndroidManifest.xml:

После этого можно создать объект WakeLock, содержащий функции acquire() и release() для управления блокировкой сна. Хороший пример находится в файле WakeLockActivity.java:

Public void onCreate(Bundle savedInstanceState) { ... mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); ... mWakeLock = mPowerManager.newWakeLock(mWakeLockState, "UMSE PowerTest"); if (mWakeLock != null) { mWakeLock.acquire(); ... } } protected void onDestroy() { if (mWakeLock != null) { mWakeLock.release(); mWakeLock = null; } ... }

Заключение

Блокировка сна - это возможность системы Android, позволяющая разработчикам изменять состояние электропитания устройства по умолчанию. Опасность использования блокировок сна в приложениях заключается в преждевременном израсходовании заряда аккумуляторов. Некоторые явные преимущества блокировок сна очевидны в ряде стандартных приложений Google, например, для навигации или для воспроизведения музыки и видео. Каждый разработчик приложений должен самостоятельно принимать решение о том, будет ли применение блокировок сна целесообразным.

Об авторе

Кристофер Берд (Christopher Bird) начал свою карьеру в подразделении Intel SSG в 2007 году и участвует в построении экосистемы устройств с процессорами Atom (телефонов и планшетов)

Справочные материалы

2 LWN – “Wakelocks and the embedded problem”: http://lwn.net/Articles/318611/

Примечания

ИНФОРМАЦИЯ В ДАННОМ ДОКУМЕНТЕ ПРИВЕДЕНА ТОЛЬКО В ОТНОШЕНИИ ПРОДУКТОВ INTEL. ДАННЫЙ ДОКУМЕНТ НЕ ПРЕДОСТАВЛЯЕТ ЯВНОЙ ИЛИ ПОДРАЗУМЕВАЕМОЙ ЛИЦЕНЗИИ, ЛИШЕНИЯ ПРАВА ВОЗРАЖЕНИЯ ИЛИ ИНЫХ ПРАВ НА ИНТЕЛЛЕКТУАЛЬНУЮ СОБСТВЕННОСТЬ. КРОМЕ СЛУЧАЕВ, УКАЗАННЫХ В УСЛОВИЯХ И ПРАВИЛАХ ПРОДАЖИ ТАКИХ ПРОДУКТОВ, INTEL НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ И ОТКАЗЫВАЕТСЯ ОТ ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ В ОТНОШЕНИИ ПРОДАЖИ И/ИЛИ ИСПОЛЬЗОВАНИЯ СВОИХ ПРОДУКТОВ, ВКЛЮЧАЯ ОТВЕТСТВЕННОСТЬ ИЛИ ГАРАНТИИ ОТНОСИТЕЛЬНО ИХ ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОБЕСПЕЧЕНИЯ ПРИБЫЛИ ИЛИ НАРУШЕНИЯ КАКИХ-ЛИБО ПАТЕНТОВ, АВТОРСКИХ ПРАВ ИЛИ ИНЫХ ПРАВ НА ИНТЕЛЛЕКТУАЛЬНУЮ СОБСТВЕННОСТЬ.

КРОМЕ СЛУЧАЕВ, СОГЛАСОВАННЫХ INTEL В ПИСЬМЕННОЙ ФОРМЕ, ПРОДУКТЫ INTEL НЕ ПРЕДНАЗНАЧЕНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ В СИТУАЦИЯХ, КОГДА ИХ НЕИСПРАВНОСТЬ МОЖЕТ ПРИВЕСТИ К ТРАВМАМ ИЛИ ЛЕТАЛЬНОМУ ИСХОДУ.

Корпорация Intel оставляет за собой право вносить изменения в технические характеристики и описания своих продуктов без предварительного уведомления. Проектировщики не должны полагаться на отсутствующие характеристики, а также характеристики с пометками «зарезервировано» или «не определено». Эти характеристики резервируются Intel для будущего использования, поэтому отсутствие конфликтов совместимости для них не гарантируется. Информация в данном документе может быть изменена без предварительного уведомления. Не используйте эту информацию в окончательном варианте дизайна.

Продукты, описанные в данном документе, могут содержать ошибки и неточности, из-за чего реальные характеристики продуктов могут отличаться от приведенных здесь. Уже выявленные ошибки могут быть предоставлены по запросу. Перед размещением заказа получите последние версии спецификаций в региональном офисе продаж Intel или у местного дистрибьютора.

Номерные копии документов, на которые имеются ссылки в данном документе, а также другие материалы Intel можно заказать по телефону 1-800-548-4725 или загрузить по адресу http://www.intel.com/design/literature.htm

Программное обеспечение и нагрузки, использованные в тестах производительности, могли быть оптимизированы для достижения высокой производительности на микропроцессорах Intel. Тесты производительности, такие как SYSmark и MobileMark, проводятся на определенных компьютерных системах, компонентах, программах, операциях и функциях. Любые изменения любого из этих элементов может привести к изменению результатов. При выборе приобретаемых продуктов следует обращаться к другой информации и тестам производительности, в том числе к тестам производительности определенного продукта в сочетании с другими продуктами.

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

Intel® и эмблема Intel являются товарными знаками корпорации Intel в США и в других странах.

© Intel Corporation, 2012. Все права защищены.

*Другие наименования и торговые марки могут быть собственностью третьих лиц.

По умолчанию спящий режим, то есть отключение экрана при бездействии на смартфоне на базе Android происходит через 30 или 60 секунд. Как правило, этого более чем хватает большинству пользователей, к тому же отключение дисплея позволяет сохранять энергию аккумулятора. Однако иногда этого времени недостаточно, поэтому необходимо увеличить время до перехода в спящий режим. Как это сделать? Сейчас все узнаете.

Отключение засыпания экрана до 30 минут

На большинстве смартфонов Android максимальное время бездействия, после которого отключается экран, составляет 30 минут. Если этих цифр вам достаточно, необходимо просто изменить настройки.

Зайдите в раздел с настройками.

Откройте раздел «Экран».

Найдите строку «Спящий режим», тапните по ней.

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

Все. При необходимости время можно поменять в любой момент.

Как отключить спящий режим полностью (более чем на 30 минут)?

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

Открываете Play Market.

Пишете в поиске screen alive , нажимаете на кнопку поиска.

Выбираете приложение, читаете отзывы, устанавливаете.

Возьмем для примера «Негаснущий экран» от Active Mobile Applications.

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

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

Давным-давно, когда Android еще не был мейнстримом, любой разработчик мог написать приложение, которое сможет спокойно висеть в фоне и в режиме реального времени обмениваться данными с сервером. Но чем дальше, тем более жесткие техники сохранения энергии применяет Google, и сегодня так просто сетевое реалтаймовое приложение уже не реализуешь. Однако есть несколько трюков, которые позволяют это сделать.

Давай представим, что у нас есть приложение, а у него, в свою очередь, есть служба (service), которая должна постоянно висеть в фоне, обрабатывать команды, полученные от сетевого сервера, и отправлять ответы. Связь с сервером, как это и положено мобильным устройствам, поддерживается с помощью long poll запросов, то есть приложение подключается к удаленному серверу и ждет, пока тот отправит что-либо в ответ, а потом переподключается и ждет снова. Это эффективный и очень экономный в плане заряда батареи способ, который в том числе используется в механизме push-уведомлений самого Android.

В теории все выглядит отлично, архитектура приложения абсолютно правильная, вот только, если начать его тестировать, вскроется несколько очень неприятных моментов.

Режимы энергосбережения Android

В Android 4.4–5.1 (версии ниже мы рассматривать не будем - они стремительно устаревают) служба будет работать и моментально откликаться на запросы сервера, но только до тех пор, пока экран включен. Через несколько секунд после отключения экрана смартфон перейдет в режим сна (suspend), и промежуток между отправкой запроса и ответом нашего приложения будет составлять примерно минуту. Это срок между maintenance-пробуждениями устройства, и повлиять на него мы не можем.

В Android 6.0–7.1 ситуация будет примерно такой же, однако спустя примерно час смартфон перейдет в так называемый . После этого ответ от приложения можно либо не получить вовсе, либо получить спустя час или два. А все потому, что в режиме Doze смартфон фактически не дает работать сторонним приложениям и их службам и полностью отрезает им доступ в Сеть. Управление они могут получить только на короткий промежуток времени спустя час после перехода в режим Doze, затем два часа, четыре часа, со все большим увеличением промежутков между пробуждениями.

Хорошие новости в том, что Doze работает общесистемно и включается спустя час после отключения экрана и только если не трогать смартфон (в 7.0–7.1 можно и трогать), а отключается сразу после разблокировки смартфона, подсоединения к заряднику или движения смартфона (опять же не в 7.0–7.1). То есть можно надеяться на то, что хотя бы днем наш сервис будет работать нормально.

Плохие же новости в том, что, помимо Doze, в Android 6.0–7.1 есть и другой механизм энергосбережения под названием App Standby. Работает он примерно так: система следит за тем, какие приложения использует юзер, и применяет к редко используемым приложениям те же ограничения, что и в случае с режимом Doze. При подключении к заряднику все переведенные в режим Standby приложения получают амнистию. К приложениям, имеющим уведомление или права администратора (не root), режим Standby не применяется.

Итого, в Android есть сразу три механизма, с которыми придется бороться:

  • Suspend - обычный режим энергосбережения, может замедлить получение ответа от устройства примерно на одну минуту;
  • App Standby - агрессивный режим энергосбережения, способный замедлить получение ответа на сутки;
  • Doze - агрессивный общесистемный режим энергосбережения, который применяется ко всем приложениям.

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

Сценарий 1. Небольшая задержка в ответе некритична, переход в Doze некритичен

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

Два самых простых способа добиться этого - либо вывести службу на передний план (foreground service), либо дать приложению права администратора устройства. Начнем с первого варианта.

Foreground service

Foreground service в терминологии Android - это служба, которая имеет уведомление в шторке. Система относится к таким службам гораздо бережнее. Например, при нехватке памяти она будет убита в последнюю очередь, она не будет убита при смахивании приложения в меню управления запущенными приложениями, и да, к ней не будет применен режим Standby.

Создать foreground service очень просто. Достаточно вставить в код службы примерно такие строки:

Intent notificationIntent = new Intent(this, ExampleActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); Notification notification = new Notification.Builder(this) .setContentTitle(getText(R.string.notification_title)) .setContentText(getText(R.string.notification_message)) .setSmallIcon(R.drawable.icon) .setContentIntent(pendingIntent) .setTicker(getText(R.string.ticker_text)) .build(); startForeground(0, notification);

Этот пример создает уведомление, при тапе на которое будет запущена ExampleActivity, в конце с помощью startForeground() служба переводится в статус foreground.

Права администратора

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

В свое время Google ввела понятие «администратор устройства» для компаний, которые хотели бы управлять смартфонами своих сотрудников. То есть компания создает приложение, которое получает права администратора и может заблокировать или сбросить телефон после команды от сервера. Именно поэтому приложение с правами администратора не переходит в режим Standby, ведь команда на блокировку может прийти в любой момент.

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

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!