Implement Hearing Devices Quick Settings Tile (5/n)
This patch provides
* Change accessibility service to broadcast intent to open hearing devices dialog
* Use BroadcastReceiver to receive and launch hearing devices dialog
Bug: 291423171
Bug: 319197158
Test: atest AccessibilityManagerServiceTest
Flag: ACONFIG com.android.systemui.hearing_aids_qs_tile_dialog DEVELOPMENT
Change-Id: Ie08169982efa4b9ceb1eb15efb0d4666f32e92e6
diff --git a/services/accessibility/Android.bp b/services/accessibility/Android.bp
index 69cc68a..467adc7 100644
--- a/services/accessibility/Android.bp
+++ b/services/accessibility/Android.bp
@@ -34,6 +34,8 @@
],
static_libs: [
"com_android_server_accessibility_flags_lib",
+ "//frameworks/base/packages/SystemUI/aconfig:com_android_systemui_flags_lib",
+
],
}
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 880a687..b48894d 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -242,6 +242,13 @@
private static final String SET_PIP_ACTION_REPLACEMENT =
"setPictureInPictureActionReplacingConnection";
+ /**
+ * An intent action to launch Hearing devices dialog.
+ */
+ @VisibleForTesting
+ static final String ACTION_LAUNCH_HEARING_DEVICES_DIALOG =
+ "com.android.systemui.action.LAUNCH_HEARING_DEVICES_DIALOG";
+
private static final char COMPONENT_NAME_SEPARATOR = ':';
private static final int OWN_PROCESS_ID = android.os.Process.myPid();
@@ -2293,6 +2300,14 @@
}
}
+ private void launchHearingDevicesDialog() {
+ final Intent intent = new Intent(ACTION_LAUNCH_HEARING_DEVICES_DIALOG);
+ intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ intent.setPackage(
+ mContext.getString(com.android.internal.R.string.config_systemUi));
+ mContext.sendBroadcastAsUser(intent, UserHandle.SYSTEM);
+ }
+
private void notifyAccessibilityButtonVisibilityChangedLocked(boolean available) {
final AccessibilityUserState state = getCurrentUserStateLocked();
mIsAccessibilityButtonShown = available;
@@ -4102,7 +4117,13 @@
private void launchAccessibilityFrameworkFeature(int displayId, ComponentName assignedTarget) {
if (assignedTarget.equals(ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME)) {
- launchAccessibilitySubSettings(displayId, ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME);
+ //import com.android.systemui.Flags;
+ if (com.android.systemui.Flags.hearingAidsQsTileDialog()) {
+ launchHearingDevicesDialog();
+ } else {
+ launchAccessibilitySubSettings(displayId,
+ ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME);
+ }
}
}