Fix issue where smart auto rotate toggle is not disabled

Bug: 187755019

Test: locally on flame, make RunSettingsRoboTests -j96 ROBOTEST_FILTER=SmartAutoRotateControllerTest
Change-Id: I44bbd644515d153c834533fe47b3b2c34cfeaac6
This commit is contained in:
Abel Tesfaye
2021-05-11 20:14:45 +00:00
parent 989570a9b6
commit 44593a8922
2 changed files with 37 additions and 24 deletions

View File

@@ -18,6 +18,9 @@ package com.android.settings.display;
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
import android.Manifest;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
@@ -32,7 +35,9 @@ import android.provider.Settings;
import android.service.rotationresolver.RotationResolverService;
import android.text.TextUtils;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -41,14 +46,12 @@ import com.android.internal.view.RotationPolicy;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
/**
* SmartAutoRotateController controls whether auto rotation is enabled
*/
public class SmartAutoRotateController extends TogglePreferenceController implements
Preference.OnPreferenceChangeListener, LifecycleObserver, OnStart, OnStop {
Preference.OnPreferenceChangeListener, LifecycleObserver {
private final MetricsFeatureProvider mMetricsFeatureProvider;
private final SensorPrivacyManager mPrivacyManager;
@@ -60,6 +63,7 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
}
};
private Preference mPreference;
private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
public SmartAutoRotateController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -70,6 +74,10 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
mPowerManager = context.getSystemService(PowerManager.class);
}
public void init(Lifecycle lifecycle) {
lifecycle.addObserver(this);
}
@Override
public int getAvailabilityStatus() {
if (!isRotationResolverServiceAvailable(mContext)) {
@@ -101,22 +109,36 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
return mPowerManager.isPowerSaveMode();
}
@Override
@OnLifecycleEvent(ON_START)
public void onStart() {
mContext.registerReceiver(mReceiver,
new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
if (mRotationPolicyListener == null) {
mRotationPolicyListener = new RotationPolicy.RotationPolicyListener() {
@Override
public void onChange() {
updateState(mPreference);
}
};
}
RotationPolicy.registerRotationPolicyListener(mContext, mRotationPolicyListener);
}
@Override
@OnLifecycleEvent(ON_STOP)
public void onStop() {
mContext.unregisterReceiver(mReceiver);
if (mRotationPolicyListener != null) {
RotationPolicy.unregisterRotationPolicyListener(mContext, mRotationPolicyListener);
mRotationPolicyListener = null;
}
}
@Override
public boolean isChecked() {
return hasSufficientPermission(mContext) && !isCameraLocked() && !isPowerSaveMode()
&& Settings.Secure.getInt(mContext.getContentResolver(),
CAMERA_AUTOROTATE, 0) == 1;
return !RotationPolicy.isRotationLocked(mContext) && hasSufficientPermission(mContext)
&& !isCameraLocked() && !isPowerSaveMode() && Settings.Secure.getInt(
mContext.getContentResolver(),
CAMERA_AUTOROTATE, 0) == 1;
}
@Override