Loading src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsController.java +30 −18 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.Context; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; import android.text.TextUtils; import com.android.settingslib.fuelgauge.BatterySaverUtils; /** * Responds to user actions in the Settings > Battery > Set a Schedule Screen Loading Loading @@ -66,25 +68,35 @@ public class BatterySaverScheduleRadioButtonsController { public boolean setDefaultKey(String key) { final ContentResolver resolver = mContext.getContentResolver(); int mode = PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE; int triggerLevel = 0; if (!TextUtils.equals(key, KEY_NO_SCHEDULE) && BatterySaverUtils.maybeShowBatterySaverConfirmation( mContext, true /* confirmOnly */)) { return true; } else { switch (key) { case KEY_NO_SCHEDULE: Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); Settings.Global.putInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); break; case KEY_PERCENTAGE: Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); Settings.Global.putInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 5); triggerLevel = 5; break; case KEY_ROUTINE: Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); mode = PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC; break; default: throw new IllegalStateException( "Not a valid key for " + this.getClass().getSimpleName()); } } // Trigger level is intentionally left alone when going between dynamic and percentage modes // so that a users percentage based schedule is preserved when they toggle between the two. Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, mode); if (mode != PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC) { Settings.Global.putInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, triggerLevel); } mSeekBarController.updateSeekBar(); return true; } Loading tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import android.content.Context; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; import android.provider.Settings.Secure; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -54,4 +55,13 @@ public class BatterySaverScheduleRadioButtonsControllerTest { assertThat(mController.getDefaultKey()) .isEqualTo(BatterySaverScheduleRadioButtonsController.KEY_NO_SCHEDULE); } @Test public void setDefaultKey_any_defaultsToNoScheduleIfWarningNotSeen() { Secure.putString( mContext.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); mController.setDefaultKey(BatterySaverScheduleRadioButtonsController.KEY_ROUTINE); assertThat(mController.getDefaultKey()) .isEqualTo(BatterySaverScheduleRadioButtonsController.KEY_NO_SCHEDULE); } } Loading
src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsController.java +30 −18 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.Context; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; import android.text.TextUtils; import com.android.settingslib.fuelgauge.BatterySaverUtils; /** * Responds to user actions in the Settings > Battery > Set a Schedule Screen Loading Loading @@ -66,25 +68,35 @@ public class BatterySaverScheduleRadioButtonsController { public boolean setDefaultKey(String key) { final ContentResolver resolver = mContext.getContentResolver(); int mode = PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE; int triggerLevel = 0; if (!TextUtils.equals(key, KEY_NO_SCHEDULE) && BatterySaverUtils.maybeShowBatterySaverConfirmation( mContext, true /* confirmOnly */)) { return true; } else { switch (key) { case KEY_NO_SCHEDULE: Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); Settings.Global.putInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); break; case KEY_PERCENTAGE: Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); Settings.Global.putInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 5); triggerLevel = 5; break; case KEY_ROUTINE: Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); mode = PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC; break; default: throw new IllegalStateException( "Not a valid key for " + this.getClass().getSimpleName()); } } // Trigger level is intentionally left alone when going between dynamic and percentage modes // so that a users percentage based schedule is preserved when they toggle between the two. Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, mode); if (mode != PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC) { Settings.Global.putInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, triggerLevel); } mSeekBarController.updateSeekBar(); return true; } Loading
tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleRadioButtonsControllerTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import android.content.Context; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; import android.provider.Settings.Secure; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -54,4 +55,13 @@ public class BatterySaverScheduleRadioButtonsControllerTest { assertThat(mController.getDefaultKey()) .isEqualTo(BatterySaverScheduleRadioButtonsController.KEY_NO_SCHEDULE); } @Test public void setDefaultKey_any_defaultsToNoScheduleIfWarningNotSeen() { Secure.putString( mContext.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); mController.setDefaultKey(BatterySaverScheduleRadioButtonsController.KEY_ROUTINE); assertThat(mController.getDefaultKey()) .isEqualTo(BatterySaverScheduleRadioButtonsController.KEY_NO_SCHEDULE); } }