Add warning message when power save mode is enabled for attention settings fragment

Test: locally with flame, make RunSettingsRoboTests -j96 ROBOTEST_FILTER=AdaptiveSleepPreferenceControllerTest,AdaptiveSleepBatterySaverPreferenceControllerTest

Bug: 186690152
Change-Id: I42e018a8cf48166a8250fac9510a8882efb58568
This commit is contained in:
Abel Tesfaye
2021-05-05 22:46:26 +00:00
parent bbb6562684
commit 51ce242573
5 changed files with 216 additions and 3 deletions

View File

@@ -28,6 +28,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.hardware.SensorPrivacyManager;
import android.os.PowerManager;
import android.os.UserManager;
import android.provider.Settings;
import android.service.attention.AttentionService;
@@ -53,6 +54,7 @@ public class AdaptiveSleepPreferenceController {
private final PackageManager mPackageManager;
private final Context mContext;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private final PowerManager mPowerManager;
@VisibleForTesting
RestrictedSwitchPreference mPreference;
@@ -62,6 +64,20 @@ public class AdaptiveSleepPreferenceController {
mRestrictionUtils = restrictionUtils;
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();
}
@@ -87,7 +103,8 @@ public class AdaptiveSleepPreferenceController {
if (enforcedAdmin != null) {
mPreference.setDisabledByAdmin(enforcedAdmin);
} else {
mPreference.setEnabled(hasSufficientPermission(mPackageManager) && !isCameraLocked());
mPreference.setEnabled(hasSufficientPermission(mPackageManager) && !isCameraLocked()
&& !isPowerSaveMode());
}
}
@@ -114,7 +131,7 @@ public class AdaptiveSleepPreferenceController {
@VisibleForTesting
boolean isChecked() {
return hasSufficientPermission(mContext.getPackageManager()) && !isCameraLocked()
&& Settings.Secure.getInt(mContext.getContentResolver(),
&& !isPowerSaveMode() && Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ADAPTIVE_SLEEP, DEFAULT_VALUE)
!= DEFAULT_VALUE;
}
@@ -128,6 +145,11 @@ public class AdaptiveSleepPreferenceController {
return mPrivacyManager.isSensorPrivacyEnabled(CAMERA);
}
@VisibleForTesting
boolean isPowerSaveMode() {
return mPowerManager.isPowerSaveMode();
}
public static int isControllerAvailable(Context context) {
return context.getResources().getBoolean(
com.android.internal.R.bool.config_adaptive_sleep_available)