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