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

Commit 65b63585 authored by Zaiyue Xue's avatar Zaiyue Xue
Browse files

Support data logging for battery usage new chart view

Bug: 242810430
Fix: 242810430
Test: presubmit
Change-Id: Ice30508bc20b5de631efee0db0160fe6ad710dbb
parent 48b4af99
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -267,6 +267,11 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
                            refreshUi();
                        });
        Log.d(TAG, "getBatteryLevelData: " + batteryLevelData);
        mMetricsFeatureProvider.action(
                mPrefContext,
                SettingsEnums.ACTION_BATTERY_HISTORY_LOADED,
                getTotalHours(batteryLevelData));

        if (batteryLevelData == null) {
            mDailyTimestampFullTexts = null;
            mDailyViewModel = null;
@@ -313,7 +318,12 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
            mDailyChartIndex = trapezoidIndex;
            mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
            refreshUi();
            // TODO: Change to log daily data.
            mMetricsFeatureProvider.action(
                    mPrefContext,
                    trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
                            ? SettingsEnums.ACTION_BATTERY_USAGE_DAILY_SHOW_ALL
                            : SettingsEnums.ACTION_BATTERY_USAGE_DAILY_TIME_SLOT,
                    mDailyChartIndex);
        });
        mHourlyChartView = hourlyChartView;
        mHourlyChartView.setOnSelectListener(trapezoidIndex -> {
@@ -327,7 +337,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
                    mPrefContext,
                    trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
                            ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL
                            : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT);
                            : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT,
                    mHourlyChartIndex);
        });
        refreshUi();
    }
@@ -623,6 +634,16 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
                && mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL;
    }

    @VisibleForTesting
    static int getTotalHours(final BatteryLevelData batteryLevelData) {
        if (batteryLevelData == null) {
            return 0;
        }
        List<Long> dailyTimestamps = batteryLevelData.getDailyBatteryLevels().getTimestamps();
        return (int) ((dailyTimestamps.get(dailyTimestamps.size() - 1) - dailyTimestamps.get(0))
                / DateUtils.HOUR_IN_MILLIS);
    }

    private static List<String> generateTimestampDayOfWeekTexts(@NonNull final Context context,
            @NonNull final List<Long> timestamps, final boolean isAbbreviation) {
        final ArrayList<String> texts = new ArrayList<>();
+12 −0
Original line number Diff line number Diff line
@@ -630,6 +630,18 @@ public final class BatteryChartPreferenceControllerTest {
                .isFalse();
    }

    @Test
    public void getTotalHours_getExpectedResult() {
        Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = createBatteryHistoryMap(60);
        BatteryLevelData batteryLevelData = DataProcessor.getBatteryLevelData(mContext, null,
                batteryHistoryMap, null);

        final int totalHour = BatteryChartPreferenceController.getTotalHours(batteryLevelData);

        // Only calculate the even hours.
        assertThat(totalHour).isEqualTo(58);
    }

    private static Long generateTimestamp(int index) {
        // "2021-04-23 07:00:00 UTC" + index hours
        return 1619247600000L + index * DateUtils.HOUR_IN_MILLIS;