From d6d96c74c40b798331b469342eee71b2c8bde401 Mon Sep 17 00:00:00 2001 From: jasonwshsu Date: Fri, 18 Dec 2020 00:11:53 +0800 Subject: [PATCH] Add accessibility floating menu settings key * ACCESSIBILITY_FLOATING_MENU_SIZE: control different size * ACCESSIBILITY_FLOATING_MENU_ICON_TYPE: control icon type * ACCESSIBILITY_FLOATING_MENU_OPACITY: control the opacity value for fade out effect Bug: 173940865 Test: atest SettingsProviderTest Change-Id: I0399366b6ea05268e3d3ad1f24962fffde8d686a --- core/java/android/provider/Settings.java | 33 +++++++++++++++++++ .../android/providers/settings/secure.proto | 3 ++ .../settings/backup/SecureSettings.java | 5 ++- .../validators/SecureSettingsValidators.java | 6 ++++ .../settings/SettingsProtoDumpUtil.java | 9 +++++ 5 files changed, 55 insertions(+), 1 deletion(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 4632621b29aa2..053ee718a8c80 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9193,6 +9193,39 @@ public final class Settings { */ public static final int ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU = 0x1; + /** + * The size of the accessibility floating menu. + * + * + * @hide + */ + public static final String ACCESSIBILITY_FLOATING_MENU_SIZE = + "accessibility_floating_menu_size"; + + /** + * The icon type of the accessibility floating menu. + * + * + * @hide + */ + public static final String ACCESSIBILITY_FLOATING_MENU_ICON_TYPE = + "accessibility_floating_menu_icon_type"; + + /** + * The opacity value for the accessibility floating menu fade out effect, from 0.0 + * (transparent) to 1.0 (opaque). + * + * @hide + */ + public static final String ACCESSIBILITY_FLOATING_MENU_OPACITY = + "accessibility_floating_menu_opacity"; + /** * Whether the Adaptive connectivity option is enabled. * diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index 2ba39cb975f55..391919af9239b 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -81,6 +81,9 @@ message SecureSettingsProto { optional SettingProto accessibility_magnification_capability = 36 [ (android.privacy).dest = DEST_AUTOMATIC ]; // Settings for accessibility button mode (navigation bar or floating action menu). optional SettingProto accessibility_button_mode = 37 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto accessibility_floating_menu_size = 38 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto accessibility_floating_menu_icon_type = 39 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto accessibility_floating_menu_opacity = 40 [ (android.privacy).dest = DEST_AUTOMATIC ]; } optional Accessibility accessibility = 2; diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index b6e45fc03d018..fcb6cc3fbd8ea 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -181,6 +181,9 @@ public class SecureSettings { Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED, Settings.Secure.ASSIST_HANDLES_LEARNING_TIME_ELAPSED_MILLIS, Settings.Secure.ASSIST_HANDLES_LEARNING_EVENT_COUNT, - Settings.Secure.ACCESSIBILITY_BUTTON_MODE + Settings.Secure.ACCESSIBILITY_BUTTON_MODE, + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE, + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY }; } diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index d14acc6af5d66..53e67e153c74e 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -273,5 +273,11 @@ public class SecureSettingsValidators { new InclusiveIntegerRangeValidator( Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU)); + VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + new DiscreteValueValidator(new String[] {"0", "1"})); + VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE, + new DiscreteValueValidator(new String[] {"0", "1"})); + VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, + new InclusiveFloatRangeValidator(0.0f, 1.0f)); } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index 5c7a4665fef8c..713be5482993e 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -1813,6 +1813,15 @@ class SettingsProtoDumpUtil { dumpSetting(s, p, Settings.Secure.ACCESSIBILITY_BUTTON_MODE, SecureSettingsProto.Accessibility.ACCESSIBILITY_BUTTON_MODE); + dumpSetting(s, p, + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + SecureSettingsProto.Accessibility.ACCESSIBILITY_FLOATING_MENU_SIZE); + dumpSetting(s, p, + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE, + SecureSettingsProto.Accessibility.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE); + dumpSetting(s, p, + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, + SecureSettingsProto.Accessibility.ACCESSIBILITY_FLOATING_MENU_OPACITY); p.end(accessibilityToken); final long adaptiveSleepToken = p.start(SecureSettingsProto.ADAPTIVE_SLEEP);