summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2022-01-27 00:11:17 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-01-27 00:11:17 +0000
commit2fccc3a6bf53695fbfeb6f06d18fb933937a22d0 (patch)
treea9c5d86eb74629844298adba7755518cbc4ff0af /core/java
parentb0535184746204e6e0496f808bc3cd4d386c86ca (diff)
parent035fba8e31a25fc50f37b757942a9aaff29ba182 (diff)
Merge "Allow requesting BatteryUsageStats for specific power components"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/BatteryUsageStatsQuery.java27
-rw-r--r--core/java/com/android/internal/os/AmbientDisplayPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/AudioPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/BatteryChargeCalculator.java7
-rw-r--r--core/java/com/android/internal/os/BatteryUsageStatsProvider.java13
-rw-r--r--core/java/com/android/internal/os/BluetoothPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/CameraPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/CpuPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/FlashlightPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/GnssPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/IdlePowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/MediaPowerCalculator.java7
-rw-r--r--core/java/com/android/internal/os/MemoryPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/MobileRadioPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/PhonePowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/PowerCalculator.java8
-rw-r--r--core/java/com/android/internal/os/ScreenPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/SensorPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/SystemServicePowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/UserPowerCalculator.java6
-rw-r--r--core/java/com/android/internal/os/VideoPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/WakelockPowerCalculator.java5
-rw-r--r--core/java/com/android/internal/os/WifiPowerCalculator.java5
24 files changed, 156 insertions, 2 deletions
diff --git a/core/java/android/os/BatteryUsageStatsQuery.java b/core/java/android/os/BatteryUsageStatsQuery.java
index 81e49e958584..37bd51bb66c5 100644
--- a/core/java/android/os/BatteryUsageStatsQuery.java
+++ b/core/java/android/os/BatteryUsageStatsQuery.java
@@ -75,8 +75,9 @@ public final class BatteryUsageStatsQuery implements Parcelable {
@NonNull
private final int[] mUserIds;
private final long mMaxStatsAgeMs;
- private long mFromTimestamp;
- private long mToTimestamp;
+ private final long mFromTimestamp;
+ private final long mToTimestamp;
+ private final @BatteryConsumer.PowerComponent int[] mPowerComponents;
private BatteryUsageStatsQuery(@NonNull Builder builder) {
mFlags = builder.mFlags;
@@ -85,6 +86,7 @@ public final class BatteryUsageStatsQuery implements Parcelable {
mMaxStatsAgeMs = builder.mMaxStatsAgeMs;
mFromTimestamp = builder.mFromTimestamp;
mToTimestamp = builder.mToTimestamp;
+ mPowerComponents = builder.mPowerComponents;
}
@BatteryUsageStatsFlags
@@ -116,6 +118,14 @@ public final class BatteryUsageStatsQuery implements Parcelable {
}
/**
+ * Returns the power components that should be estimated or null if all power components
+ * are being requested.
+ */
+ public int[] getPowerComponents() {
+ return mPowerComponents;
+ }
+
+ /**
* Returns the client's tolerance for stale battery stats. The data is allowed to be up to
* this many milliseconds out-of-date.
*/
@@ -147,6 +157,7 @@ public final class BatteryUsageStatsQuery implements Parcelable {
mMaxStatsAgeMs = in.readLong();
mFromTimestamp = in.readLong();
mToTimestamp = in.readLong();
+ mPowerComponents = in.createIntArray();
}
@Override
@@ -157,6 +168,7 @@ public final class BatteryUsageStatsQuery implements Parcelable {
dest.writeLong(mMaxStatsAgeMs);
dest.writeLong(mFromTimestamp);
dest.writeLong(mToTimestamp);
+ dest.writeIntArray(mPowerComponents);
}
@Override
@@ -187,6 +199,7 @@ public final class BatteryUsageStatsQuery implements Parcelable {
private long mMaxStatsAgeMs = DEFAULT_MAX_STATS_AGE_MS;
private long mFromTimestamp;
private long mToTimestamp;
+ private @BatteryConsumer.PowerComponent int[] mPowerComponents;
/**
* Builds a read-only BatteryUsageStatsQuery object.
@@ -248,6 +261,16 @@ public final class BatteryUsageStatsQuery implements Parcelable {
}
/**
+ * Requests to return only statistics for the specified power components. The default
+ * is all power components.
+ */
+ public Builder includePowerComponents(
+ @BatteryConsumer.PowerComponent int[] powerComponents) {
+ mPowerComponents = powerComponents;
+ return this;
+ }
+
+ /**
* Requests to aggregate stored snapshots between the two supplied timestamps
* @param fromTimestamp Exclusive starting timestamp, as per System.currentTimeMillis()
* @param toTimestamp Inclusive ending timestamp, as per System.currentTimeMillis()
diff --git a/core/java/com/android/internal/os/AmbientDisplayPowerCalculator.java b/core/java/com/android/internal/os/AmbientDisplayPowerCalculator.java
index 94430704468f..d8e89b4c2637 100644
--- a/core/java/com/android/internal/os/AmbientDisplayPowerCalculator.java
+++ b/core/java/com/android/internal/os/AmbientDisplayPowerCalculator.java
@@ -33,6 +33,11 @@ import java.util.List;
public class AmbientDisplayPowerCalculator extends PowerCalculator {
private final UsageBasedPowerEstimator[] mPowerEstimators;
+ @Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY;
+ }
+
public AmbientDisplayPowerCalculator(PowerProfile powerProfile) {
final int numDisplays = powerProfile.getNumDisplays();
mPowerEstimators = new UsageBasedPowerEstimator[numDisplays];
diff --git a/core/java/com/android/internal/os/AudioPowerCalculator.java b/core/java/com/android/internal/os/AudioPowerCalculator.java
index 2eab506bbb6c..f9310b0c28d9 100644
--- a/core/java/com/android/internal/os/AudioPowerCalculator.java
+++ b/core/java/com/android/internal/os/AudioPowerCalculator.java
@@ -44,6 +44,11 @@ public class AudioPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_AUDIO;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final PowerAndDuration total = new PowerAndDuration();
diff --git a/core/java/com/android/internal/os/BatteryChargeCalculator.java b/core/java/com/android/internal/os/BatteryChargeCalculator.java
index 81785298f828..29b9e432b680 100644
--- a/core/java/com/android/internal/os/BatteryChargeCalculator.java
+++ b/core/java/com/android/internal/os/BatteryChargeCalculator.java
@@ -16,6 +16,7 @@
package com.android.internal.os;
+import android.os.BatteryConsumer;
import android.os.BatteryStats;
import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
@@ -30,6 +31,12 @@ import java.util.List;
public class BatteryChargeCalculator extends PowerCalculator {
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ // Always apply this power calculator, no matter what power components were requested
+ return true;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
builder.setDischargePercentage(
diff --git a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java
index 69b7b4e8df0f..e4d5fb7a3ede 100644
--- a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java
+++ b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java
@@ -181,9 +181,22 @@ public class BatteryUsageStatsProvider {
getProcessForegroundTimeMs(uid, realtimeUs));
}
+ final int[] powerComponents = query.getPowerComponents();
final List<PowerCalculator> powerCalculators = getPowerCalculators();
for (int i = 0, count = powerCalculators.size(); i < count; i++) {
PowerCalculator powerCalculator = powerCalculators.get(i);
+ if (powerComponents != null) {
+ boolean include = false;
+ for (int j = 0; j < powerComponents.length; j++) {
+ if (powerCalculator.isPowerComponentSupported(powerComponents[j])) {
+ include = true;
+ break;
+ }
+ }
+ if (!include) {
+ continue;
+ }
+ }
powerCalculator.calculate(batteryUsageStatsBuilder, mStats, realtimeUs, uptimeUs,
query);
}
diff --git a/core/java/com/android/internal/os/BluetoothPowerCalculator.java b/core/java/com/android/internal/os/BluetoothPowerCalculator.java
index 20535d29afcd..066ee84c5ce8 100644
--- a/core/java/com/android/internal/os/BluetoothPowerCalculator.java
+++ b/core/java/com/android/internal/os/BluetoothPowerCalculator.java
@@ -64,6 +64,11 @@ public class BluetoothPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_BLUETOOTH;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
if (!batteryStats.hasBluetoothActivityReporting()) {
diff --git a/core/java/com/android/internal/os/CameraPowerCalculator.java b/core/java/com/android/internal/os/CameraPowerCalculator.java
index ddcabe869b32..7bccab5fc665 100644
--- a/core/java/com/android/internal/os/CameraPowerCalculator.java
+++ b/core/java/com/android/internal/os/CameraPowerCalculator.java
@@ -37,6 +37,11 @@ public class CameraPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_CAMERA;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
super.calculate(builder, batteryStats, rawRealtimeUs, rawUptimeUs, query);
diff --git a/core/java/com/android/internal/os/CpuPowerCalculator.java b/core/java/com/android/internal/os/CpuPowerCalculator.java
index ee614cdbdb95..6a96cfe85e99 100644
--- a/core/java/com/android/internal/os/CpuPowerCalculator.java
+++ b/core/java/com/android/internal/os/CpuPowerCalculator.java
@@ -93,6 +93,11 @@ public class CpuPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_CPU;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
double totalPowerMah = 0;
diff --git a/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java b/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java
index bb307a0d29d8..4cb7ef114094 100644
--- a/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java
+++ b/core/java/com/android/internal/os/CustomMeasuredPowerCalculator.java
@@ -37,6 +37,11 @@ public class CustomMeasuredPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(int powerComponent) {
+ return false;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
double[] totalAppPowerMah = null;
diff --git a/core/java/com/android/internal/os/FlashlightPowerCalculator.java b/core/java/com/android/internal/os/FlashlightPowerCalculator.java
index 32df17c51aac..7d3f9625aa4e 100644
--- a/core/java/com/android/internal/os/FlashlightPowerCalculator.java
+++ b/core/java/com/android/internal/os/FlashlightPowerCalculator.java
@@ -35,6 +35,11 @@ public class FlashlightPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_FLASHLIGHT;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
super.calculate(builder, batteryStats, rawRealtimeUs, rawUptimeUs, query);
diff --git a/core/java/com/android/internal/os/GnssPowerCalculator.java b/core/java/com/android/internal/os/GnssPowerCalculator.java
index a508e039fe71..a836ddb444f4 100644
--- a/core/java/com/android/internal/os/GnssPowerCalculator.java
+++ b/core/java/com/android/internal/os/GnssPowerCalculator.java
@@ -44,6 +44,11 @@ public class GnssPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_GNSS;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
double appsPowerMah = 0;
diff --git a/core/java/com/android/internal/os/IdlePowerCalculator.java b/core/java/com/android/internal/os/IdlePowerCalculator.java
index d33a88deb9d7..46808f9be002 100644
--- a/core/java/com/android/internal/os/IdlePowerCalculator.java
+++ b/core/java/com/android/internal/os/IdlePowerCalculator.java
@@ -47,6 +47,11 @@ public class IdlePowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_IDLE;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
calculatePowerAndDuration(batteryStats, rawRealtimeUs, rawUptimeUs,
diff --git a/core/java/com/android/internal/os/MediaPowerCalculator.java b/core/java/com/android/internal/os/MediaPowerCalculator.java
index e93d93ca7bc1..fff96dacf84b 100644
--- a/core/java/com/android/internal/os/MediaPowerCalculator.java
+++ b/core/java/com/android/internal/os/MediaPowerCalculator.java
@@ -15,6 +15,7 @@
*/
package com.android.internal.os;
+import android.os.BatteryConsumer;
import android.os.BatteryStats;
/**
@@ -33,6 +34,12 @@ public class MediaPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_VIDEO
+ || powerComponent == BatteryConsumer.POWER_COMPONENT_AUDIO;
+ }
+
+ @Override
protected void calculateApp(BatterySipper app, BatteryStats.Uid u, long rawRealtimeUs,
long rawUptimeUs, int statsType) {
// Calculate audio power usage, an estimate based on the average power routed to different
diff --git a/core/java/com/android/internal/os/MemoryPowerCalculator.java b/core/java/com/android/internal/os/MemoryPowerCalculator.java
index 09fd85e42225..0440a588a093 100644
--- a/core/java/com/android/internal/os/MemoryPowerCalculator.java
+++ b/core/java/com/android/internal/os/MemoryPowerCalculator.java
@@ -24,6 +24,11 @@ public class MemoryPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_MEMORY;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final long durationMs = calculateDuration(batteryStats, rawRealtimeUs,
diff --git a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
index 28cc836396b4..a1d5fc983dc4 100644
--- a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
+++ b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
@@ -86,6 +86,11 @@ public class MobileRadioPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
diff --git a/core/java/com/android/internal/os/PhonePowerCalculator.java b/core/java/com/android/internal/os/PhonePowerCalculator.java
index 8dd463c0d5e1..73103148a945 100644
--- a/core/java/com/android/internal/os/PhonePowerCalculator.java
+++ b/core/java/com/android/internal/os/PhonePowerCalculator.java
@@ -37,6 +37,11 @@ public class PhonePowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_PHONE;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final long phoneOnTimeMs = batteryStats.getPhoneOnTime(rawRealtimeUs,
diff --git a/core/java/com/android/internal/os/PowerCalculator.java b/core/java/com/android/internal/os/PowerCalculator.java
index 93d562c571f8..d0a83e77dd4e 100644
--- a/core/java/com/android/internal/os/PowerCalculator.java
+++ b/core/java/com/android/internal/os/PowerCalculator.java
@@ -36,6 +36,14 @@ public abstract class PowerCalculator {
protected static final double MILLIAMPHOUR_PER_MICROCOULOMB = 1.0 / 1000.0 / 60.0 / 60.0;
/**
+ * Returns true if this power calculator computes power/duration for the specified
+ * power component.
+ */
+ public abstract boolean isPowerComponentSupported(
+ @BatteryConsumer.PowerComponent int powerComponent);
+
+
+ /**
* Attributes the total amount of power used by this subsystem to various consumers such
* as apps.
*
diff --git a/core/java/com/android/internal/os/ScreenPowerCalculator.java b/core/java/com/android/internal/os/ScreenPowerCalculator.java
index 2b634598bbbc..d989e2aa687e 100644
--- a/core/java/com/android/internal/os/ScreenPowerCalculator.java
+++ b/core/java/com/android/internal/os/ScreenPowerCalculator.java
@@ -66,6 +66,11 @@ public class ScreenPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_SCREEN;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final PowerAndDuration totalPowerAndDuration = new PowerAndDuration();
diff --git a/core/java/com/android/internal/os/SensorPowerCalculator.java b/core/java/com/android/internal/os/SensorPowerCalculator.java
index 83e5b5702b6c..495a6d9aae50 100644
--- a/core/java/com/android/internal/os/SensorPowerCalculator.java
+++ b/core/java/com/android/internal/os/SensorPowerCalculator.java
@@ -39,6 +39,11 @@ public class SensorPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_SENSORS;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
double appsPowerMah = 0;
diff --git a/core/java/com/android/internal/os/SystemServicePowerCalculator.java b/core/java/com/android/internal/os/SystemServicePowerCalculator.java
index c527c06981ad..d7872badd0a2 100644
--- a/core/java/com/android/internal/os/SystemServicePowerCalculator.java
+++ b/core/java/com/android/internal/os/SystemServicePowerCalculator.java
@@ -62,6 +62,11 @@ public class SystemServicePowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_SYSTEM_SERVICES;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final BatteryStats.Uid systemUid = batteryStats.getUidStats().get(Process.SYSTEM_UID);
diff --git a/core/java/com/android/internal/os/UserPowerCalculator.java b/core/java/com/android/internal/os/UserPowerCalculator.java
index 8e802869e2fc..b590bf77283b 100644
--- a/core/java/com/android/internal/os/UserPowerCalculator.java
+++ b/core/java/com/android/internal/os/UserPowerCalculator.java
@@ -16,6 +16,7 @@
package com.android.internal.os;
+import android.os.BatteryConsumer;
import android.os.BatteryStats;
import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
@@ -34,6 +35,11 @@ import java.util.List;
public class UserPowerCalculator extends PowerCalculator {
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return true;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final int[] userIds = query.getUserIds();
diff --git a/core/java/com/android/internal/os/VideoPowerCalculator.java b/core/java/com/android/internal/os/VideoPowerCalculator.java
index 47916a6b0914..a222bcb4dfbf 100644
--- a/core/java/com/android/internal/os/VideoPowerCalculator.java
+++ b/core/java/com/android/internal/os/VideoPowerCalculator.java
@@ -41,6 +41,11 @@ public class VideoPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_VIDEO;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final PowerAndDuration total = new PowerAndDuration();
diff --git a/core/java/com/android/internal/os/WakelockPowerCalculator.java b/core/java/com/android/internal/os/WakelockPowerCalculator.java
index e0ef1291800d..aa6a4f87c7d0 100644
--- a/core/java/com/android/internal/os/WakelockPowerCalculator.java
+++ b/core/java/com/android/internal/os/WakelockPowerCalculator.java
@@ -44,6 +44,11 @@ public class WakelockPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_WAKELOCK;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
final PowerAndDuration result = new PowerAndDuration();
diff --git a/core/java/com/android/internal/os/WifiPowerCalculator.java b/core/java/com/android/internal/os/WifiPowerCalculator.java
index 2a71ac6f441b..77f15f15f820 100644
--- a/core/java/com/android/internal/os/WifiPowerCalculator.java
+++ b/core/java/com/android/internal/os/WifiPowerCalculator.java
@@ -82,6 +82,11 @@ public class WifiPowerCalculator extends PowerCalculator {
}
@Override
+ public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) {
+ return powerComponent == BatteryConsumer.POWER_COMPONENT_WIFI;
+ }
+
+ @Override
public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats,
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
BatteryConsumer.Key[] keys = UNINITIALIZED_KEYS;