Измерить энергопотребление для конкретного приложения или для определенной части аппаратного обеспечения телефона не так просто. Из общедоступного Google Developer API это невозможно сделать простым способом. Есть и другие способы, которые довольно сложны. Для каждого Android-смартфона Google требует, чтобы производитель добавил так называемый профиль питания XML. к устройству. Они выглядят так
<item name="screen.on">0.1</item> <!-- ~200mA -->
<item name="screen.full">0.1</item> <!-- ~300mA -->
<item name="bluetooth.active">0.1</item> <!-- Bluetooth data transfer, ~10mA -->
<item name="bluetooth.on">0.1</item> <!-- Bluetooth on & connectable, but not connected, ~0.1mA -->
<item name="wifi.on">0.1</item> <!-- ~3mA -->
<item name="wifi.active">0.1</item> <!-- WIFI data transfer, ~200mA -->
<item name="wifi.scan">0.1</item>
Они сообщают вам, сколько тока потребляет каждое аппаратное состояние компонента (например, Wi-Fi имеет три состояния, процессор — 10 и т. д.). Теперь Android основан на Linux, и это позволяет вам проверять текущее состояние каждого аппаратного компонента. Например, файл
/sys/devices/virtual/leds/lcd-backlight/brightness
дает вам текущее состояние вашего ЖК-дисплея (обратите внимание, что для этого не требуется root-доступ). Для каждого аппаратного компонента существует такой путь. Если теперь вы хотите точно измерить, сколько энергии потребляет приложение, вам нужно написать службу, которая отслеживает, когда приложение активно или нет, и каковы текущие состояния оборудования. С помощью этой информации вы можете рассчитать потребление энергии.
Также существует приложение с открытым исходным кодом, оно называется PowerTutor (вот ссылка на Play-Store и здесь вы найдете исходный код. Он делает именно то, что я только что объяснил. Они также публикуют научный paper о том, насколько точен их подход (он хорошо работает).
Теперь возникает проблема. Несколько лет назад у меня возникла проблема с измерением энергопотребления некоторых приложений. Клиент хотел, чтобы мы оценили его точное энергопотребление. В итоге мы обнаружили, что профили мощности, на которых основан анализ, недостаточно точны. Создавалось впечатление, что производители просто помещают в XML какие-то значения, которые даже не относятся к устройству. У нас было более 100 различных устройств от 20 разных брендов, только некоторые из них, казалось, имели значения в XML, которые были связаны с устройством.
Наконец, я могу сказать, что не тратьте слишком много времени на измерение реального энергопотребления со стороны программного обеспечения, оно того не стоит. Используйте настоящий мультиметр и измерьте оборудование напрямую.
person
Westranger
schedule
25.02.2016