Merge changes from topic "a11y_gesture_s-sc-v2-dev" into sc-v2-dev
* changes: Add the log for new supported accessibility button type 'Accessibility Gesture' Update the supported type in ACCESSIBILITY_BUTTON_MODE according to navigation gestural mode or button mode Add a supported type 'gesture' under ACCESSIBILITY_BUTTON_MODE
This commit is contained in:
committed by
Android (Google) Code Review
commit
ede423187b
@@ -9964,15 +9964,18 @@ public final class Settings {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Controls the accessibility button mode. System will force-set the value to {@link
|
* Controls the accessibility button mode. System will force-set the value to {@link
|
||||||
* #ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU} if {@link #NAVIGATION_MODE} is fully
|
* #ACCESSIBILITY_BUTTON_MODE_GESTURE} if {@link #NAVIGATION_MODE} is button; force-set the
|
||||||
* gestural.
|
* value to {@link ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR} if {@link #NAVIGATION_MODE} is
|
||||||
|
* gestural; otherwise, remain the option.
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li> 0 = button in navigation bar </li>
|
* <li> 0 = button in navigation bar </li>
|
||||||
* <li> 1 = button floating on the display </li>
|
* <li> 1 = button floating on the display </li>
|
||||||
|
* <li> 2 = button using gesture to trigger </li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* @see #ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR
|
* @see #ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR
|
||||||
* @see #ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU
|
* @see #ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU
|
||||||
|
* @see #ACCESSIBILITY_BUTTON_MODE_GESTURE
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public static final String ACCESSIBILITY_BUTTON_MODE =
|
public static final String ACCESSIBILITY_BUTTON_MODE =
|
||||||
@@ -9994,6 +9997,14 @@ public final class Settings {
|
|||||||
*/
|
*/
|
||||||
public static final int ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU = 0x1;
|
public static final int ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU = 0x1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accessibility button mode value that specifying the accessibility service or feature to
|
||||||
|
* be toggled via the gesture.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final int ACCESSIBILITY_BUTTON_MODE_GESTURE = 0x2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The size of the accessibility floating menu.
|
* The size of the accessibility floating menu.
|
||||||
* <ul>
|
* <ul>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.internal.accessibility.util;
|
package com.android.internal.accessibility.util;
|
||||||
|
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
||||||
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE;
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL;
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
||||||
@@ -30,6 +31,7 @@ import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT
|
|||||||
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_BUTTON;
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_BUTTON;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_BUTTON_LONG_PRESS;
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_BUTTON_LONG_PRESS;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_FLOATING_MENU;
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_FLOATING_MENU;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_GESTURE;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__TRIPLE_TAP;
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__TRIPLE_TAP;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__UNKNOWN_TYPE;
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__UNKNOWN_TYPE;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__VOLUME_KEY;
|
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__VOLUME_KEY;
|
||||||
@@ -152,19 +154,29 @@ public final class AccessibilityStatsLogUtils {
|
|||||||
convertToLoggingMagnificationMode(mode));
|
convertToLoggingMagnificationMode(mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isFloatingMenuEnabled(Context context) {
|
private static boolean isAccessibilityFloatingMenuEnabled(Context context) {
|
||||||
return Settings.Secure.getInt(context.getContentResolver(),
|
return Settings.Secure.getInt(context.getContentResolver(),
|
||||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE, /* def= */ -1)
|
Settings.Secure.ACCESSIBILITY_BUTTON_MODE, /* def= */ -1)
|
||||||
== ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
== ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isAccessibilityGestureEnabled(Context context) {
|
||||||
|
return Settings.Secure.getInt(context.getContentResolver(),
|
||||||
|
Settings.Secure.ACCESSIBILITY_BUTTON_MODE, /* def= */ -1)
|
||||||
|
== ACCESSIBILITY_BUTTON_MODE_GESTURE;
|
||||||
|
}
|
||||||
|
|
||||||
private static int convertToLoggingShortcutType(Context context,
|
private static int convertToLoggingShortcutType(Context context,
|
||||||
@ShortcutType int shortcutType) {
|
@ShortcutType int shortcutType) {
|
||||||
switch (shortcutType) {
|
switch (shortcutType) {
|
||||||
case ACCESSIBILITY_BUTTON:
|
case ACCESSIBILITY_BUTTON:
|
||||||
return isFloatingMenuEnabled(context)
|
if (isAccessibilityFloatingMenuEnabled(context)) {
|
||||||
? ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_FLOATING_MENU
|
return ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_FLOATING_MENU;
|
||||||
: ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_BUTTON;
|
} else if (isAccessibilityGestureEnabled(context)) {
|
||||||
|
return ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_GESTURE;
|
||||||
|
} else {
|
||||||
|
return ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_BUTTON;
|
||||||
|
}
|
||||||
case ACCESSIBILITY_SHORTCUT_KEY:
|
case ACCESSIBILITY_SHORTCUT_KEY:
|
||||||
return ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__VOLUME_KEY;
|
return ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__VOLUME_KEY;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ public class SecureSettingsValidators {
|
|||||||
VALIDATORS.put(Secure.ACCESSIBILITY_BUTTON_MODE,
|
VALIDATORS.put(Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||||
new InclusiveIntegerRangeValidator(
|
new InclusiveIntegerRangeValidator(
|
||||||
Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR,
|
Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR,
|
||||||
Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU));
|
Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE));
|
||||||
VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_SIZE,
|
VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_SIZE,
|
||||||
new DiscreteValueValidator(new String[] {"0", "1"}));
|
new DiscreteValueValidator(new String[] {"0", "1"}));
|
||||||
VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE,
|
VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.systemui.accessibility;
|
package com.android.systemui.accessibility;
|
||||||
|
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
||||||
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE;
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
@@ -49,7 +50,8 @@ public class AccessibilityButtonModeObserver extends
|
|||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@IntDef({
|
@IntDef({
|
||||||
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR,
|
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR,
|
||||||
ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU
|
ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU,
|
||||||
|
ACCESSIBILITY_BUTTON_MODE_GESTURE
|
||||||
})
|
})
|
||||||
public @interface AccessibilityButtonMode {}
|
public @interface AccessibilityButtonMode {}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import static android.app.StatusBarManager.WindowVisibleState;
|
|||||||
import static android.app.StatusBarManager.windowStateToString;
|
import static android.app.StatusBarManager.windowStateToString;
|
||||||
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
|
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
|
||||||
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE;
|
||||||
|
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;
|
||||||
import static android.view.Display.DEFAULT_DISPLAY;
|
import static android.view.Display.DEFAULT_DISPLAY;
|
||||||
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
|
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
|
||||||
import static android.view.InsetsState.containsType;
|
import static android.view.InsetsState.containsType;
|
||||||
@@ -589,7 +591,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
||||||
mNotificationShadeDepthController.addListener(mDepthListener);
|
mNotificationShadeDepthController.addListener(mDepthListener);
|
||||||
|
|
||||||
setAccessibilityFloatingMenuModeIfNeeded();
|
updateAccessibilityButtonModeIfNeeded();
|
||||||
|
|
||||||
return barView;
|
return barView;
|
||||||
}
|
}
|
||||||
@@ -1379,11 +1381,31 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
updateSystemUiStateFlags(a11yFlags);
|
updateSystemUiStateFlags(a11yFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setAccessibilityFloatingMenuModeIfNeeded() {
|
private void updateAccessibilityButtonModeIfNeeded() {
|
||||||
if (QuickStepContract.isGesturalMode(mNavBarMode)) {
|
final int mode = Settings.Secure.getIntForUser(mContentResolver,
|
||||||
|
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||||
|
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, UserHandle.USER_CURRENT);
|
||||||
|
|
||||||
|
// ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU is compatible under gestural or non-gestural
|
||||||
|
// mode, so we don't need to update it.
|
||||||
|
if (mode == ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR is incompatible under gestural mode. Need to
|
||||||
|
// force update to ACCESSIBILITY_BUTTON_MODE_GESTURE.
|
||||||
|
if (QuickStepContract.isGesturalMode(mNavBarMode)
|
||||||
|
&& mode == ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR) {
|
||||||
|
Settings.Secure.putIntForUser(mContentResolver,
|
||||||
|
Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_GESTURE,
|
||||||
|
UserHandle.USER_CURRENT);
|
||||||
|
// ACCESSIBILITY_BUTTON_MODE_GESTURE is incompatible under non gestural mode. Need to
|
||||||
|
// force update to ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR.
|
||||||
|
} else if (!QuickStepContract.isGesturalMode(mNavBarMode)
|
||||||
|
&& mode == ACCESSIBILITY_BUTTON_MODE_GESTURE) {
|
||||||
Settings.Secure.putIntForUser(mContentResolver,
|
Settings.Secure.putIntForUser(mContentResolver,
|
||||||
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
|
||||||
ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, UserHandle.USER_CURRENT);
|
ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, UserHandle.USER_CURRENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1511,7 +1533,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
updateScreenPinningGestures();
|
updateScreenPinningGestures();
|
||||||
setAccessibilityFloatingMenuModeIfNeeded();
|
updateAccessibilityButtonModeIfNeeded();
|
||||||
|
|
||||||
if (!canShowSecondaryHandle()) {
|
if (!canShowSecondaryHandle()) {
|
||||||
resetSecondaryHandle();
|
resetSecondaryHandle();
|
||||||
|
|||||||
Reference in New Issue
Block a user