diff options
author | Nick Pelly <npelly@google.com> | 2012-06-11 12:38:11 -0700 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2012-06-15 16:14:23 -0700 |
commit | cafe527dcda89643787a811dec29e503fd50607e (patch) | |
tree | 7a00b2088a4efeada7fa8e52aa81a3411ec97f73 /src/com/android/settings/fuelgauge | |
parent | 51ba25a8fa97466ed64b90131614ca9c790d5466 (diff) | |
download | packages_apps_settings-cafe527dcda89643787a811dec29e503fd50607e.zip packages_apps_settings-cafe527dcda89643787a811dec29e503fd50607e.tar.gz packages_apps_settings-cafe527dcda89643787a811dec29e503fd50607e.tar.bz2 |
Include WIFI scan time in per-application power usage summary.
Also, improve logging to more easily show power break-down for
each UID.
Bug: 6642581
Change-Id: Ib36f4bf9c8c579797225cf887e5b2d323cca61b0
Diffstat (limited to 'src/com/android/settings/fuelgauge')
-rw-r--r-- | src/com/android/settings/fuelgauge/PowerUsageSummary.java | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index fa2b02d..ab2c891 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -436,6 +436,7 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { final int NU = uidStats.size(); for (int iu = 0; iu < NU; iu++) { Uid u = uidStats.valueAt(iu); + double p; double power = 0; double highestDrain = 0; String packageWithHighestDrain = null; @@ -445,11 +446,11 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { long cpuFgTime = 0; long wakelockTime = 0; long gpsTime = 0; + if (DEBUG) Log.i(TAG, "UID " + u.getUid()); if (processStats.size() > 0) { // Process CPU time for (Map.Entry<String, ? extends BatteryStats.Uid.Proc> ent : processStats.entrySet()) { - if (DEBUG) Log.i(TAG, "Process name = " + ent.getKey()); Uid.Proc ps = ent.getValue(); final long userTime = ps.getUserTime(which); final long systemTime = ps.getSystemTime(which); @@ -470,6 +471,10 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { processPower += ratio * tmpCpuTime * powerCpuNormal[step]; } cpuTime += tmpCpuTime; + if (DEBUG && processPower != 0) { + Log.i(TAG, String.format("process %s, cpu power=%.2f", + ent.getKey(), processPower / 1000)); + } power += processPower; if (packageWithHighestDrain == null || packageWithHighestDrain.startsWith("*")) { @@ -481,8 +486,6 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { packageWithHighestDrain = ent.getKey(); } } - if (DEBUG) Log.i(TAG, "Max drain of " + highestDrain - + " by " + packageWithHighestDrain); } if (cpuFgTime > cpuTime) { if (DEBUG && cpuFgTime > cpuTime + 10000) { @@ -491,6 +494,7 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { cpuTime = cpuFgTime; // Statistics may not have been gathered yet. } power /= 1000; + if (DEBUG && power != 0) Log.i(TAG, String.format("total cpu power=%.2f", power)); // Process wake lock usage Map<String, ? extends BatteryStats.Uid.Wakelock> wakelockStats = u.getWakelockStats(); @@ -508,19 +512,32 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { appWakelockTime += wakelockTime; // Add cost of holding a wake lock - power += (wakelockTime + p = (wakelockTime * mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_AWAKE)) / 1000; + power += p; + if (DEBUG && p != 0) Log.i(TAG, String.format("wakelock power=%.2f", p)); // Add cost of data traffic long tcpBytesReceived = u.getTcpBytesReceived(mStatsType); long tcpBytesSent = u.getTcpBytesSent(mStatsType); - power += (tcpBytesReceived+tcpBytesSent) * averageCostPerByte; + p = (tcpBytesReceived+tcpBytesSent) * averageCostPerByte; + power += p; + if (DEBUG && p != 0) Log.i(TAG, String.format("tcp power=%.2f", p)); // Add cost of keeping WIFI running. long wifiRunningTimeMs = u.getWifiRunningTime(uSecTime, which) / 1000; mAppWifiRunning += wifiRunningTimeMs; - power += (wifiRunningTimeMs + p = (wifiRunningTimeMs * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)) / 1000; + power += p; + if (DEBUG && p != 0) Log.i(TAG, String.format("wifi running power=%.2f", p)); + + // Add cost of WIFI scans + long wifiScanTimeMs = u.getWifiScanTime(uSecTime, which) / 1000; + p = (wifiScanTimeMs + * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_SCAN)) / 1000; + power += p; + if (DEBUG && p != 0) Log.i(TAG, String.format("wifi scanning power=%.2f", p)); // Process Sensor usage Map<Integer, ? extends BatteryStats.Uid.Sensor> sensorStats = u.getSensorStats(); @@ -541,16 +558,16 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { sensorManager.getDefaultSensor(sensorType); if (sensorData != null) { multiplier = sensorData.getPower(); - if (DEBUG) { - Log.i(TAG, "Got sensor " + sensorData.getName() + " with power = " - + multiplier); - } } } - power += (multiplier * sensorTime) / 1000; + p = (multiplier * sensorTime) / 1000; + power += p; + if (DEBUG && p != 0) { + Log.i(TAG, String.format("sensor %s power=%.2f", sensor.toString(), p)); + } } - if (DEBUG) Log.i(TAG, "UID " + u.getUid() + ": power=" + power); + if (DEBUG) Log.i(TAG, String.format("UID %d total power=%.2f", u.getUid(), power)); // Add the app to the list if it is consuming power if (power != 0 || u.getUid() == 0) { @@ -583,7 +600,6 @@ public class PowerUsageSummary extends PreferenceFragment implements Runnable { if (power > mMaxPower) mMaxPower = power; mTotalPower += power; } - if (DEBUG) Log.i(TAG, "Added power = " + power); } // The device has probably been awake for longer than the screen on |