From 6a2fe65a646c048c376c94b68b064a63d8418cfa Mon Sep 17 00:00:00 2001 From: menghanli Date: Wed, 16 Jun 2021 08:10:09 +0800 Subject: [PATCH] Add back the accessibility gesture tutorial dialog in system navigation Show the accessibility gesture tutorial dialog when user choose the system gesture navigation. Partial rollback from commit 1a0e2b1be52849a0c91dcc1a907910592ddc3f0d Bug: 190563948 Test: Manual test Change-Id: Iabc14cc7f8024b574bc96fe4f5ba8c86e01633e7 --- .../SystemNavigationGestureSettings.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java index 854efa05531..7bf24608d39 100644 --- a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java +++ b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java @@ -17,6 +17,7 @@ package com.android.settings.gestures; import static android.os.UserHandle.USER_CURRENT; +import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; @@ -30,11 +31,14 @@ import android.content.om.OverlayInfo; import android.os.RemoteException; import android.os.ServiceManager; import android.provider.Settings; +import android.text.TextUtils; +import android.view.accessibility.AccessibilityManager; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.SettingsTutorialDialogWrapperActivity; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; @@ -176,7 +180,14 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i protected boolean setDefaultKey(String key) { setCurrentSystemNavigationMode(mOverlayManager, key); setIllustrationVideo(mVideoPreference, key); - + if (TextUtils.equals(KEY_SYSTEM_NAV_GESTURAL, key) + && !isAccessibilityFloatingMenuEnabled() + && (isAnyServiceSupportAccessibilityButton() || isNavBarMagnificationEnabled())) { + final Intent intent = new Intent(getActivity(), + SettingsTutorialDialogWrapperActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } return true; } @@ -250,6 +261,24 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i } } + private boolean isAnyServiceSupportAccessibilityButton() { + final AccessibilityManager ams = getContext().getSystemService(AccessibilityManager.class); + final List targets = ams.getAccessibilityShortcutTargets( + AccessibilityManager.ACCESSIBILITY_BUTTON); + return !targets.isEmpty(); + } + + private boolean isNavBarMagnificationEnabled() { + return Settings.Secure.getInt(getContext().getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 1; + } + + private boolean isAccessibilityFloatingMenuEnabled() { + return Settings.Secure.getInt(getContext().getContentResolver(), + Settings.Secure.ACCESSIBILITY_BUTTON_MODE, /* def= */ -1) + == ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU; + } + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.system_navigation_gesture_settings) {