This cl is a merge of the following 36 cls: ag/19250259 Duplicate BatteryChartPreferenceController and BatteryChartView into new files for better diff review purpose ag/19279660 Use Mockito 4.6.1 API for BatteryChartPreferenceControllerV2Test ag/19267975 Add class BatteryLevelData used to parcel the battery timestamps and levels. It behaves as an interface between UI and data. ag/19289086 Refactor BatteryChartView X-axis labels. Instead of only timestamps, also support any string[] labels. ag/19238586 Add interpolation for the history data since last full charge loaded from database. ag/19331746 Return raw history map in function getHistoryMapSinceLastFullCharge. ag/19308838 In BatteryChartViewV2, use levels.length-1 to replace mTrapezoidCount. So the chartview could show any number of slots as the given levels length-1. ag/19332266 Add class BatteryDiffData used to parcel battery usage data ag/19331467 Refactor Battery Chart View State Controll ag/19358207 Add DataProcessor to process raw history map for UI. ag/19332276 Add battery chart view model. ag/19394744 Update trapezoid validation in battery chart view. ag/19379730 Support daily and hourly battery chartview. ag/19428426 Improve X axis labels in battery chart (1) ag/19446215 Improve X axis labels in battery chart (2) ag/19394745 Add the async task to compute diff usage data and load labels and icons. ag/19447624 Support showing app usage list for two battery charts ag/19500907 Updates battery usage messages from last 24hr to last full charge. (Part1: V2 files) ag/19505324 Update the selected period message in battery chart ag/19500905 Updates battery usage messages from last 24hr to last full charge. (Part2: non-V2 files) ag/19510363 Update usage data for EBS app usage list and App usage detail from 24 hours to last full charge. ag/19523184 Update usage data for EBS app usage list and App usage detail from 24 hours to last full charge. ag/19534864 Add margin between battery daily and hourly charts ag/19491093 Always do interpolation for battery level data in daily chart. ag/19565630 Avoid NullPointerException when batteryLevelData is null. ag/19561239 Fix b/241872474 Battery usage page will crash when selecting the last hour chart bar, going to app detail page, and going back ag/19565633 Fix b/241885070: Unexpected texts moving when going back to battery usage page ag/19534850 New way to draw battery chart axis labels ag/19561240 Switch Battery Usage Chart from V1 to V2. ag/19561338 Switch Battery Usage Chart from V1 to V2. ag/19600174 Fix b/242254055 Battery usage initial screen improvements (long data loading time) ag/19600284 Fix b/242252080: Add padding space on the top of the battery chart ag/19647338 Consider usage map valid even if [all][all] is null. ag/19634227 Use new content uri everytime to avoid cache ag/19600177 Fix b/242009481: Refine the battery usage chart timestamp label rule ag/19647337 Fix b/242809981 Charge battery to 100% when battery usage page opened, the chart will refresh, but the app list isn't refreshed in that case. Test: manual Bug: 239491373 Bug: 236101166 Bug: 236101687 Fix: 236101166 Change-Id: I7de8d9dcee14627da10752534991f1ec9f616020 Merged-In: I9142c0d4e00dea3771777ba9aedeab07b635fa1a
69 lines
2.5 KiB
Java
69 lines
2.5 KiB
Java
/*
|
|
* Copyright (C) 2022 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.settings.fuelgauge.batteryusage;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
/** Wraps the battery usage diff data for each entry used for battery usage app list. */
|
|
public class BatteryDiffData {
|
|
private final List<BatteryDiffEntry> mAppEntries;
|
|
private final List<BatteryDiffEntry> mSystemEntries;
|
|
|
|
/** Constructor for the diff entries which already have totalConsumePower value. */
|
|
public BatteryDiffData(
|
|
@NonNull List<BatteryDiffEntry> appDiffEntries,
|
|
@NonNull List<BatteryDiffEntry> systemDiffEntries) {
|
|
mAppEntries = appDiffEntries;
|
|
mSystemEntries = systemDiffEntries;
|
|
sortEntries();
|
|
}
|
|
|
|
/** Constructor for the diff entries which have not set totalConsumePower value. */
|
|
public BatteryDiffData(
|
|
@NonNull List<BatteryDiffEntry> appDiffEntries,
|
|
@NonNull List<BatteryDiffEntry> systemDiffEntries,
|
|
final double totalConsumePower) {
|
|
mAppEntries = appDiffEntries;
|
|
mSystemEntries = systemDiffEntries;
|
|
setTotalConsumePowerForAllEntries(totalConsumePower);
|
|
sortEntries();
|
|
}
|
|
|
|
public List<BatteryDiffEntry> getAppDiffEntryList() {
|
|
return mAppEntries;
|
|
}
|
|
|
|
public List<BatteryDiffEntry> getSystemDiffEntryList() {
|
|
return mSystemEntries;
|
|
}
|
|
|
|
// Sets total consume power for each entry.
|
|
private void setTotalConsumePowerForAllEntries(final double totalConsumePower) {
|
|
mAppEntries.forEach(diffEntry -> diffEntry.setTotalConsumePower(totalConsumePower));
|
|
mSystemEntries.forEach(diffEntry -> diffEntry.setTotalConsumePower(totalConsumePower));
|
|
}
|
|
|
|
// Sorts entries based on consumed percentage.
|
|
private void sortEntries() {
|
|
Collections.sort(mAppEntries, BatteryDiffEntry.COMPARATOR);
|
|
Collections.sort(mSystemEntries, BatteryDiffEntry.COMPARATOR);
|
|
}
|
|
}
|