Информация об использовании батареи получена из статистики использования батареи и значений профиля мощности.
Статистика использования батареи
Фреймворк автоматически определяет статистику использования батареи, отслеживая, как долго компоненты устройства находятся в разных состояниях. Когда компоненты (чипсет Wi-Fi, сотовая радиосвязь, Bluetooth, GPS, дисплей, ЦП) меняют состояния (ВЫКЛ/ВКЛ, бездействие/полная мощность, низкая/высокая яркость и т. д.), контролирующая служба сообщает службе BatteryStats фреймворка. BatteryStats собирает информацию с течением времени и сохраняет ее для использования при перезагрузках. Служба не отслеживает потребление тока батареи напрямую, а вместо этого собирает информацию о времени, которую можно использовать для приблизительного потребления батареи различными компонентами.
Структура собирает статистику, используя следующие методы:
- Push . Службы, осознающие изменения компонентов, отправляют изменения состояния в службу BatteryStats.
- Pull . Для таких компонентов, как использование ЦП приложениями, фреймворк автоматически извлекает данные в точках перехода (например, при запуске или остановке действия), чтобы сделать снимок.
Потребление ресурсов связано с приложением, использующим ресурс. Когда несколько приложений одновременно используют ресурс (например, wakelocks, которые не позволяют системе приостанавливаться), фреймворк распределяет потребление между этими приложениями, хотя и не обязательно поровну.
Чтобы избежать потери статистики использования для события выключения, которое может указывать на проблемы с расходом заряда батареи (например, выключение происходит из-за того, что батарея достигла нулевой остаточной емкости), платформа обновляет статистику примерно каждые 30 минут.
Статистика использования батареи полностью обрабатывается фреймворком и не требует OEM-модификаций.
Значения профиля мощности
Внимание: Производители устройств должны предоставить профиль мощности компонента, который определяет текущее значение потребления для компонента и приблизительный расход батареи, вызванный компонентом с течением времени. Этот профиль определен в platform/frameworks/base/core/res/res/xml/power_profile.xml . Руководство по этим настройкам см. в разделе Значения мощности .
В профиле мощности потребление мощности указывается в миллиамперах (мА) тока потребления при номинальном напряжении и может быть дробным значением, указанным в микроамперах (мкА). Значение должно быть мА, потребляемым на аккумуляторе, а не значением, применимым к шине питания, которое не соответствует току, потребляемому от аккумулятора.
Например, профиль мощности дисплея определяет ток в мА, необходимый для поддержания дисплея на минимальной и максимальной яркости. Чтобы определить стоимость энергии (т. е. расход батареи компонентом дисплея) для поддержания дисплея включенным, фреймворк отслеживает время, проведенное на каждом уровне яркости, затем умножает эти временные интервалы на интерполированную стоимость яркости дисплея.
Фреймворк также умножает время ЦП для каждого приложения на мА, необходимые для работы ЦП на определенной скорости. Этот расчет устанавливает сравнительный рейтинг того, сколько батареи потребляет приложение, выполняя код ЦП (время в качестве приложения переднего плана и общее время, включая фоновую активность, сообщаются отдельно).