Provide foreground_service usage time in BatteryDiffEntry.

- Fetch foreground service info through new api from UidBatteryConsumer.
- Record fgs & bg usage time separately, combine them till ui display.

Bug: 315255868
Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.fuelgauge.*"
Change-Id: Ic19844db7908a6ae6522c7a72972f44f94dcfca4
This commit is contained in:
mxyyiyi
2023-12-07 15:23:08 +08:00
parent dd2cc366a6
commit a919306d75
19 changed files with 345 additions and 158 deletions

View File

@@ -92,6 +92,7 @@ public class BatteryDiffEntry {
public String mLegacyLabel;
public int mConsumerType;
public long mForegroundUsageTimeInMs;
public long mForegroundServiceUsageTimeInMs;
public long mBackgroundUsageTimeInMs;
public long mScreenOnTimeInMs;
public double mConsumePower;
@@ -125,6 +126,7 @@ public class BatteryDiffEntry {
String legacyLabel,
int consumerType,
long foregroundUsageTimeInMs,
long foregroundServiceUsageTimeInMs,
long backgroundUsageTimeInMs,
long screenOnTimeInMs,
double consumePower,
@@ -142,6 +144,7 @@ public class BatteryDiffEntry {
mLegacyLabel = legacyLabel;
mConsumerType = consumerType;
mForegroundUsageTimeInMs = foregroundUsageTimeInMs;
mForegroundServiceUsageTimeInMs = foregroundServiceUsageTimeInMs;
mBackgroundUsageTimeInMs = backgroundUsageTimeInMs;
mScreenOnTimeInMs = screenOnTimeInMs;
mConsumePower = consumePower;
@@ -164,6 +167,7 @@ public class BatteryDiffEntry {
legacyLabel,
consumerType,
/* foregroundUsageTimeInMs= */ 0,
/* foregroundServiceUsageTimeInMs= */ 0,
/* backgroundUsageTimeInMs= */ 0,
/* screenOnTimeInMs= */ 0,
/* consumePower= */ 0,
@@ -232,6 +236,7 @@ public class BatteryDiffEntry {
this.mLegacyLabel,
this.mConsumerType,
this.mForegroundUsageTimeInMs,
this.mForegroundServiceUsageTimeInMs,
this.mBackgroundUsageTimeInMs,
this.mScreenOnTimeInMs,
this.mConsumePower,
@@ -515,48 +520,50 @@ public class BatteryDiffEntry {
@Override
public String toString() {
final StringBuilder builder =
new StringBuilder()
.append("BatteryDiffEntry{")
.append(
String.format(
"\n\tname=%s restrictable=%b",
mAppLabel, mValidForRestriction))
.append(
String.format(
"\n\tconsume=%.2f%% %f/%f",
mPercentage, mConsumePower, mTotalConsumePower))
.append(
String.format(
"\n\tconsume power= foreground:%f foregroundService:%f",
mForegroundUsageConsumePower,
mForegroundServiceUsageConsumePower))
.append(
String.format(
"\n\tconsume power= background:%f cached:%f",
mBackgroundUsageConsumePower, mCachedUsageConsumePower))
.append(
String.format(
"\n\ttime= foreground:%s background:%s screen-on:%s",
StringUtil.formatElapsedTime(
mContext,
(double) mForegroundUsageTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false),
StringUtil.formatElapsedTime(
mContext,
(double) mBackgroundUsageTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false),
StringUtil.formatElapsedTime(
mContext,
(double) mScreenOnTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false)))
.append(
String.format(
"\n\tpackage:%s|%s uid:%d userId:%d",
mLegacyPackageName, getPackageName(), mUid, mUserId));
final StringBuilder builder = new StringBuilder();
builder.append("BatteryDiffEntry{");
builder.append(
String.format("\n\tname=%s restrictable=%b", mAppLabel, mValidForRestriction));
builder.append(
String.format(
"\n\tconsume=%.2f%% %f/%f",
mPercentage, mConsumePower, mTotalConsumePower));
builder.append(
String.format(
"\n\tconsume power= foreground:%f foregroundService:%f",
mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower));
builder.append(
String.format(
"\n\tconsume power= background:%f cached:%f",
mBackgroundUsageConsumePower, mCachedUsageConsumePower));
builder.append(
String.format(
"\n\ttime= foreground:%s foregroundService:%s "
+ "background:%s screen-on:%s",
StringUtil.formatElapsedTime(
mContext,
(double) mForegroundUsageTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false),
StringUtil.formatElapsedTime(
mContext,
(double) mForegroundServiceUsageTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false),
StringUtil.formatElapsedTime(
mContext,
(double) mBackgroundUsageTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false),
StringUtil.formatElapsedTime(
mContext,
(double) mScreenOnTimeInMs,
/* withSeconds= */ true,
/* collapseTimeUnit= */ false)));
builder.append(
String.format(
"\n\tpackage:%s|%s uid:%d userId:%d",
mLegacyPackageName, getPackageName(), mUid, mUserId));
return builder.toString();
}