Loading res/layout/preference_text_view.xml 0 → 100644 +25 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2023 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. --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginTop="8dp" android:textAlignment="viewStart" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="?android:attr/textColorPrimary" /> No newline at end of file res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -5196,6 +5196,10 @@ <string name="battery_usage_breakdown_title_since_last_full_charge">Battery usage since last full charge</string> <!-- [CHAR_LIMIT=NONE] Battery usage breakdown title for a selected slot --> <string name="battery_usage_breakdown_title_for_slot">Battery usage for <xliff:g id="slot">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Device screen on time category since last full charge --> <string name="screen_time_category_last_full_charge">Screen time since last full charge</string> <!-- [CHAR_LIMIT=NONE] Device screen on time category for a selected slot --> <string name="screen_time_category_for_slot">Screen time for <xliff:g id="slot">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. --> <string name="battery_usage_spinner_breakdown_by_apps">Breakdown by apps</string> <!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. --> Loading res/xml/power_usage_advanced.xml +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,18 @@ settings:controller= "com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController" /> <PreferenceCategory android:key="screen_on_time_category" settings:controller= "com.android.settings.fuelgauge.batteryusage.ScreenOnTimeController" settings:isPreferenceVisible="false"> <com.android.settings.fuelgauge.batteryusage.TextViewPreference android:key="screen_on_time_text" settings:isPreferenceVisible="false" /> </PreferenceCategory> <PreferenceCategory android:key="battery_usage_breakdown" settings:controller= Loading src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +27 −1 Original line number Diff line number Diff line Loading @@ -88,6 +88,19 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll BatteryDiffData slotUsageData, String slotTimestamp, boolean isAllUsageDataEmpty); } /** * A callback listener for the device screen on time is updated. * This happens when screen on time data is ready or the selected index is changed. */ public interface OnScreenOnTimeUpdatedListener { /** * The callback function for the device screen on time is updated. * @param screenOnTime The selected slot device screen on time. * @param slotTimestamp The selected slot timestamp information. */ void onScreenOnTimeUpdated(Long screenOnTime, String slotTimestamp); } @VisibleForTesting Context mPrefContext; @VisibleForTesting Loading @@ -100,6 +113,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll int mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL; @VisibleForTesting Map<Integer, Map<Integer, BatteryDiffData>> mBatteryUsageMap; @VisibleForTesting Map<Integer, Map<Integer, Long>> mScreenOnTimeMap; private boolean mIs24HourFormat; private boolean mHourlyChartVisible = true; Loading @@ -108,6 +123,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private BatteryChartViewModel mDailyViewModel; private List<BatteryChartViewModel> mHourlyViewModels; private OnBatteryUsageUpdatedListener mOnBatteryUsageUpdatedListener; private OnScreenOnTimeUpdatedListener mOnScreenOnTimeUpdatedListener; private final SettingsActivity mActivity; private final MetricsFeatureProvider mMetricsFeatureProvider; Loading Loading @@ -202,6 +218,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll mOnBatteryUsageUpdatedListener = listener; } void setOnScreenOnTimeUpdatedListener(OnScreenOnTimeUpdatedListener listener) { mOnScreenOnTimeUpdatedListener = listener; } void setBatteryHistoryMap( final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) { Log.d(TAG, "setBatteryHistoryMap() " + (batteryHistoryMap == null ? "null" Loading @@ -212,6 +232,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll DataProcessManager.getBatteryLevelData(mContext, mHandler, batteryHistoryMap, batteryCallbackData -> { mBatteryUsageMap = batteryCallbackData.getBatteryUsageMap(); mScreenOnTimeMap = batteryCallbackData.getDeviceScreenOnTime(); refreshUi(); }); Log.d(TAG, "getBatteryLevelData: " + batteryLevelData); Loading Loading @@ -318,7 +339,12 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return false; } if (mOnScreenOnTimeUpdatedListener != null && mScreenOnTimeMap != null && mScreenOnTimeMap.get(mDailyChartIndex) != null) { mOnScreenOnTimeUpdatedListener.onScreenOnTimeUpdated( mScreenOnTimeMap.get(mDailyChartIndex).get(mHourlyChartIndex), getSlotInformation()); } if (mOnBatteryUsageUpdatedListener != null && mBatteryUsageMap != null && mBatteryUsageMap.get(mDailyChartIndex) != null) { final BatteryDiffData slotUsageData = Loading src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java +5 −0 Original line number Diff line number Diff line Loading @@ -129,14 +129,18 @@ public class PowerUsageAdvanced extends PowerUsageBase { mBatteryChartPreferenceController = new BatteryChartPreferenceController( context, getSettingsLifecycle(), (SettingsActivity) getActivity()); ScreenOnTimeController screenOnTimeController = new ScreenOnTimeController(context); BatteryUsageBreakdownController batteryUsageBreakdownController = new BatteryUsageBreakdownController( context, getSettingsLifecycle(), (SettingsActivity) getActivity(), this); mBatteryChartPreferenceController.setOnScreenOnTimeUpdatedListener( screenOnTimeController::handleSceenOnTimeUpdated); mBatteryChartPreferenceController.setOnBatteryUsageUpdatedListener( batteryUsageBreakdownController::handleBatteryUsageUpdated); controllers.add(mBatteryChartPreferenceController); controllers.add(screenOnTimeController); controllers.add(batteryUsageBreakdownController); setBatteryChartPreferenceController(); return controllers; Loading Loading @@ -192,6 +196,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { final List<AbstractPreferenceController> controllers = new ArrayList<>(); controllers.add(new BatteryChartPreferenceController( context, null /* lifecycle */, null /* activity */)); controllers.add((new ScreenOnTimeController(context))); controllers.add(new BatteryUsageBreakdownController( context, null /* lifecycle */, null /* activity */, null /* fragment */)); Loading Loading
res/layout/preference_text_view.xml 0 → 100644 +25 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2023 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. --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginTop="8dp" android:textAlignment="viewStart" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="?android:attr/textColorPrimary" /> No newline at end of file
res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -5196,6 +5196,10 @@ <string name="battery_usage_breakdown_title_since_last_full_charge">Battery usage since last full charge</string> <!-- [CHAR_LIMIT=NONE] Battery usage breakdown title for a selected slot --> <string name="battery_usage_breakdown_title_for_slot">Battery usage for <xliff:g id="slot">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Device screen on time category since last full charge --> <string name="screen_time_category_last_full_charge">Screen time since last full charge</string> <!-- [CHAR_LIMIT=NONE] Device screen on time category for a selected slot --> <string name="screen_time_category_for_slot">Screen time for <xliff:g id="slot">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. --> <string name="battery_usage_spinner_breakdown_by_apps">Breakdown by apps</string> <!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. --> Loading
res/xml/power_usage_advanced.xml +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,18 @@ settings:controller= "com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController" /> <PreferenceCategory android:key="screen_on_time_category" settings:controller= "com.android.settings.fuelgauge.batteryusage.ScreenOnTimeController" settings:isPreferenceVisible="false"> <com.android.settings.fuelgauge.batteryusage.TextViewPreference android:key="screen_on_time_text" settings:isPreferenceVisible="false" /> </PreferenceCategory> <PreferenceCategory android:key="battery_usage_breakdown" settings:controller= Loading
src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +27 −1 Original line number Diff line number Diff line Loading @@ -88,6 +88,19 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll BatteryDiffData slotUsageData, String slotTimestamp, boolean isAllUsageDataEmpty); } /** * A callback listener for the device screen on time is updated. * This happens when screen on time data is ready or the selected index is changed. */ public interface OnScreenOnTimeUpdatedListener { /** * The callback function for the device screen on time is updated. * @param screenOnTime The selected slot device screen on time. * @param slotTimestamp The selected slot timestamp information. */ void onScreenOnTimeUpdated(Long screenOnTime, String slotTimestamp); } @VisibleForTesting Context mPrefContext; @VisibleForTesting Loading @@ -100,6 +113,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll int mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL; @VisibleForTesting Map<Integer, Map<Integer, BatteryDiffData>> mBatteryUsageMap; @VisibleForTesting Map<Integer, Map<Integer, Long>> mScreenOnTimeMap; private boolean mIs24HourFormat; private boolean mHourlyChartVisible = true; Loading @@ -108,6 +123,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private BatteryChartViewModel mDailyViewModel; private List<BatteryChartViewModel> mHourlyViewModels; private OnBatteryUsageUpdatedListener mOnBatteryUsageUpdatedListener; private OnScreenOnTimeUpdatedListener mOnScreenOnTimeUpdatedListener; private final SettingsActivity mActivity; private final MetricsFeatureProvider mMetricsFeatureProvider; Loading Loading @@ -202,6 +218,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll mOnBatteryUsageUpdatedListener = listener; } void setOnScreenOnTimeUpdatedListener(OnScreenOnTimeUpdatedListener listener) { mOnScreenOnTimeUpdatedListener = listener; } void setBatteryHistoryMap( final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) { Log.d(TAG, "setBatteryHistoryMap() " + (batteryHistoryMap == null ? "null" Loading @@ -212,6 +232,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll DataProcessManager.getBatteryLevelData(mContext, mHandler, batteryHistoryMap, batteryCallbackData -> { mBatteryUsageMap = batteryCallbackData.getBatteryUsageMap(); mScreenOnTimeMap = batteryCallbackData.getDeviceScreenOnTime(); refreshUi(); }); Log.d(TAG, "getBatteryLevelData: " + batteryLevelData); Loading Loading @@ -318,7 +339,12 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return false; } if (mOnScreenOnTimeUpdatedListener != null && mScreenOnTimeMap != null && mScreenOnTimeMap.get(mDailyChartIndex) != null) { mOnScreenOnTimeUpdatedListener.onScreenOnTimeUpdated( mScreenOnTimeMap.get(mDailyChartIndex).get(mHourlyChartIndex), getSlotInformation()); } if (mOnBatteryUsageUpdatedListener != null && mBatteryUsageMap != null && mBatteryUsageMap.get(mDailyChartIndex) != null) { final BatteryDiffData slotUsageData = Loading
src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java +5 −0 Original line number Diff line number Diff line Loading @@ -129,14 +129,18 @@ public class PowerUsageAdvanced extends PowerUsageBase { mBatteryChartPreferenceController = new BatteryChartPreferenceController( context, getSettingsLifecycle(), (SettingsActivity) getActivity()); ScreenOnTimeController screenOnTimeController = new ScreenOnTimeController(context); BatteryUsageBreakdownController batteryUsageBreakdownController = new BatteryUsageBreakdownController( context, getSettingsLifecycle(), (SettingsActivity) getActivity(), this); mBatteryChartPreferenceController.setOnScreenOnTimeUpdatedListener( screenOnTimeController::handleSceenOnTimeUpdated); mBatteryChartPreferenceController.setOnBatteryUsageUpdatedListener( batteryUsageBreakdownController::handleBatteryUsageUpdated); controllers.add(mBatteryChartPreferenceController); controllers.add(screenOnTimeController); controllers.add(batteryUsageBreakdownController); setBatteryChartPreferenceController(); return controllers; Loading Loading @@ -192,6 +196,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { final List<AbstractPreferenceController> controllers = new ArrayList<>(); controllers.add(new BatteryChartPreferenceController( context, null /* lifecycle */, null /* activity */)); controllers.add((new ScreenOnTimeController(context))); controllers.add(new BatteryUsageBreakdownController( context, null /* lifecycle */, null /* activity */, null /* fragment */)); Loading