diff --git a/res/values/strings.xml b/res/values/strings.xml index 3eeffadf2b9..edd695ad4c8 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5659,12 +5659,6 @@ Set a schedule - - Keep battery saver on - - - Battery saver will stay on even after device is fully charged - Turn off when fully charged diff --git a/res/xml/battery_saver_settings.xml b/res/xml/battery_saver_settings.xml index ae9d14d41d6..c8d1d6302c1 100644 --- a/res/xml/battery_saver_settings.xml +++ b/res/xml/battery_saver_settings.xml @@ -28,8 +28,8 @@ diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java index 7a1f7f5d6a1..7d4bdac074f 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java @@ -1,37 +1,58 @@ package com.android.settings.fuelgauge.batterysaver; import android.content.Context; +import android.icu.text.NumberFormat; import android.provider.Settings; +import android.provider.Settings.Global; import androidx.preference.Preference; import androidx.preference.SwitchPreference; -import com.android.settings.core.BasePreferenceController; +import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.core.TogglePreferenceController; -public class BatterySaverStickyPreferenceController extends BasePreferenceController implements +public class BatterySaverStickyPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { - public static final String LOW_POWER_STICKY_AUTO_DISABLE_ENABLED = - "low_power_sticky_auto_disable_enabled"; + private Context mContext; public BatterySaverStickyPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); + mContext = context; + } + + @Override + public boolean isChecked() { + return Settings.Global.getInt(mContext.getContentResolver(), + Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1) == 1; + } + + @Override + public boolean setChecked(boolean isChecked) { + Settings.Global.putInt(mContext.getContentResolver(), + Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, + isChecked ? 1 : 0); + return true; + } + + @Override + protected void refreshSummary(Preference preference) { + super.refreshSummary(preference); + final double stickyShutoffLevel = Settings.Global.getInt( + mContext.getContentResolver(), Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, 90); + final String percentage = NumberFormat + .getPercentInstance() + .format(stickyShutoffLevel / 100.0); + preference.setSummary( + mContext.getString(R.string.battery_saver_sticky_description_new, percentage)); } @Override public void updateState(Preference preference) { int setting = Settings.Global.getInt(mContext.getContentResolver(), - LOW_POWER_STICKY_AUTO_DISABLE_ENABLED, 1); + Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1); - ((SwitchPreference) preference).setChecked(setting == 0); - } - - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean keepActive = (Boolean) newValue; - Settings.Global.putInt(mContext.getContentResolver(), - LOW_POWER_STICKY_AUTO_DISABLE_ENABLED, - keepActive ? 0 : 1); - return true; + ((SwitchPreference) preference).setChecked(setting == 1); + refreshSummary(preference); } @Override diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java index 0ee9cfc5ede..0e7c312eb18 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java @@ -16,11 +16,11 @@ package com.android.settings.fuelgauge.batterysaver; -import static com.android.settings.fuelgauge.batterysaver.BatterySaverStickyPreferenceController.LOW_POWER_STICKY_AUTO_DISABLE_ENABLED; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.provider.Settings; +import android.provider.Settings.Global; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -43,21 +43,21 @@ public class BatterySaverStickyPreferenceControllerTest { private int getAutoDisableSetting() { return Settings.Global.getInt(mContext.getContentResolver(), - LOW_POWER_STICKY_AUTO_DISABLE_ENABLED, + Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1); } @Test - public void testOnPreferenceChange_turnOnKeepActive_autoDisableOff() { - mController.onPreferenceChange(null, true); - final int isOn = getAutoDisableSetting(); - assertThat(isOn).isEqualTo(0); - } - - @Test - public void testOnPreferenceChange_TurnOffKeepActive_autoDisableOff() { - mController.onPreferenceChange(null, false); + public void testOnPreferenceChange_turnOnAutoOff_autoDisableOn() { + mController.setChecked(true); final int isOn = getAutoDisableSetting(); assertThat(isOn).isEqualTo(1); } + + @Test + public void testOnPreferenceChange_TurnOffAutoOff_autoDisableOff() { + mController.setChecked(false); + final int isOn = getAutoDisableSetting(); + assertThat(isOn).isEqualTo(0); + } }