summaryrefslogtreecommitdiff
path: root/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
diff options
context:
space:
mode:
authorAbel Tesfaye <tesfaye@google.com>2020-11-19 20:37:20 +0000
committerAbel Tesfaye <tesfaye@google.com>2021-02-08 18:21:03 +0000
commita96775c58b1e69728aa9c40ac6a7aba0d0e5d9ec (patch)
tree5bf90f9c83e5566a798b7fccc8e318b1913e0df8 /src/com/android/settings/display/SmartAutoRotatePreferenceController.java
parent5f20dd4ce2d70c39c184430426ba7189649b4cd5 (diff)
Implemented new preference setting screen for face based auto-rotation
Test: locally with phone and make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.SmartAutoRotatePreferenceControllerTest" Bug: 172857585 Change-Id: I8aaeb9d726ff71f64fd241c01fe2a1268fff927e
Diffstat (limited to 'src/com/android/settings/display/SmartAutoRotatePreferenceController.java')
-rw-r--r--src/com/android/settings/display/SmartAutoRotatePreferenceController.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
new file mode 100644
index 0000000000..01c8379f5e
--- /dev/null
+++ b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.display;
+
+import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.Log;
+
+import androidx.preference.Preference;
+
+import com.android.internal.view.RotationPolicy;
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+/**
+ * SmartAutoRotatePreferenceController provides auto rotate summary in display settings
+ */
+public class SmartAutoRotatePreferenceController extends BasePreferenceController {
+
+ private static final String TAG = "SmartAutoRotatePreferenceController";
+
+ public SmartAutoRotatePreferenceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return RotationPolicy.isRotationLockToggleVisible(mContext)
+ ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ }
+
+ protected void update(Preference preference) {
+ refreshSummary(preference);
+ }
+
+ @Override
+ public CharSequence getSummary() {
+ int activeStringId = R.string.auto_rotate_option_off;
+ if (!RotationPolicy.isRotationLocked(mContext)) {
+ try {
+ final int cameraRotate = Settings.Secure.getIntForUser(
+ mContext.getContentResolver(),
+ CAMERA_AUTOROTATE,
+ UserHandle.USER_CURRENT);
+ activeStringId = cameraRotate == 1 ? R.string.auto_rotate_option_face_based
+ : R.string.auto_rotate_option_on;
+ } catch (Settings.SettingNotFoundException e) {
+ Log.w(TAG, "CAMERA_AUTOROTATE setting not found", e);
+ }
+ }
+ return mContext.getString(activeStringId);
+ }
+}