diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java index b704fde5096..a936e99f751 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java @@ -100,6 +100,9 @@ public class BatterySaverScheduleSeekBarController implements } public void addToScreen(PreferenceScreen screen) { + // makes sure it gets added after the preferences if called due to first time battery + // saver message + mSeekBarPreference.setOrder(5); screen.addPreference(mSeekBarPreference); } } diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java index 3f8716dcdc8..6553c609a1b 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java @@ -17,15 +17,20 @@ package com.android.settings.fuelgauge.batterysaver; import android.content.Context; +import android.database.ContentObserver; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.Bundle; +import android.os.Handler; +import android.provider.Settings; import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.settings.R; @@ -51,8 +56,18 @@ import java.util.List; public class BatterySaverScheduleSettings extends RadioButtonPickerFragment { public BatterySaverScheduleRadioButtonsController mRadioButtonController; + @VisibleForTesting + Context mContext; private BatterySaverScheduleSeekBarController mSeekBarController; + @VisibleForTesting + final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange, Uri uri) { + updateCandidates(); + } + }; + @Override protected int getPreferenceScreenResId() { return R.xml.battery_saver_schedule_settings; @@ -64,6 +79,16 @@ public class BatterySaverScheduleSettings extends RadioButtonPickerFragment { mSeekBarController = new BatterySaverScheduleSeekBarController(context); mRadioButtonController = new BatterySaverScheduleRadioButtonsController( context, mSeekBarController); + mContext = context; + } + + @Override + public void onResume() { + super.onResume(); + mContext.getContentResolver().registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED), + false, + mSettingsObserver); } @Override @@ -78,6 +103,12 @@ public class BatterySaverScheduleSettings extends RadioButtonPickerFragment { super.onCreate(savedInstanceState); } + @Override + public void onPause() { + mContext.getContentResolver().unregisterContentObserver(mSettingsObserver); + super.onPause(); + } + @Override protected List getCandidates() { Context context = getContext();