summaryrefslogtreecommitdiff
path: root/core/java/android/os/BatteryStats.java
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2021-04-14 19:34:32 -0700
committerDmitri Plotnikov <dplotnikov@google.com>2021-05-10 15:20:18 -0700
commite43992bbdb91098aac3ff2fc678f2d58558dcb98 (patch)
treee01eeea847d7a300c9d8188f72dbcd81eb161dde /core/java/android/os/BatteryStats.java
parent1ebf0cf0069daf06115e7aec62e6d1d95f7e2c90 (diff)
Convert BatteryStats.dumpLocked from BatteryStatsHelper to BatteryUsageStats
Bug: 162380414 Test: atest FrameworksCoreTests:BatteryUsageStatsTest Change-Id: Icb508c60e037ee983c0ebde5905ec0a08fe648c3
Diffstat (limited to 'core/java/android/os/BatteryStats.java')
-rw-r--r--core/java/android/os/BatteryStats.java154
1 files changed, 10 insertions, 144 deletions
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index eec6810fa8bc..c97d1f8bcf02 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -51,6 +51,7 @@ import android.view.Display;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
+import com.android.internal.os.BatteryUsageStatsProvider;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -5299,154 +5300,19 @@ public abstract class BatteryStats implements Parcelable {
pw.println(getDischargeAmountScreenDozeSinceCharge());
pw.println();
+ final BatteryUsageStatsProvider provider = new BatteryUsageStatsProvider(context, this);
+ final BatteryUsageStats stats = provider.getBatteryUsageStats(
+ new BatteryUsageStatsQuery.Builder()
+ .setMaxStatsAgeMs(0)
+ .includePowerModels()
+ .build());
+ stats.dump(pw, prefix);
+
final BatteryStatsHelper helper = new BatteryStatsHelper(context, false, wifiOnly);
helper.create(this);
helper.refreshStats(which, UserHandle.USER_ALL);
- List<BatterySipper> sippers = helper.getUsageList();
- if (sippers != null && sippers.size() > 0) {
- pw.print(prefix); pw.println(" Estimated power use (mAh):");
- pw.print(prefix); pw.print(" Capacity: ");
- printmAh(pw, helper.getPowerProfile().getBatteryCapacity());
- pw.print(", Computed drain: "); printmAh(pw, helper.getComputedPower());
- pw.print(", actual drain: "); printmAh(pw, helper.getMinDrainedPower());
- if (helper.getMinDrainedPower() != helper.getMaxDrainedPower()) {
- pw.print("-"); printmAh(pw, helper.getMaxDrainedPower());
- }
- pw.println();
- for (int i=0; i<sippers.size(); i++) {
- final BatterySipper bs = sippers.get(i);
- pw.print(prefix);
- switch (bs.drainType) {
- case AMBIENT_DISPLAY:
- pw.print(" Ambient display: ");
- break;
- case IDLE:
- pw.print(" Idle: ");
- break;
- case CELL:
- pw.print(" Cell standby: ");
- break;
- case PHONE:
- pw.print(" Phone calls: ");
- break;
- case WIFI:
- pw.print(" Wifi: ");
- break;
- case BLUETOOTH:
- pw.print(" Bluetooth: ");
- break;
- case SCREEN:
- pw.print(" Screen: ");
- break;
- case FLASHLIGHT:
- pw.print(" Flashlight: ");
- break;
- case APP:
- pw.print(" Uid ");
- UserHandle.formatUid(pw, bs.uidObj.getUid());
- pw.print(": ");
- break;
- case USER:
- pw.print(" User "); pw.print(bs.userId);
- pw.print(": ");
- break;
- case UNACCOUNTED:
- pw.print(" Unaccounted: ");
- break;
- case OVERCOUNTED:
- pw.print(" Over-counted: ");
- break;
- case CAMERA:
- pw.print(" Camera: ");
- break;
- default:
- pw.print(" ???: ");
- break;
- }
- printmAh(pw, bs.totalPowerMah);
-
- if (bs.usagePowerMah != bs.totalPowerMah) {
- // If the usage (generic power) isn't the whole amount, we list out
- // what components are involved in the calculation.
-
- pw.print(" (");
- if (bs.usagePowerMah != 0) {
- pw.print(" usage=");
- printmAh(pw, bs.usagePowerMah);
- }
- if (bs.cpuPowerMah != 0) {
- pw.print(" cpu=");
- printmAh(pw, bs.cpuPowerMah);
- }
- if (bs.wakeLockPowerMah != 0) {
- pw.print(" wake=");
- printmAh(pw, bs.wakeLockPowerMah);
- }
- if (bs.mobileRadioPowerMah != 0) {
- pw.print(" radio=");
- printmAh(pw, bs.mobileRadioPowerMah);
- }
- if (bs.wifiPowerMah != 0) {
- pw.print(" wifi=");
- printmAh(pw, bs.wifiPowerMah);
- }
- if (bs.bluetoothPowerMah != 0) {
- pw.print(" bt=");
- printmAh(pw, bs.bluetoothPowerMah);
- }
- if (bs.gpsPowerMah != 0) {
- pw.print(" gps=");
- printmAh(pw, bs.gpsPowerMah);
- }
- if (bs.sensorPowerMah != 0) {
- pw.print(" sensor=");
- printmAh(pw, bs.sensorPowerMah);
- }
- if (bs.cameraPowerMah != 0) {
- pw.print(" camera=");
- printmAh(pw, bs.cameraPowerMah);
- }
- if (bs.flashlightPowerMah != 0) {
- pw.print(" flash=");
- printmAh(pw, bs.flashlightPowerMah);
- }
- if (bs.customMeasuredPowerMah != null) {
- for (int idx = 0; idx < bs.customMeasuredPowerMah.length; idx++) {
- final double customPowerMah = bs.customMeasuredPowerMah[idx];
- if (customPowerMah != 0) {
- pw.print(" custom[" + idx + "]=");
- printmAh(pw, customPowerMah);
- }
- }
- }
- pw.print(" )");
- }
-
- // If there is additional smearing information, include it.
- if (bs.totalSmearedPowerMah != bs.totalPowerMah) {
- pw.print(" Including smearing: ");
- printmAh(pw, bs.totalSmearedPowerMah);
- pw.print(" (");
- if (bs.screenPowerMah != 0) {
- pw.print(" screen=");
- printmAh(pw, bs.screenPowerMah);
- }
- if (bs.proportionalSmearMah != 0) {
- pw.print(" proportional=");
- printmAh(pw, bs.proportionalSmearMah);
- }
- pw.print(" )");
- }
- if (bs.shouldHide) {
- pw.print(" Excluded from smearing");
- }
-
- pw.println();
- }
- pw.println();
- }
- sippers = helper.getMobilemsppList();
+ final List<BatterySipper> sippers = helper.getMobilemsppList();
if (sippers != null && sippers.size() > 0) {
pw.print(prefix); pw.println(" Per-app mobile ms per packet:");
long totalTime = 0;