Provide getBatteryLast24HrUsageData() method for application info

Bug: 178197718
Test: make SettingsRoboTests
Change-Id: Iaa5f0c1bdead1a5380129f63987bbae3b4461633
This commit is contained in:
ykhung
2022-03-14 11:57:15 +08:00
parent cc28c27eaa
commit ffba705f8d
2 changed files with 30 additions and 31 deletions

View File

@@ -43,7 +43,6 @@ import com.android.settings.fuelgauge.BatteryDiffEntry;
import com.android.settings.fuelgauge.BatteryEntry;
import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.ConvertUtils;
import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -118,11 +117,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
}
if (mBatteryDiffEntry != null) {
Log.i(TAG, "BatteryDiffEntry not null, launch : "
+ mBatteryDiffEntry.getPackageName()
+ " | uid : "
+ mBatteryDiffEntry.mBatteryHistEntry.mUid
+ " with DiffEntry data");
Log.i(TAG, "handlePreferenceTreeClick():\n" + mBatteryDiffEntry);
AdvancedPowerUsageDetail.startBatteryDetailPage(
mParent.getActivity(),
mParent,
@@ -176,30 +171,11 @@ public class AppBatteryPreferenceController extends BasePreferenceController
if (mPackageName == null) {
return null;
}
final List<BatteryDiffEntry> batteryDiffEntries =
BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
if (batteryDiffEntries == null) {
return null;
}
// Filter entry with consumer type to avoid system app,
// then use user id to divide normal app and work profile app,
// return target application from filter list by package name.
return batteryDiffEntries.stream()
.filter(entry -> entry.mBatteryHistEntry.mConsumerType
== ConvertUtils.CONSUMER_TYPE_UID_BATTERY)
.filter(entry -> entry.mBatteryHistEntry.mUserId == mUserId)
.filter(entry -> {
if (mPackageName.equals(entry.getPackageName())) {
Log.i(TAG, "Return target application: "
+ entry.mBatteryHistEntry.mPackageName
+ " | uid: " + entry.mBatteryHistEntry.mUid
+ " | userId: " + entry.mBatteryHistEntry.mUserId);
return true;
}
return false;
})
.findFirst()
.orElse(/* other */null);
final BatteryDiffEntry entry =
BatteryChartPreferenceController.getBatteryLast24HrUsageData(
mContext, mPackageName, mUserId);
Log.d(TAG, "loadBatteryDiffEntries():\n" + entry);
return entry;
}
@Override

View File

@@ -617,7 +617,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
return true;
}
public static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
/** Used for {@link AppBatteryPreferenceController}. */
static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
final long start = System.currentTimeMillis();
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
FeatureFactory.getFactory(context)
@@ -638,6 +639,28 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
return batteryIndexedMap.get(BatteryChartView.SELECTED_INDEX_ALL);
}
/** Used for {@link AppBatteryPreferenceController}. */
public static BatteryDiffEntry getBatteryLast24HrUsageData(
Context context, String packageName, int userId) {
if (packageName == null) {
return null;
}
final List<BatteryDiffEntry> entries = getBatteryLast24HrUsageData(context);
if (entries == null) {
return null;
}
for (BatteryDiffEntry entry : entries) {
final BatteryHistEntry batteryHistEntry = entry.mBatteryHistEntry;
if (batteryHistEntry != null
&& batteryHistEntry.mConsumerType == ConvertUtils.CONSUMER_TYPE_UID_BATTERY
&& batteryHistEntry.mUserId == userId
&& packageName.equals(entry.getPackageName())) {
return entry;
}
}
return null;
}
private static long[] getBatteryHistoryKeys(
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
final List<Long> batteryHistoryKeyList =