From 65b635854fdaae14b9ee043b47667126ef9a28e0 Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Thu, 18 Aug 2022 17:32:17 +0800 Subject: [PATCH] Support data logging for battery usage new chart view Bug: 242810430 Fix: 242810430 Test: presubmit Change-Id: Ice30508bc20b5de631efee0db0160fe6ad710dbb --- .../BatteryChartPreferenceController.java | 25 +++++++++++++++++-- .../BatteryChartPreferenceControllerTest.java | 12 +++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java index 88bec0d9d05..e2553ad2f7a 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java @@ -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 dailyTimestamps = batteryLevelData.getDailyBatteryLevels().getTimestamps(); + return (int) ((dailyTimestamps.get(dailyTimestamps.size() - 1) - dailyTimestamps.get(0)) + / DateUtils.HOUR_IN_MILLIS); + } + private static List generateTimestampDayOfWeekTexts(@NonNull final Context context, @NonNull final List timestamps, final boolean isAbbreviation) { final ArrayList texts = new ArrayList<>(); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java index 016287e2f87..1eead821372 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java @@ -630,6 +630,18 @@ public final class BatteryChartPreferenceControllerTest { .isFalse(); } + @Test + public void getTotalHours_getExpectedResult() { + Map> 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;