diff options
author | Abel Tesfaye <tesfaye@google.com> | 2020-11-19 20:37:20 +0000 |
---|---|---|
committer | Abel Tesfaye <tesfaye@google.com> | 2021-02-08 18:21:03 +0000 |
commit | a96775c58b1e69728aa9c40ac6a7aba0d0e5d9ec (patch) | |
tree | 5bf90f9c83e5566a798b7fccc8e318b1913e0df8 /src/com/android/settings/display/SmartAutoRotatePreferenceController.java | |
parent | 5f20dd4ce2d70c39c184430426ba7189649b4cd5 (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.java | 70 |
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); + } +} |