Add BatteryUsageStatsQuery parameters: time range am: c24fb81627
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14922773 Change-Id: I8c31a2ced556edda35c10d1a61c882a762daa4a7
This commit is contained in:
@@ -10749,6 +10749,10 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
}
|
||||
}
|
||||
|
||||
PowerProfile getPowerProfile() {
|
||||
return mPowerProfile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts tracking CPU time-in-state for threads of the system server process,
|
||||
* keeping a separate account of threads receiving incoming binder calls.
|
||||
|
||||
@@ -38,14 +38,24 @@ import java.util.Map;
|
||||
public class BatteryUsageStatsProvider {
|
||||
private final Context mContext;
|
||||
private final BatteryStats mStats;
|
||||
private final BatteryUsageStatsStore mBatteryUsageStatsStore;
|
||||
private final PowerProfile mPowerProfile;
|
||||
private final Object mLock = new Object();
|
||||
private List<PowerCalculator> mPowerCalculators;
|
||||
|
||||
public BatteryUsageStatsProvider(Context context, BatteryStats stats) {
|
||||
this(context, stats, null);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public BatteryUsageStatsProvider(Context context, BatteryStats stats,
|
||||
BatteryUsageStatsStore batteryUsageStatsStore) {
|
||||
mContext = context;
|
||||
mStats = stats;
|
||||
mPowerProfile = new PowerProfile(mContext);
|
||||
mBatteryUsageStatsStore = batteryUsageStatsStore;
|
||||
mPowerProfile = stats instanceof BatteryStatsImpl
|
||||
? ((BatteryStatsImpl) stats).getPowerProfile()
|
||||
: new PowerProfile(context);
|
||||
}
|
||||
|
||||
private List<PowerCalculator> getPowerCalculators() {
|
||||
@@ -126,6 +136,15 @@ public class BatteryUsageStatsProvider {
|
||||
|
||||
private BatteryUsageStats getBatteryUsageStats(BatteryUsageStatsQuery query,
|
||||
long currentTimeMs) {
|
||||
if (query.getToTimestamp() == 0) {
|
||||
return getCurrentBatteryUsageStats(query, currentTimeMs);
|
||||
} else {
|
||||
return getAggregatedBatteryUsageStats(query);
|
||||
}
|
||||
}
|
||||
|
||||
private BatteryUsageStats getCurrentBatteryUsageStats(BatteryUsageStatsQuery query,
|
||||
long currentTimeMs) {
|
||||
final long realtimeUs = elapsedRealtime() * 1000;
|
||||
final long uptimeUs = uptimeMillis() * 1000;
|
||||
|
||||
@@ -209,6 +228,25 @@ public class BatteryUsageStatsProvider {
|
||||
BatteryStats.STATS_SINCE_CHARGED) / 1000;
|
||||
}
|
||||
|
||||
private BatteryUsageStats getAggregatedBatteryUsageStats(BatteryUsageStatsQuery query) {
|
||||
final boolean includePowerModels = (query.getFlags()
|
||||
& BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0;
|
||||
|
||||
final BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(
|
||||
mStats.getCustomEnergyConsumerNames(), includePowerModels);
|
||||
final long[] timestamps = mBatteryUsageStatsStore.listBatteryUsageStatsTimestamps();
|
||||
for (long timestamp : timestamps) {
|
||||
if (timestamp > query.getFromTimestamp() && timestamp <= query.getToTimestamp()) {
|
||||
final BatteryUsageStats snapshot =
|
||||
mBatteryUsageStatsStore.loadBatteryUsageStats(timestamp);
|
||||
if (snapshot != null) {
|
||||
builder.add(snapshot);
|
||||
}
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private long elapsedRealtime() {
|
||||
if (mStats instanceof BatteryStatsImpl) {
|
||||
return ((BatteryStatsImpl) mStats).mClocks.elapsedRealtime();
|
||||
|
||||
Reference in New Issue
Block a user