Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffba705f authored by ykhung's avatar ykhung
Browse files

Provide getBatteryLast24HrUsageData() method for application info

Bug: 178197718
Test: make SettingsRoboTests
Change-Id: Iaa5f0c1bdead1a5380129f63987bbae3b4461633
parent cc28c27e
Loading
Loading
Loading
Loading
+6 −30
Original line number Diff line number Diff line
@@ -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
+24 −1
Original line number Diff line number Diff line
@@ -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 =