Loading core/java/android/os/BatteryStats.java +1 −0 Original line number Diff line number Diff line Loading @@ -5655,6 +5655,7 @@ public abstract class BatteryStats implements Parcelable { .setMaxStatsAgeMs(0) .includePowerModels() .includeProcessStateData() .includeVirtualUids() .build()); stats.dump(pw, prefix); Loading core/java/android/os/BatteryUsageStatsQuery.java +12 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { FLAG_BATTERY_USAGE_STATS_POWER_PROFILE_MODEL, FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY, FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA, FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS, }) @Retention(RetentionPolicy.SOURCE) public @interface BatteryUsageStatsFlags {} Loading Loading @@ -69,6 +70,8 @@ public final class BatteryUsageStatsQuery implements Parcelable { public static final int FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA = 0x0008; public static final int FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS = 0x0010; private static final long DEFAULT_MAX_STATS_AGE_MS = 5 * 60 * 1000; private final int mFlags; Loading Loading @@ -270,6 +273,15 @@ public final class BatteryUsageStatsQuery implements Parcelable { return this; } /** * Requests to return attribution data for virtual UIDs such as * {@link Process#SDK_SANDBOX_VIRTUAL_UID}. */ public Builder includeVirtualUids() { mFlags |= BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS; return this; } /** * Requests to aggregate stored snapshots between the two supplied timestamps * @param fromTimestamp Exclusive starting timestamp, as per System.currentTimeMillis() Loading core/java/android/os/UidBatteryConsumer.java +13 −5 Original line number Diff line number Diff line Loading @@ -202,20 +202,24 @@ public final class UidBatteryConsumer extends BatteryConsumer { private static final String PACKAGE_NAME_UNINITIALIZED = ""; private final BatteryStats.Uid mBatteryStatsUid; private final int mUid; private final boolean mIsVirtualUid; private String mPackageWithHighestDrain = PACKAGE_NAME_UNINITIALIZED; private boolean mExcludeFromBatteryUsageStats; public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid) { super(data, CONSUMER_TYPE_UID); mBatteryStatsUid = batteryStatsUid; mUid = batteryStatsUid.getUid(); data.putLong(COLUMN_INDEX_UID, mUid); this(data, batteryStatsUid, batteryStatsUid.getUid()); } public Builder(BatteryConsumerData data, int uid) { this(data, null, uid); } private Builder(BatteryConsumerData data, @Nullable BatteryStats.Uid batteryStatsUid, int uid) { super(data, CONSUMER_TYPE_UID); mBatteryStatsUid = null; mBatteryStatsUid = batteryStatsUid; mUid = uid; mIsVirtualUid = mUid == Process.SDK_SANDBOX_VIRTUAL_UID; data.putLong(COLUMN_INDEX_UID, mUid); } Loading @@ -232,6 +236,10 @@ public final class UidBatteryConsumer extends BatteryConsumer { return mUid; } public boolean isVirtualUid() { return mIsVirtualUid; } /** * Sets the name of the package owned by this UID that consumed the highest amount * of power since BatteryStats reset. Loading core/java/com/android/internal/os/AudioPowerCalculator.java +4 −2 Original line number Diff line number Diff line Loading @@ -78,7 +78,9 @@ public class AudioPowerCalculator extends PowerCalculator { final double powerMah = mPowerEstimator.calculatePower(durationMs); app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO, durationMs) .setConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO, powerMah); if (!app.isVirtualUid()) { total.durationMs += durationMs; total.powerMah += powerMah; } } } core/java/com/android/internal/os/BatteryUsageStatsProvider.java +7 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.os.BatteryStats; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; import android.os.Parcel; import android.os.Process; import android.os.SystemClock; import android.os.UidBatteryConsumer; import android.util.Log; Loading Loading @@ -162,6 +163,8 @@ public class BatteryUsageStatsProvider { final boolean includeProcessStateData = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0) && mStats.isProcessStateDataAvailable(); final boolean includeVirtualUids = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS) != 0); final BatteryUsageStats.Builder batteryUsageStatsBuilder = new BatteryUsageStats.Builder( mStats.getCustomEnergyConsumerNames(), includePowerModels, Loading @@ -174,6 +177,10 @@ public class BatteryUsageStatsProvider { SparseArray<? extends BatteryStats.Uid> uidStats = mStats.getUidStats(); for (int i = uidStats.size() - 1; i >= 0; i--) { final BatteryStats.Uid uid = uidStats.valueAt(i); if (!includeVirtualUids && uid.getUid() == Process.SDK_SANDBOX_VIRTUAL_UID) { continue; } batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uid) .setTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND, getProcessBackgroundTimeMs(uid, realtimeUs)) Loading Loading
core/java/android/os/BatteryStats.java +1 −0 Original line number Diff line number Diff line Loading @@ -5655,6 +5655,7 @@ public abstract class BatteryStats implements Parcelable { .setMaxStatsAgeMs(0) .includePowerModels() .includeProcessStateData() .includeVirtualUids() .build()); stats.dump(pw, prefix); Loading
core/java/android/os/BatteryUsageStatsQuery.java +12 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { FLAG_BATTERY_USAGE_STATS_POWER_PROFILE_MODEL, FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY, FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA, FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS, }) @Retention(RetentionPolicy.SOURCE) public @interface BatteryUsageStatsFlags {} Loading Loading @@ -69,6 +70,8 @@ public final class BatteryUsageStatsQuery implements Parcelable { public static final int FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA = 0x0008; public static final int FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS = 0x0010; private static final long DEFAULT_MAX_STATS_AGE_MS = 5 * 60 * 1000; private final int mFlags; Loading Loading @@ -270,6 +273,15 @@ public final class BatteryUsageStatsQuery implements Parcelable { return this; } /** * Requests to return attribution data for virtual UIDs such as * {@link Process#SDK_SANDBOX_VIRTUAL_UID}. */ public Builder includeVirtualUids() { mFlags |= BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS; return this; } /** * Requests to aggregate stored snapshots between the two supplied timestamps * @param fromTimestamp Exclusive starting timestamp, as per System.currentTimeMillis() Loading
core/java/android/os/UidBatteryConsumer.java +13 −5 Original line number Diff line number Diff line Loading @@ -202,20 +202,24 @@ public final class UidBatteryConsumer extends BatteryConsumer { private static final String PACKAGE_NAME_UNINITIALIZED = ""; private final BatteryStats.Uid mBatteryStatsUid; private final int mUid; private final boolean mIsVirtualUid; private String mPackageWithHighestDrain = PACKAGE_NAME_UNINITIALIZED; private boolean mExcludeFromBatteryUsageStats; public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid) { super(data, CONSUMER_TYPE_UID); mBatteryStatsUid = batteryStatsUid; mUid = batteryStatsUid.getUid(); data.putLong(COLUMN_INDEX_UID, mUid); this(data, batteryStatsUid, batteryStatsUid.getUid()); } public Builder(BatteryConsumerData data, int uid) { this(data, null, uid); } private Builder(BatteryConsumerData data, @Nullable BatteryStats.Uid batteryStatsUid, int uid) { super(data, CONSUMER_TYPE_UID); mBatteryStatsUid = null; mBatteryStatsUid = batteryStatsUid; mUid = uid; mIsVirtualUid = mUid == Process.SDK_SANDBOX_VIRTUAL_UID; data.putLong(COLUMN_INDEX_UID, mUid); } Loading @@ -232,6 +236,10 @@ public final class UidBatteryConsumer extends BatteryConsumer { return mUid; } public boolean isVirtualUid() { return mIsVirtualUid; } /** * Sets the name of the package owned by this UID that consumed the highest amount * of power since BatteryStats reset. Loading
core/java/com/android/internal/os/AudioPowerCalculator.java +4 −2 Original line number Diff line number Diff line Loading @@ -78,7 +78,9 @@ public class AudioPowerCalculator extends PowerCalculator { final double powerMah = mPowerEstimator.calculatePower(durationMs); app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO, durationMs) .setConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO, powerMah); if (!app.isVirtualUid()) { total.durationMs += durationMs; total.powerMah += powerMah; } } }
core/java/com/android/internal/os/BatteryUsageStatsProvider.java +7 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.os.BatteryStats; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; import android.os.Parcel; import android.os.Process; import android.os.SystemClock; import android.os.UidBatteryConsumer; import android.util.Log; Loading Loading @@ -162,6 +163,8 @@ public class BatteryUsageStatsProvider { final boolean includeProcessStateData = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0) && mStats.isProcessStateDataAvailable(); final boolean includeVirtualUids = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS) != 0); final BatteryUsageStats.Builder batteryUsageStatsBuilder = new BatteryUsageStats.Builder( mStats.getCustomEnergyConsumerNames(), includePowerModels, Loading @@ -174,6 +177,10 @@ public class BatteryUsageStatsProvider { SparseArray<? extends BatteryStats.Uid> uidStats = mStats.getUidStats(); for (int i = uidStats.size() - 1; i >= 0; i--) { final BatteryStats.Uid uid = uidStats.valueAt(i); if (!includeVirtualUids && uid.getUid() == Process.SDK_SANDBOX_VIRTUAL_UID) { continue; } batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uid) .setTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND, getProcessBackgroundTimeMs(uid, realtimeUs)) Loading