From ffba705f8d38ec1bd68f7821a51de91da67bc6ea Mon Sep 17 00:00:00 2001 From: ykhung Date: Mon, 14 Mar 2022 11:57:15 +0800 Subject: [PATCH] Provide getBatteryLast24HrUsageData() method for application info Bug: 178197718 Test: make SettingsRoboTests Change-Id: Iaa5f0c1bdead1a5380129f63987bbae3b4461633 --- .../AppBatteryPreferenceController.java | 36 ++++--------------- .../BatteryChartPreferenceController.java | 25 ++++++++++++- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java index 8d293010238..3cb22e07b61 100644 --- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java @@ -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 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 diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java index 90a86f165c4..21bde69363f 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java @@ -617,7 +617,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return true; } - public static List getBatteryLast24HrUsageData(Context context) { + /** Used for {@link AppBatteryPreferenceController}. */ + static List getBatteryLast24HrUsageData(Context context) { final long start = System.currentTimeMillis(); final Map> 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 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> batteryHistoryMap) { final List batteryHistoryKeyList =