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