From 0e33ad63cbd5a208bc762d1e06703e2ba55ec5c8 Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Fri, 18 Mar 2022 20:42:55 +0800 Subject: [PATCH] Disable low battery notification if battery saver scheduled - Avoid redundant low battery notification once users already setup a schedule for battery saver Bug: 223732451 Test: atest SystemUITests Change-Id: I7d3a1b52ee1a9bdd06d47d6e1e9ad73bf345861e --- .../power/PowerNotificationWarnings.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java index 2ac34b22be5bd..369a552a934a9 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java @@ -271,6 +271,9 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { mPlaySound = false; return; } + if (!showLowBatteryNotification()) { + return; + } final int warningLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); @@ -323,6 +326,29 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { return isSevereState && mUseSevereDialog; } + /** + * Disable low battery warning notification if battery saver schedule mode set as + * "Based on percentage". + * + * return {@code false} if scheduled by percentage. + */ + private boolean showLowBatteryNotification() { + final ContentResolver resolver = mContext.getContentResolver(); + final int mode = Settings.Global.getInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, + PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); + + // Return true if battery saver schedule mode will not trigger by percentage. + if (mode != PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE) { + return true; + } + + // Return true if battery saver mode trigger percentage is less than 0, which means it is + // set as "Based on routine" mode, otherwise it will be "Based on percentage" mode. + final int threshold = + Settings.Global.getInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); + return threshold <= 0; + } + private void showAutoSaverSuggestionNotification() { final CharSequence message = mContext.getString(R.string.auto_saver_text); final Notification.Builder nb =