Производители устройств должны предоставить профиль энергопотребления компонента в файле /frameworks/base/core/res/res/xml/power_profile.xml .
Для определения значений профилей энергопотребления используйте оборудование, измеряющее потребляемую устройством мощность, и выполните различные операции, для которых необходима информация. Измерьте энергопотребление во время этих операций и вычислите значения (при необходимости выведите разницу с другими базовыми показателями энергопотребления).
Поскольку цель профиля энергопотребления — адекватно оценить расход заряда батареи, значения профиля энергопотребления указываются в амперах (токе). Платформа Android умножает ток на время активности подсистемы и вычисляет значение в мАч, которое затем используется для оценки количества заряда батареи, потребляемого приложением или подсистемой.
Устройства с контроллерами Bluetooth, модема и Wi-Fi, работающие под управлением Android 7.0 и выше, могут предоставлять дополнительные данные об энергопотреблении, полученные из информации, предоставленной чипсетом.
Устройства с гетерогенными процессорами
Профиль энергопотребления для устройств с процессорными ядрами гетерогенной архитектуры должен включать следующие дополнительные поля:
- Общее количество процессоров в каждом кластере (выраженное в cpu.clusters.cores).
- Поддерживаемые каждым кластером скорости процессоров.
- Активное энергопотребление ЦП для каждого кластера.
Чтобы различать активное энергопотребление ЦП и поддерживаемые скорости ЦП для кластеров, добавьте номер кластера к имени массива. Номера кластеров присваиваются в порядке ядер ЦП в дереве устройств ядра. Например, в гетерогенной архитектуре, имеющей два (2) кластера с четырьмя (4) ядрами:
- кластер0 состоит из процессоров 0-3
- кластер1 состоит из процессоров 4-7
В Android-фреймворке эти номера ядер процессора используются при чтении статистики из файлов sysfs , расположенных по адресу: /sys/devices/system/cpu/cpu<number>/cpufreq/stats .
Пример количества процессоров и их скорости в кластере:
<array name="cpu.active.cluster0"> <value>200</value> <value>300</value> <value>400</value> </array> <array name="cpu.speeds.cluster0"> <value>600000</value> <value>800000</value> <value>1200000</value> </array> <array name="cpu.active.cluster1"> <value>400</value> <value>500</value> <value>600</value> </array> <array name="cpu.speeds.cluster1"> <value>800000</value> <value>1200000</value> <value>1400000</value> </array>
Значения мощности
В таблице ниже описаны доступные значения параметров мощности. Чтобы просмотреть пример файла в AOSP, см. power_profile.xml .
| Имя | Описание | Пример значения | Примечания |
|---|---|---|---|
| ambient.on | Дополнительное энергопотребление, когда экран находится в режиме энергосбережения/постоянного свечения/всегда включен, вместо выключения. | около 100 мА | - |
| экран.вкл | Дополнительное энергопотребление при включении экрана на минимальной яркости. | 200 мА | Включает сенсорный контроллер и подсветку дисплея. Яркость равна 0, а не минимальной, установленной в Android, которая обычно составляет 10 или 20%. |
| screen.full | При максимальной яркости экрана потребляется больше энергии по сравнению с минимальной яркостью. | 100 мА-300 мА | Часть этого значения (в зависимости от яркости экрана) добавляется к значению screen.on для вычисления энергопотребления экрана. |
| wifi.on | Дополнительная мощность, потребляемая при включенном Wi-Fi, но не при приеме, передаче или сканировании. | 2 мА | - |
| wifi.active | Дополнительная мощность, потребляемая при передаче или приеме данных по Wi-Fi. | 31 мА | - |
| wifi.scan | Дополнительная мощность расходуется при сканировании точек доступа Wi-Fi. | 100 мА | - |
| аудио | Дополнительная мощность, потребляемая при декодировании/кодировании аудиосигнала с помощью цифрового сигнального процессора (DSP). | около 10 мА | Используется для цифровой обработки звука (DSP). |
| видео | Дополнительная мощность потребляется при декодировании видео с помощью цифрового сигнального процессора (DSP). | около 50 мА | Используется для цифровой обработки видеосигнала. |
| camera.avg | Среднее энергопотребление подсистемы камеры для типичного приложения камеры. | 600 мА | Это приблизительная оценка для приложения, работающего в режиме предварительного просмотра и делающего примерно 10 снимков в полном разрешении в минуту. |
| камера.фонарик | Средняя мощность, потребляемая модулем вспышки камеры во включенном состоянии. | 200 мА | - |
| gps.signalqualitybased | Дополнительная мощность, потребляемая GPS в зависимости от уровня сигнала. Это многозначный параметр, по одному значению для каждого уровня сигнала, от самого слабого до самого сильного. | 30 мА, 10 мА | - |
| gps.on | Дополнительная мощность, потребляемая при получении сигнала GPS. | 50 мА | - |
| радио.актив | Дополнительная мощность, потребляемая при передаче/приёме сигнала сотовой связи. | 100 мА-300 мА | - |
| радио.сканирование | Дополнительная мощность, потребляемая при передаче сигнала сотовой связи на вышку. | 1,2 мА | - |
| радио.вкл | Дополнительная мощность, потребляемая при включенном сотовом модуле. Это многозначный параметр, по одному значению для каждого уровня сигнала (нет сигнала, слабый, умеренный, сильный). | 1,2 мА | Некоторые радиомодули увеличивают мощность сигнала, когда ищут базовую станцию сотовой связи и не обнаруживают сигнала. Значения могут оставаться неизменными или уменьшаться с увеличением мощности сигнала. Если вы укажете только одно значение, оно будет использоваться для всех уровней мощности. Если вы укажете два значения, первое будет использоваться при отсутствии сигнала, второе — при всех остальных уровнях мощности и так далее. |
| bluetooth.controller.idle | Среднее потребление тока (мА) контроллером Bluetooth в режиме ожидания. | - | Эти значения не являются приблизительными, а взяты из технической документации контроллера. Если имеется несколько состояний приема или передачи, берется среднее значение этих состояний. Кроме того, система теперь собирает данные для сканирования в режиме низкого энергопотребления (LE) и Bluetooth . В Android 7.0 и более поздних версиях больше не используются значения мощности Bluetooth для параметров bluetooth.active (используется при воспроизведении аудио через Bluetooth A2DP) и bluetooth.on (используется, когда Bluetooth включен, но находится в режиме ожидания). |
| bluetooth.controller.rx | Среднее потребление тока (мА) контроллером Bluetooth при приеме сигнала. | - | |
| bluetooth.controller.tx | Среднее потребление тока (мА) контроллером Bluetooth при передаче. | - | |
| bluetooth.controller.voltage | Среднее рабочее напряжение (мВ) контроллера Bluetooth. | - | |
| модем.контроллер.сон | Среднее потребление тока (мА) контроллером модема в спящем режиме. | 0 мА | Эти значения не являются приблизительными, а взяты из технической документации контроллера. Если имеется несколько состояний приема, берется среднее значение этих состояний. Если имеется несколько состояний передачи, начиная с Android 9 поддерживается указание значения для каждого состояния передачи. |
| модем.контроллер.пропуск | Среднее потребление тока (мА) контроллером модема в режиме ожидания. | - | |
| модем.контроллер.rx | Среднее потребление тока (мА) контроллером модема при приеме сигнала. | - | |
| модем.контроллер.tx | Среднее потребление тока (мА) контроллером модема при передаче на разных уровнях мощности радиочастотного сигнала. Это многозначное поле, по одному значению для каждого уровня мощности передачи. | 100 мА, 200 мА, 300 мА, 400 мА, 500 мА | |
| модем.контроллер.напряжение | Среднее рабочее напряжение (мВ) контроллера модема. | - | |
| wifi.controller.idle | Среднее потребление тока (мА) контроллером Wi-Fi в режиме ожидания. | - | Эти значения не являются приблизительными, а взяты из технической документации контроллера. Если имеется несколько состояний приема или передачи, берется среднее значение этих состояний. |
| wifi.controller.rx | Среднее потребление тока (мА) контроллером Wi-Fi при приеме сигнала. | - | |
| wifi.controller.tx | Среднее потребление тока (мА) контроллером Wi-Fi при передаче. | - | |
| wifi.controller.voltage | Среднее рабочее напряжение (мВ) контроллера Wi-Fi. | - | |
| cpu.speeds | Это многозначный параметр, в котором перечислены все возможные скорости процессора в кГц. | 125000 кГц, 250000 кГц, 500000 кГц, 1000000 кГц, 1500000 кГц | Количество и порядок записей должны соответствовать значениям mA в файле cpu.active. |
| cpu.idle | Общая потребляемая системой мощность, когда процессоры (и SoC) находятся в режиме ожидания. | 3 мА | - |
| cpu.awake | Дополнительная мощность, потребляемая процессорами, когда они находятся в режиме ожидания планирования (цикл ожидания ядра); система не находится в режиме приостановки. | 50 мА | На вашей платформе может использоваться несколько состояний простоя с разным уровнем энергопотребления; выберите репрезентативное состояние простоя для более длительных периодов простоя планировщика (несколько миллисекунд). Изучите график энергопотребления на вашем измерительном оборудовании и выберите выборки, где потребление ЦП минимально, отбрасывая выборки с более высоким потреблением, когда ЦП вышел из состояния простоя. |
| cpu.active | Дополнительная мощность, потребляемая процессорами при работе на разных скоростях. | 100 мА, 120 мА, 140 мА, 160 мА, 200 мА | Значение отражает потребляемую мощность процессорных линий при работе на разных скоростях. Установите максимальную скорость в ядре на каждую из разрешенных скоростей и зафиксируйте процессор на этой скорости. Количество и порядок записей соответствуют количеству и порядку записей в cpu.speeds. |
| cpu.clusters.cores | Количество ядер, содержащихся в каждом кластере ЦП. | 4, 2 | Требуется только для устройств с гетерогенной архитектурой ЦП . Количество записей и их порядок должны соответствовать количеству записей кластера для параметров cpu.active и cpu.speeds. Первая запись представляет количество ядер ЦП в кластере 0, вторая — количество ядер ЦП в кластере 1 и так далее. |
| емкость батареи | Общая емкость батареи в мАч. | 3000 мАч | - |
Сканирование с низким энергопотреблением (LE) и Bluetooth
Для устройств под управлением Android 7.0 система собирает данные о сканированиях с низким энергопотреблением (LE) и сетевом трафике Bluetooth (например, RFCOMM и L2CAP) и связывает эти действия с инициирующим приложением. Сканирования Bluetooth связываются с приложением, инициировавшим сканирование, но пакетные сканирования — нет (а связываются с приложением Bluetooth). Для приложения, сканирующего в течение N миллисекунд, стоимость сканирования составляет N миллисекунд времени приема и N миллисекунд времени передачи; все оставшееся время контроллера выделяется на сетевой трафик или приложение Bluetooth.