2015-09-14 5 views
3

Я разрабатываю приложение, которое отслеживает движение пользователя с использованием информации о местоположении GPS и сети. Я использую Службы, Распознавание активности, различные частоты дискретизации и тайм-ауты GPS/сети для повышения эффективности батареи.ИТОГО энергопотребление приложения Android (CPU, GPS, Network, WiFi).

Вопрос: Как я могу измерить точную сумму (мВ, мА/час или% от общего потребления) мощности, потребляемой моим приложением? Не только база на CPU, но и по телефону GPS, Network, WiFi. Поэтому я могу сделать вывод об эффективности использования батареи в приложении.

Я получаю статистику батареи на adb shell dumpsys batterystats.

Это то, что я вижу в течение 1 часа использования во время путешествий пешком и на поезде:

Mobile network: 10.61KB received, 7.41KB sent (packets 26 received, 34 sent) 
Mobile radio active: 18s 180ms (0.7%) 8x @ 303 mspp 
Wifi Running: 0ms (0.0%) 
Full Wifi Lock: 2m 8s 907ms (3.9%) 

**Wifi Scan: 3m 20s 904ms (6.1%)** 

Wake lock NlpCollectorWakeLock: 1m 23s 525ms partial (100 times) realtime 
Wake lock *alarm*: 269ms partial (97 times) realtime 
Wake lock NlpWakeLock: 264ms partial (83 times) realtime 
Wake lock LocationManagerService: 64ms partial (19 times) realtime 
TOTAL wake: 1m 24s 122ms partial realtime 

**Sensor GPS: 5m 15s 109ms realtime (185 times)** 

Foreground activities: 2m 40s 107ms realtime (10 times) 
Foreground for: 51m 51s 176ms 
Active for: 55m 1s 142ms 
Proc xxxxxxxxxxx: 

    **CPU: 30s 670ms usr + 6s 800ms krn ; 7s 810ms fg** 

Proc *wakelock*: 

    **CPU: 12s 660ms usr + 15s 40ms krn ; 0ms fg** 

Apk xxxxxxxxxxx: 
    122 wakeup alarms 
    Service xxxxxxxxxxx.ActivityRecognitionIntentService: 
    Created for: 6s 652ms uptime 
    Starts: 356, launches: 356 
Apk com.google.android.gms: 
    (nothing executed) 

Я думаю, что наиболее энергоемкая вещь являются датчик GPS вызовов, использование процессора и Wi-Fi.

Вопросы:

1) Как я могу интерпретировать эти цифры? Можно ли узнать, насколько каждый GPS-вызов (или в реальном времени) является дорогостоящим?

2) Есть ли лучшие способы узнать об общей потребляемой мощности приложения?

+0

Также я вижу «Предполагаемое использование мощности (мАч) приложением: 16,4 мАч». (2300 - 100% => 16,4 - 0,71%), что, безусловно, не является общей потребляемой мощностью. –

ответ

2

Как упоминалось в Battery Performance 101 и Understanding Battery Drain Android не предоставляет низкоуровневые счетчики об отрыве батареи за чип. Накладные расходы на отслеживание этих данных будут значительными как на уровне ведения журнала, так и на уровне оборудования.

Единственный верный способ получить эту информацию - подключить свой Android к MONSOON device, но даже тогда ваши результаты будут искажены, так как искажение мощности изменяется между устройствами & форм-факторами.

Среднее основание - это инструмент Battery Historian, в котором рассказывается, какие важные системы активны, позволяя затем находить корреляцию между этими событиями и тем, что было связано с оборудованием. Стоит отметить, что Battery Historian - это просто UI-конверсия для инструмента BatteryStats (который вы уже используете). Он выполняет всю работу по очистке и интерпретации данных в визуальную форму для вас.

Хотя это не 100% на месте; Как вы можете видеть с Battery Drain and Networking, оптимизация использования аккумулятора - поиск шаблонов в Battery Historian, которые, как известно, являются проблематичными, и пытаются изменить код, чтобы воздействовать на них. Таким образом, при диагностировании некоторых вещей происходит небольшое размахивание рукой.

На данный момент предлагается способ получения точной информации об использовании аккумулятора.

+0

Не могли бы вы поделиться исходным кодом для этого же. – user3930824

+0

Если вы рассматриваете возможность использования Monsoon, ознакомьтесь с этой статьей о том, как ее настроить и выполните измерения: https://tqrg.github.io/physalia/monsoon_tutorial. Вы также можете проверить методы оценки, такие как PETrA https: // figshare.com/articles/PETrA_a_Software-based_Tool_for_Estimating_the_Energy_Profile_of_Android_Applications/4233767 –