» F.A.Q.

Улучшение энергосбережения Android-устройств. Часть 1: Анализ расхода батареи, оптимизация работы беспроводных интерфейсов

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

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

*#*#4636#*#*

Также с этими целями справится приложение SpareParts. Обращаем внимание на пункт «Battery History» (то есть, «Журнал аккумулятора»). Здесь сведена полная информация по потреблению устройством энергии. Интересен в первую очередь пункт «Other Usage», где выведены такие подпункты:

«Running» («Режим работы», «Выполняется») – пункт показывает время работы вне режима ожидания, то есть всё время активности устройства. Статистика показывается в процентах, при нажатии – в минутах.

«Screen On» («Включен экран») – пункт отображает время, которое устройство работает с включённым дисплеем, опять же – в процентах, при нажатии – в минутах.

«Phone On» («Телефон Вкл») – пункт показывает общее время телефонных разговорах, в процентах, при нажатии – в минутах.

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

Что касается пункта «активности» («Running»), то она состоит из «видимой» и «невидимой». Суть в том, что «видимая» её часть формируется всеми действиями, которые происходят с включением экрана, то есть по большому счёту она равна показателю «Включен экран». А «невидимая» составляющая, в свою очередь, формируется, когда экран девайса выключен. То есть в идеале быть её не должно вовсе, или же очень малая часть во всей пропорции, но на деле – она присутствует. А это значит, что во время сна что-то «будит» устройство, на что, соответственно, и тратится заряд. То есть, чтобы определить, есть ли у устройства проблемы с энергосбережением во сне, достаточно из параметра «Режим работы» вычесть параметр «Включен экран» — получаем «невидимую» активность, и если она больше 10%, значит нужно предпринимать меры. Рекомендуется, чтобы данный показатель не превышал 5%. Но не забываем, что прослушивание в фоне музыки, постоянно включенные фоновые клиенты социальных сетей, почтовые клиенты и так далее увеличивают значение «невидимой» составляющей. Задуматься стоит, если лично вы фоновых задач не запускали, а «невидимая» активность находится на слишком высоком уровне. Самое достоверное значение показателя «Режим работы» формируется примерно за полный день использования Android-устройства, но можно не ждать весь день. Достаточно открыть данный пункт и запомнить значение показателя (в минутах). После закрыть журнал и выключить экран – то есть, активировать режим сна. Через, например, 10 минут включаем девайс, сразу же запускаем журнал и сравниваем новое значение данного показателя с предыдущим, которое запомнили. Для примера, «Режим работы» показывал 42 минуты 10 секунд, а через 10 минут сна – 43 минуты 25 секунд, то есть увеличился на 75 секунд. 75 секунд, в данном случае, — 12.% по отношению ко времени сна (10 минут), это многовато. Таким образом, чем больше будет время сна для подбора значений для расчёта активности устройства, тем точнее получится результат.

Начиная с Android 2.3 и выше, пункта «Журнал аккумулятора» больше нет, на его замену пришел пункт «Использование батареи» в настройках мобильного девайса. Открыв данный пункт, можно получить доступ к перечню всех параметров, на которые уходит заряд аккумулятора.

Расшифруем основные пункты. К слову, перевод пунктов может отличаться в зависимости от аппарата, но иконки всегда остаются неизменными.

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

«Режим ожидания» — время использования радиомодуля телефона и, соотвественно, потребление энергии им.

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

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

«Голосовые вызовы» и «Wi-Fi» — длительность голосовых вызовов и общее время работы Wi-Fi, и, соответственно, заряд аккумуляторной батареи, затраченная на эти функции.

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

Если нажать на верхнюю часть, то будет выведен график разряда. По Y-оси показывается уровень заряда, а по X-оси – время, таким образом можно отследить динамику расходования энергии. Внизу также видно четыре полоски:

«Сигнал телефона» — показывает качество принимаемого радиосигнала, зелёное – хорошее качество, красное – плохое. Чем хуже качество, тем интенсивнее приходится работать радиоприемнику, и тем быстрее тратится энергии.

«Wi-Fi» — заливка полоски синим – это периоды использования Wi-Fi.

«Рабочий режим» («Режим бодрствования») – заливка полоски синима также показывает общее время активности девайса.

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

«Зарядка» — отображает синим периоды, в которые происходила зарядка аккумуляторной батареи.

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

На приведенном выше снимке экрана хорошо прослеживается «невидимая» активность. За ночь наблюдений – а это лучший период, так как графики строятся медленно и нужны за несколько часов, некоторую часть времени мобильный аппарат не спал. Если «невидимая» активность составляет больше 10% от полоски «Рабочий режим», значит она приводит к значительной потере заряда аккумулятора и надо искать процессы, который будят устройство. Об этом мы поговорим немного позже. К слову, можно проследить динамику расхода заряда аккумуляторной батареи и нештатными средствами, а установить приложение Battery History, и пользоваться старой методикой, актуальной для операционной системы Android версии 2.2 и более ранних.

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

Итак, для начала – внешнее воздействие. Мобильный аппарат не сможет уйти в режим сна, если нажата хотя бы одна, любая, кнопка. На большинстве современных моделей Android-устройств данная проблема решена, но всё же стоит перепроверить, спит ли устройство при нажатой кнопке. Если не спит, то за время удерживания любой кнопки показатель «невидимой» составляющей активности будет равен 100%. Из известных проблемных устройств – на Samsung i7500 слишком чувствительной была кнопка камеры, и смартфон мог разрядится полностью буквально за несколько часов пребывания в узком и плотном чехле из комплекта поставки, из-за того, что устройство считало кнопку постоянно зажатой.

Далее, стоит сказать о передаче данных, или, проще говоря, о мобильном интернете. Это включает автосинхронизацию различных приложений и сервисов, передачу данных в фоне и так далее. На всё это, помимо денег за трафик, также тратится и драгоценный заряд аккумуляторной батареи. Настоятельно рекомендуется при неиспользуемом соединении с Интернетом отключать передачу данных посредством 3G или EDGE. Это может сэкономить вплоть до 20% заряда за ночь. Желательно отключать передачу данных через меню, полностью. Использование Firewall для блокировки трафика не во всех случае помогает. Если стандартными методами отключить передачу данных невозможно (а такая проблема распространена на прошивках на основе ОС Android 2.2 и более ранних, так как за функцию отвечает кнопка разблокировки), то можно установить отдельную программу. Данное приложение вручную способно включать и отключать APN на устройстве. Для примера – программы APNSwitch и APNDroid. Чтобы следить за потребляемым трафиком при использовании интернета не по Wi-Fi, лучше всего проводить мониторинг при помощи специальных программ, таких как 3GWatchdog (рекомендуется запускать непосредственно перед сессией работы в интернете).

Касательно беспроводных сетей. Включенная сеть 3G, особенно в зонах с плохим уровнем сигнала, определение местоположения по беспроводным сетям (пункт настроек «GPS и Безопасность»), Wi-Fi, Bluetooth, GPS – всё это лучше всего выключать, если функции не используются, и включать только при возникновении необходимости. Это позволить значительно увеличить время автономной работы мобильного Android-устройства. Для удобства можно вывести виджеты для управления перечисленными функциями на рабочий стол.

Выбор между сетями 3G и 2G достаточно прост. В целях экономии заряда батареи, рекомендуется для голосовых вызовов использовать 2G-сети, а для передачи данных – 3G. Передача голоса посредством 2G-сетей лучше, так как они одноканальны, и единовременно могут передавать только что-то одно, тогда как 3G – многоканальны, и могут одновременно обмениваться с сетью голосом и данными. Так что при обычном звонке (не видео) все каналы 3G-соединения будут заняты на передачу голоса. Это в некоторой степени может и повысить качество передаваемого голоса, но также отразится и на энергопотреблении, причем достаточно значительно – до 20-25%. Что касается передачи данных, то при качественном покрытии населенного пункта 3G-сетью (3-4 деления постоянно минимум), то лучше использовать именно её, а не EDGE. EDGE потребляет на 30% больше энергии (приблизительно 300 мА против 210 мА) и ближе к таковому показателю у Wi-Fi (330 мА). Естественно, данное потребление касается полной нагрузке – например, скачивания файла. Кроме того, скорость приема данных в 3G-сети выше, а это сокращает время использования сети. Но, сразу оговоримся, если покрытие 3G не самое лучшее, а местами отсутствует, то энергопотребление резко поднимется, та как будучи в зоне 2G мобильное устройство будет постоянно сканировать лишний диапазон на наличие 3G-покрытия. А сканирование сети обычно наиболее энергозависимый процесс.

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

Поговорим о датчиках и сенсорах, а это датчик магнитного поля, акселерометр и так далее. Все они потребляют энергию для своей работы. И в условиях максимальной экономии заряда батареи отключение или не использование каких-либо из датчиков позволяет добиться сохранение некоторой доли заряда. Для примера, приведем значение потребляемого тока для Samsung Galaxy S (i9000):

Датчик вращения – 4,2 мА

Датчик приближения – 0,75 мА

Датчик ориентации – 4,2 мА

Датчик магнитного поля – 4,0 мА

Датчик ускорения – 0,2 мА

Датчик освещения – 0,75 мА

Датчик силы тяжести – 0,2 мА

Акселерометр – 0,2 мА

В целом, приведенные характеристики применимы к большинству Android-устройств. Также, в более современных устройствах, могут присутствовать Гироскоп, Датчик давления, Термометр и другие. Как можно увидеть по таблице, больше всего энергии потребляют датчики, которые отвечают за ориентацию устройства в пространстве, и отключив функцию «поворота экрана» можно увеличить время автономной работы на 5-10%. Для того, чтобы иметь быстрый доступ к управлению данной функцией, можно использовать виджеты, например SwitchPRO Widget. Игры, задействущие сенсор положения мобильного устройства в пространстве, могут потреблять до 200 мАч, а это достаточно много. Более того, процессы, связанные с использованием данного сенсора, не убираются из памяти даже после закрытия приложения (в том числе при помощи Task Manager), и на них расходуется драгоценная энергия. Убрать такие процессы из памяти можно, перезагрузив устройство, но в целом расход энергии на них не слишком большой, в отличие от самых программ и игр.

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