diff --git a/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java index 855c5070bf2..528c94d7d81 100644 --- a/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java @@ -32,23 +32,20 @@ import com.android.settingslib.widget.BannerMessagePreference; public class AdaptiveSleepBatterySaverPreferenceController { @VisibleForTesting - final BannerMessagePreference mPreference; + BannerMessagePreference mPreference; private final PowerManager mPowerManager; + private final Context mContext; public AdaptiveSleepBatterySaverPreferenceController(Context context) { - mPreference = new BannerMessagePreference(context); - mPreference.setTitle(R.string.ambient_camera_summary_battery_saver_on); - mPreference.setPositiveButtonText(R.string.disable_text); mPowerManager = context.getSystemService(PowerManager.class); - mPreference.setPositiveButtonOnClickListener(p -> { - mPowerManager.setPowerSaveModeEnabled(false); - }); + mContext = context; } /** * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { + initializePreference(); screen.addPreference(mPreference); updateVisibility(); } @@ -66,6 +63,17 @@ public class AdaptiveSleepBatterySaverPreferenceController { * Refreshes the visibility of the preference. */ public void updateVisibility() { + initializePreference(); mPreference.setVisible(isPowerSaveMode()); } + + private void initializePreference() { + if (mPreference == null) { + mPreference = new BannerMessagePreference(mContext); + mPreference.setTitle(R.string.ambient_camera_summary_battery_saver_on); + mPreference.setPositiveButtonText(R.string.disable_text); + mPreference.setPositiveButtonOnClickListener( + p -> mPowerManager.setPowerSaveModeEnabled(false)); + } + } } diff --git a/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java b/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java index ba7a3aba752..20080ce972f 100644 --- a/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java @@ -33,26 +33,22 @@ import com.android.settingslib.widget.BannerMessagePreference; */ public class AdaptiveSleepCameraStatePreferenceController { @VisibleForTesting - final BannerMessagePreference mPreference; + BannerMessagePreference mPreference; private final SensorPrivacyManager mPrivacyManager; + private final Context mContext; public AdaptiveSleepCameraStatePreferenceController(Context context) { - mPreference = new BannerMessagePreference(context); - mPreference.setTitle(R.string.auto_rotate_camera_lock_title); - mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary); - mPreference.setPositiveButtonText(R.string.allow); mPrivacyManager = SensorPrivacyManager.getInstance(context); mPrivacyManager.addSensorPrivacyListener(CAMERA, (sensor, enabled) -> updateVisibility()); - mPreference.setPositiveButtonOnClickListener(p -> { - mPrivacyManager.setSensorPrivacy(CAMERA, false); - }); + mContext = context; } /** * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { + initializePreference(); screen.addPreference(mPreference); updateVisibility(); } @@ -70,6 +66,18 @@ public class AdaptiveSleepCameraStatePreferenceController { * Refreshes the visibility of the preference. */ public void updateVisibility() { + initializePreference(); mPreference.setVisible(isCameraLocked()); } + + private void initializePreference() { + if (mPreference == null) { + mPreference = new BannerMessagePreference(mContext); + mPreference.setTitle(R.string.auto_rotate_camera_lock_title); + mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary); + mPreference.setPositiveButtonText(R.string.allow); + mPreference.setPositiveButtonOnClickListener( + p -> mPrivacyManager.setSensorPrivacy(CAMERA, false)); + } + } } diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java index c57904e7be6..b86a070cf84 100644 --- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java @@ -65,19 +65,6 @@ public class AdaptiveSleepPreferenceController { mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); mPrivacyManager = SensorPrivacyManager.getInstance(context); mPowerManager = context.getSystemService(PowerManager.class); - mPreference = new RestrictedSwitchPreference(context); - mPreference.setTitle(R.string.adaptive_sleep_title); - mPreference.setSummary(R.string.adaptive_sleep_description); - mPreference.setChecked(isChecked()); - mPreference.setKey(PREFERENCE_KEY); - mPreference.setOnPreferenceClickListener(preference -> { - final boolean isChecked = ((RestrictedSwitchPreference) preference).isChecked(); - mMetricsFeatureProvider.action(context, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, - isChecked); - Settings.Secure.putInt(context.getContentResolver(), - Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); - return true; - }); mPackageManager = context.getPackageManager(); } @@ -116,8 +103,8 @@ public class AdaptiveSleepPreferenceController { mPreference.setSummary(R.string.adaptive_sleep_description); mPreference.setChecked(isChecked()); mPreference.setKey(PREFERENCE_KEY); - mPreference.setOnPreferenceChangeListener((preference, value) -> { - final boolean isChecked = (Boolean) value; + mPreference.setOnPreferenceClickListener(preference -> { + final boolean isChecked = ((RestrictedSwitchPreference) preference).isChecked(); mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, isChecked);