- Русские Блоги
- Android Power Management
- Выбираем менеджер аккумулятора для android-устройств: «Мастер экономии батареи» (Power Apps Tools), DU Battery Saver и Battery Doctor
- Оглавление
- Вступление
- реклама
- «Мастер экономии батареи» (Power Apps Tools)
- Знакомство
- реклама
- реклама
- Первое впечатление
- реклама
- реклама
- Тестирование
- реклама
- реклама
- реклама
- Выводы
Русские Блоги
Android Power Management
в целом Android Управление питанием относительно просто , В основном через блокировку и таймер для переключения состояния системы , Минимизировать энергопотребление системы , Схема архитектуры управления питанием всей системы выглядит следующим образом : ( Обратите внимание, что картина исходит от Steve Guo)
Далее мы начнем с Java Уровень применения , Android framework Уровни , Linux Подробные обсуждения на уровне ядра :
Использование прикладного уровня :
Android Обеспечивает готовые android.os.PowerManager категория , Этот класс используется для управления переключением состояния питания устройства .
Этот класс имеет три интерфейсные функции :
void goToSleep(long time); // Принудительное устройство ввода Sleep состояние
Попробуйте вызвать эту функцию на прикладном уровне , Но не может добиться успеха , Ошибка, кажется, недостаточно прав , Но в Framework следующий Service Можно позвонить .
newWakeLock(int flags, String tag);// Получить соответствующий уровень блокировки
flags Описание параметра :
PARTIAL_WAKE_LOCK: Screen off, keyboard light off
SCREEN_DIM_WAKE_LOCK: screen dim, keyboard light off
SCREEN_BRIGHT_WAKE_LOCK: screen bright, keyboard light off
FULL_WAKE_LOCK: screen bright, keyboard bright
ACQUIRE_CAUSES_WAKEUP: Принудительно открывать после блокировки запроса Screen и keyboard light
ON_AFTER_RELEASE: При снятии блокировки reset activity timer
Если применяется partial wakelock, Тогда даже если вы нажмете Power облигация , Система не войдет Sleep, в качестве Music При игре
Если вы подали заявку на другие wakelocks, пресс Power облигация , Система все равно войдет Sleep
void userActivity(long when, boolean noChangeLights);//User activity Событие происходит , Устройство будет переключено на Full on Состояние , В то же время Reset Screen off timer.
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”);
1. В приложениях, которые используют вышеуказанные функции , Должно быть Manifest.xml Добавьте следующие разрешения в файл :
2. Все замки должны использоваться в парах , Если заявка на участие и не была выпущена вовремя, это приведет к сбою системы . Если применяется partial wakelock, Без своевременного выпуска , Тогда система никогда не сможет войти Sleep режим .
Android Framework Уровни :
Основной файл кода выглядит следующим образом :
среди PowerManagerService.java Это ядро , Power.java Обеспечить интерфейс функции низкого уровня , и JNI Взаимодействие слоев , JNI Код слоя находится в основном в файле android_os_Power.cpp в , и Linux kernel Взаимодействие через Power.c Для достижения , Andriod с Kernel Взаимодействие в основном через sys Путь документа , Для получения подробной информации, пожалуйста, обратитесь к Kernel Введение слоя .
Функции этого слоя относительно сложны , Такие как переключение состояния системы , Регулировка подсветки и выключатель ,Wake Lock Заявка и выпуск и т. Д. , Но этот слой не имеет ничего общего с аппаратной платформой , И по Google Ответственный за обслуживание , Будет меньше проблем , Заинтересованные друзья могут просматривать связанные коды самостоятельно .
Основной код находится в следующем месте :
Это право Kernel Предоставленные функции интерфейса
EXPORT_SYMBOL(android_init_suspend_lock); // инициализация Suspend lock, Должен быть инициализирован перед использованием
EXPORT_SYMBOL(android_uninit_suspend_lock); // релиз suspend lock Связанные ресурсы
EXPORT_SYMBOL(android_lock_suspend); // приложение lock, Должен позвонить в соответствующий unlock Чтобы выпустить это
EXPORT_SYMBOL(android_lock_suspend_auto_expire);// приложение partial wakelock, Это будет автоматически выпущено после таймера
EXPORT_SYMBOL(android_unlock_suspend); // релиз lock
EXPORT_SYMBOL(android_power_wakeup); // Разбудить систему, чтобы on
EXPORT_SYMBOL(android_register_early_suspend); // Зарегистрироваться early suspend Вождение
EXPORT_SYMBOL(android_unregister_early_suspend); // Отменить уже зарегистрирован early suspend Вождение
Обеспечить Android Framework Слои proc Файл выглядит следующим образом :
«/sys/android_power/acquire_partial_wake_lock» // приложение partial wake lock
«/sys/android_power/acquire_full_wake_lock» // приложение full wake lock
«/sys/android_power/release_wake_lock» // Отпустить соответствующий wake lock
«/sys/android_power/request_state» // Запрос на изменение состояния системы , вводить standby И обратно wakeup Два состояния
«/sys/android_power/state» // Указывает текущее состояние системы
Android Из управления питанием в основном через Wake lock Для достижения , На самом низком уровне управление достигается через следующие три очереди :
Все инициализировано lock Будет вставлен в g_inactive_locks В очереди , И в настоящее время активный partial wake lock Будет вставлен в g_active_partial_wake_locks В очереди , деятельность full wake lock Был вставлен в g_active_full_wake_locks В очереди , любой partial wake lock и full wake lock После истечения срока или unlock Будет перемещен в inactive очередь , В ожидании следующего звонка .
в Kernel Использование слоя wake lock Шаги следующие :
1. Функция вызова android_init_suspend_lock Инициализировать один wake lock
2. Приложение, связанное с вызовом lock Функция android_lock_suspend или android_lock_suspend_auto_expire запрос lock, Вы можете подать заявку только здесь partial wake lock, Если вы хотите подать заявку Full wake lock, Вам нужно вызвать функцию android_lock_partial_suspend_auto_expire( Функция не EXPORT Выходи ), Это название немного странно , Не следуй за фронтом android_lock_suspend_auto_expire Confused .
3. Если да auto expire из wake lock Вы можете игнорировать , В противном случае, связанные wake lock Освобожденный , В противном случае это приведет к длительной работе системы в состоянии высокого энергопотребления. .
4. Удалить или больше не использовать драйвер Wake lock Не забудьте позвонить вовремя android_uninit_suspend_lock Освободите ресурсы .
USER_AWAKE, //Full on status
USER_NOTIFICATION, //Early suspended driver but CPU keep on
USER_SLEEP // CPU enter sleep mode
Принципиальная схема его состояния переключения выглядит следующим образом :
После нормального запуска системы введите AWAKE состояние , Backlight Будет медленно настраиваться от ярчайшего до яркости, установленной пользователем , система screen off timer(settings->sound & display-> Display settings -> Screen timeout) Время начала , До истечения таймера , Если есть activity Событие происходит , в качестве Touch click, keyboard pressed Ждать событий , воли Reset screen off timer, Система остается в AWAKE состояние . Если заявка подается в течение этого времени Full wake lock, Тогда система также останется на AWAKE состояние , Если пользователь не нажимает power key. в AWAKE Если заряд батареи низкий или используется AC Блок питания screen off timer Время истекло и выбрано Keep screen on while pluged in опции ,backlight Будет вынужден DIM Состояние .
если Screen off timer Время истекло, а не Full wake lock Или пользователь нажал power key, Тогда состояние системы будет переключено на NOTIFICATION, И позвоните всем зарегистрированным g_early_suspend_handlers функция , Обычно ставят LCD и Backlight Регистрация водителя early suspend тип , При необходимости вы можете зарегистрировать другие драйверы как early suspend, Это будет закрыто на первом этапе . Далее система определит, есть ли partial wake lock acquired, Если есть, дождитесь его выпуска , Если есть user activity Событие происходит , Система немедленно возвращается AWAKE состояние ; Если нет partial wake lock acquired, Система немедленно вызовет функцию pm_suspend Закройте другие связанные драйверы , Сделать CPU Иди спать .
Система в Sleep Если какой-либо из них обнаружен во время статуса Wakeup source, тогда CPU Это будет от Sleep Государство пробуждено , И позвоните соответствующему водителю resume функция , Тогда сразу звоните предварительно зарегистрированным early suspend управляемый resume функция , Наконец, статус системы возвращается AWAKE состояние . Проблема здесь в том, что все зарегистрированные early suspend Функция S Suspend Первый этап называется понятным , Но в resume время , Linux Сначала позвоню всем водителям resume функция , А затем позвоните предварительно зарегистрированным early suspend управляемый resume Что означает функция ? Лично чувствую android Из этого early suspend и late resume Функции должны быть объединены Linux следующий suspend и resume Использовать вместе , Вместо использования единой очереди для управления .
Поскольку я долгое время не изучал Android, возможно, некоторые из них не правильно поняты или даже неправильно, пожалуйста, поймите. Если вы обнаружите какие-либо вопросы, вы также можете обсудить их, если вам интересно.
Источник
Выбираем менеджер аккумулятора для android-устройств: «Мастер экономии батареи» (Power Apps Tools), DU Battery Saver и Battery Doctor
Оглавление
Вступление
Хранители батареи, менеджеры аккумулятора, оптимизаторы емкости… На Google Play много приложений с таким именем, и одни пользователи их ругают, а другие восхищаются. Принцип работы такой программы понятен: отключаем «вампиров», рубим беспроводные сети, уменьшаем яркость дисплея и будет вам счастье.
реклама
Скептики, не возмущайтесь. Действительно удобно с помощью одной клавиши сделать расход батареи минимальным, особенно если вы в поездке и заигрались, а потом внезапно вспомнили, что надо бы сообщить кое-кому о своем приезде. Да вы и сами можете привести в пример множество подобных ситуаций.
Но неужели среди всего этого многообразия «сейверов» нет чего-то особенного, инновационного, такого, что перевернуло бы скептическое мнение и заставило восхититься? Попробуем выяснить это, рассмотрев целую россыпь менеджеров для аккумулятора.
Далее мы поговорим о топовых решениях. Первым пойдет «Мастер экономии батареи» студии Power Apps Tools, призванный ввести в курс дела и на своем примере показать, как должен выглядеть этакий «рубаха-парень» battery saver.
Если говорить о последнем, то следующее приложение так и называется – DU Battery Saver. С ним я знаком не столь давно, но достаточно, так как использовал его менеджер приложений для отображения расхода батареи тестируемыми приложениями. В ходе многочисленных опытов он показывает реальный расход, но это не значит, что Battery Doctor компании Cheetah Mobile, известной нам по Clean Master, хуже.
В качестве тестового оборудования применялся планшет DEXP Ursus 8EV2 3G (Android 4.4.2, процессор MT8382, 4 х 1300 МГц, 1 Гбайт ОЗУ).
«Мастер экономии батареи» (Power Apps Tools)
Знакомство
Решение студии Power Apps Tools традиционно для таких приложений – выявляем, что более всего потребляет аккумулятор и деактивируем его. Главное – не перестараться, как говорил один мой знакомый, чтобы ничего не сломалось надо все отключить.
реклама
Нам обещают некую интеллектуальную подзарядку, принцип которой интересен, особенно в ее быстром варианте. Неужели повышаем напряжение? Впрочем, не буду забегать вперед, оставив выводы до соответствующего раздела.
Оценка в Google Play (бесплатная/платная версии) | 4.2 |
Совместимость приложения с другими версиями ОС Android | 2.3 или более поздняя |
Размер дистрибутива | 4.4 Мбайт |
Версия приложения | 3.1 |
Покупки в приложении | – |
- Интеллектуальная трехступенчатая подзарядка (быстрая, продолжительная, медленная);
- Режим энергосбережения, отключающий не использующиеся в данный момент функции, такие как GPS, Wi-Fi, Bluetooth и синхронизация;
- Возможность ознакомиться со списком запущенных на телефоне приложений и сервисов и выяснить, сколько ресурсов батареи они расходуют.
Что нового в версии 3.1:
- Добавлен параметр автоматического отключения экрана в пользовательском режиме энергосбережения;
- Добавлена функция отключения данных сотовой связи.
История использования устройства и приложений:
- Просмотр конфиденциальных данных в журнале;
- Получение данных о запущенных приложениях.
- Поиск аккаунтов на устройстве.
- Поиск аккаунтов на устройстве.
- Примерное местоположение (на основе сети);
- Точное местоположение (на основе сети и сигналов GPS).
- Получение данных о статусе телефона.
- Изменение/удаление данных на USB-накопителе;
- Просмотр данных на USB-накопителе.
- Изменение/удаление данных на USB-накопителе;
- Просмотр данных на USB-накопителе.
Данные о Wi-Fi-подключении:
- Просмотр подключений Wi-Fi.
Идентификатор устройства и данные о вызовах:
- Получение данных о статусе телефона.
- Получение данных из Интернета;
- Просмотр фидов пользователя;
- Закрытие других приложений;
- Неограниченный доступ к Интернету;
- Предотвращение переключения устройства в спящий режим;
- Просмотр сетевых подключений;
- Изменение настроек системы;
- Включение/выключение синхронизации;
- Просмотр настроек синхронизации;
- Установление связи с устройствами Bluetooth;
- Доступ к настройкам Bluetooth;
- Изменение сетевых настроек;
- Подключение/отключение сети Wi-Fi;
- Запуск при включении устройства;
- Управление функцией вибросигнала;
- Создание ярлыков.
реклама
Первое впечатление
После того, как нажали на иконку приложения, появляется вот такая инструкция. Здесь нам наглядно объясняют, что сначала мол настрой режим экономии, а потом активируй его нажатием всего одной клавиши. После этого появляется главное окно, а следом и полноэкранный рекламный баннер. В общем Cheetah Mobile явно «корифей» разработчиков приложения.
На главном экране ну очень маленьким шрифтом нам наглядно показывают на что конкретно хватит заряда батареи, например, слушать музыку я могу 10 часов и 10 минут. Шрифт и иконки действительно печалят своими размерами, так как, как говорится, жмешь две кнопки одним пальцем.
реклама
Выше мы можем видеть панель активации режимов работы устройства и беспроводных интерфейсов, а также красочный индикатор уровня емкости аккумулятора. Здесь можно найти очень неудобную кнопку активации режима экономии энергии. В левом верхнем углу – настройки, с которыми мы сейчас и разберемся.
Итак, есть возможность показывать/не показывать заряд батареи в поле уведомлений. Да, хорошо, что эта опция может отключаться. Далее активируем автоматическую экономию, то есть хранитель заряда будет активироваться, когда емкость аккумулятора станет менее или 20% и так далее. Все это дело настраивается ползунком с точностью до одного процента, что радует.
Есть и пользовательские настройки. Так можно оставить в покое Wi-Fi, но отключить Bluetooth. Это же можно сделать с вибрацией, звуком и синхронизацией. Из особенностей стоит отметить возможность все это деактивировать при блокировке или отключении экрана, то есть заблокировали смартфон Wi-Fi потух, разблокировали – заработал. По мне так такое решение гораздо лучше, чем включения режима экономии при низком уровне заряда или одним нажатием кнопки. Действительно, не очень приятно, когда синхронизация прервется на 20% аккумулятора, хотя зарядка под рукой. В общем, каждому свое, а мне режим «при блокировке» весьма понравился.
реклама
Также в настройках можно оценить состояние батареи, однако разработчики под этой функцией имели в виду не то, что я подумал, то есть состояние емкости. «Состояние батареи» — эта опция позволяет устройству точнее оценить состояние батареи в режиме простоя или при использовании разных приложений. В общем своеобразный сброс счетчика после большого цикла зарядок, как это можно сделать на ноутбуке. На этой позитивной ноте настройки заканчиваются.
Какое первое впечатление? Все отлично, если бы не «мелкий» интерфейс, однако надо копнуть поглубже и посмотреть, что это стоит для системы.
Тестирование
реклама
«Мастер экономии энергии» в состоянии бездействия, то есть без включенного «хранителя», кушает 91,1 Мбайт ОЗУ при нулевой нагрузке на процессор. Из этого заключу, что программа сама в определенной степени кушает аккум, хоть и незначительно, так как CPU спокоен. Но это скорее придирка, чем реальный недостаток. Это же все-таки программа с красочным интерфейсом и хорошей функциональностью, а не «воздух».
При этом хранитель батареи работает чуть ли не со всеми Android, но требует огромное количество разрешений, среди которых вовсе ему не нужные, например, программа хочет знать ваше местоположение, получить неограниченный доступ к Интернету, хочет смотреть фиды пользователя и уходит в автозагрузку. Конечно, многое можно списать на возможности приложения, однако…
Кстати 4.4-мегабайтный дистрибутив хранителя разрастается до 13,98 Мбайт. Что здесь такого можно напихать?
Начнем с основного, то есть с работы кнопки автоматического сохранения. Все отработало без проблем, сети деактивировались, экран медленно затух, звук «испарился». Режим «в самолете» отработал при пользовательских настройках.
реклама
Сразу отмечу, чтобы не было путаницы. Если вы хотите, чтобы экран не затух даже после деактивации режима экономии, то в настройках выставьте время отключения экрана. Здесь, правда, присутствует только 15-минутная задержка. Если этого не сделать, то экран будет тухнуть, как при экономии батареи. Не совсем удобная опция, если честно, так как сразу понять, как это работает, не покопавшись в настройках, нельзя.
Что касается режима экономии при блокировке экрана, то здесь деактивируется только Wi-Fi и Mobile Data, то есть передача данных через мобильную сеть. В принципе этого вполне достаточно ни только для экономии, но и безопасности, дабы кто попало не использовал вашу сеть. Все это дело работает без проблем, то есть заблокировали Инет отключился, разблокировали – включился. Кстати, при подключении зарядки вылезло небольшое android-уведомлений. Никаких звуковых сигналов не было, только отображение времени зарядки в статус-баре. При этом заряжать можно в трех режимах: быстро, медленно и продолжительно. Опция также работает и действительно позволяет щадить емкость батареи.
реклама
Однако и это еще все. В правом верхнем углу есть неприметная кнопочка – статистика использования, которая «случайно» расположилась рядом со значком рекламы рекомендуемых приложений. Здесь можно посмотреть расход аккумулятора конкретной программой.
Спасибо за честность, конечно, но по статистике хранителя он сам потребил более всего, а именно 48.08% (емкость 4000 мА·ч). Конечно, я использовал программу, как только мог, меняя настройки и туда-сюда включая режим экономии, но… зачем хранитель аккумулятора, который сам не хранит батарею. Парадокс. К тому же здесь прямо море разливанное рекламы, которую нельзя отключить.
Вся проблема кроется в пиковой нагрузке «Мастера экономии энергии», которая составляет 136.2 Мбайт ОЗУ при почти двухпроцентной нагрузке на процессор. И все это из-за постоянных анимированных баннеров, как я, полагаю. Да, деактивировали сеть и прога будет кушать меньше, однако зачем такие пляски с бубном? Кстати, на рекламу ушло 1.5 Мбайт.
Выводы
Все достоинства «Мастера экономии энергии» перечеркиваются его недостатками. Во-первых, реклама, которую мне так и не предложили отключить. Во-вторых – потребление ресурсов и самой батареи. Ну и с настройкой, как и с интерфейсом, здесь напутано. Настройка требует терпения, а интерфейс создан для пигмеев и на ходу вы будете постоянно попадать пальцем на рекламу, что бесит.
Если все это исключить, то да, перед нами действительно многофункциональный мастер с возможностью плавной зарядки и экономии при блокировке экрана, однако на такие замечания крайне не рекомендую закрывать глаза.
Источник