Intereting Posts
Будет ли токен FCM периодически изменяться, как идентификатор регистрации GCM? Пользовательское свойство моего пользовательского открытого графического объекта не отображается в диалоговом окне «Общий доступ» При создании POJO в Firebase вы можете использовать ServerValue.TIMESTAMP? Каков самый надежный способ определения тактовой частоты процессора телефонов Android? Как получить текущую дочернюю позицию ViewFlipper Метод FitnessActivities.getName (int i) устарел, какой метод использовать вместо этого? Android – openContactPhotoInputStream возвращает NULL для всех идентификаторов фото для контакта Не удалось загрузить файл свойств для проекта android Android ListView: не выделяется прикосновением, но работает, когда я использую трекбол Как отправить сообщение из приложения Android через сообщение Viber Как проверить JUnit IntentService Анимированный переход между активностью и другим Широковещательные приемники не работают в Android 6.0 Marshmallow Android Studio: импорт проекта в существующий проект Android, Как отобразить буферизацию% from onBufferingUpdate

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

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

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

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

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

Solutions Collecting From Web of "Android – информация об использовании аккумулятора"

Извините, что разочаровал вас, но 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