Intereting Posts
Как анализировать комплексный ответ с использованием библиотеки ksoap2 в android В Android, как передать предопределенную поверхность для MediaCodec для кодирования? Ошибка приложения в Android M Как настроить оттенок цветового кода? Gridview: как заполнить все пространство текстовым видом Получение значения EditTexts в AlertDialog-компоновщике с использованием макета Создание программных настроек Как я повторяю метод каждые 10 минут после нажатия кнопки и завершения ее на другой кнопке Как включить подписку на Google Play Android: отобразите TextView в правой части EditText, который находится в TextInputLayout Как добраться до командной строки в Eclipse Динамически созданная радио-кнопка или CheckBox не использует Color Accent Listview в android не обновлял представление, пока не перетащил Как определить, на какой платформе работает текущее приложение в LibGDX? Как создать лицензионный ключ в качестве загружаемого и проверить его на Android

Android – информация об использовании аккумулятора

Используя этот код, я могу найти уровень заряда аккумулятора телефона:

int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float percent = (level / (float)scale) * 100; 

Но как я могу получить информацию об использовании аккумулятора для приложений, установленных на телефоне, в том числе экрана, как показано на рисунке ниже?

Скриншот экрана сведений об использовании аккумулятора

Извините, что разочаровал вас, но API-интерфейсы использования Android не являются общедоступными . Поэтому нет официального способа получить то, что вы хотите.

Но вы можете использовать рефлексию для доступа к некоторым частным членам и методам и использовать их. Вы также можете это проверить. Отсюда вы можете получить некоторые количественные значения для потребления энергии отдельными приложениями.

Вы можете использовать это значение для расчета процента для всех приложений.

Батарея может быть сброшена с устройства следующим образом:

 adb shell dumpsys batteryinfo 

Измерение энергопотребления для конкретного приложения или для определенной части аппаратного обеспечения телефона не так просто. Из общедоступного API разработчика Google это невозможно сделать простым способом. Существуют и другие способы, которые являются довольно сложными. Для каждого 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 

Дает вам текущее состояние вашего ЖК-дисплея (обратите внимание, что для этого не требуется корневой доступ). Для каждого аппаратного компонента такой путь существует. Если вы сейчас хотите точно измерить, сколько энергии потребляет приложение, вам нужно написать услугу, которая отслеживает, когда приложение активно или нет, и каковы текущие состояния аппаратного обеспечения. С помощью этой информации вы можете вычислить потребление энергии.

Существует также приложение, которое является открытым исходным кодом, оно называется PowerTutor (здесь есть ссылка Play-Store, и вы найдете исходный код . Это именно то, что я только что объяснил. Они также публикуют научный документ о том, насколько точны их Подход (он хорошо работает).

Теперь проблема. Несколько лет назад у меня была проблема измерения энергопотребления некоторых приложений. Клиент хотел, чтобы мы оценили их точное потребление энергии. В итоге мы выяснили, что профили мощности, на которых основан анализ, недостаточно точны. Похоже, что производители просто добавляют некоторые ценности в XML, которые даже не связаны с устройством. У нас было более 100 различных устройств из 20 разных брендов, только некоторые из них, казалось, имели ценности в своем XML, которые были связаны с устройством.

Наконец, я могу сказать, не тратьте много времени на измерение реального потребления энергии на стороне программного обеспечения, это не стоит усилий. Используйте настоящий мультиметр и измерьте оборудование напрямую.

Вместо использования рефлексии для доступа к некоторым частным членам и методам я бы рекомендовал вам запрограммировать среду исходного кода, которая позволит вам использовать любой частный API.

Если вы также хотите включить внутренние классы или методы, выполните следующие действия:

  1. Перейдите в / platform /.
  2. Скопируйте, вставьте и замените загруженный скрытый файл API в этот каталог, например, android-23 / android.jar.
  3. Измените compileSdkVersion и targetSdkVersion на 23 (например).
  4. Наконец, перестройте свой проект.

https://github.com/anggrayudi/android-hidden-api