Dismiss voice plate when the foreground DA is shown
Fix: 203571849
Test: Manual
Change-Id: I5c71820247e1883774fd5362944dcb840d6a384a
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fcf469c..e1daa1c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -54,6 +54,8 @@
<uses-permission android:name="android.permission.MONITOR_INPUT"/>
<!-- Needed to use TYPE_APPLICATION_OVERLAY window type to display title bar. -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
+ <!-- Permission to start a voice interaction service. -->
+ <uses-permission android:name="android.permission.ACCESS_VOICE_INTERACTION_SERVICE" />
<!-- To connect to media browser services in other apps, media browser clients
that target Android 11 need to add the following in their manifest -->
diff --git a/src/com/android/car/carlauncher/displayarea/CarDisplayAreaController.java b/src/com/android/car/carlauncher/displayarea/CarDisplayAreaController.java
index 589c92e..0f82922 100644
--- a/src/com/android/car/carlauncher/displayarea/CarDisplayAreaController.java
+++ b/src/com/android/car/carlauncher/displayarea/CarDisplayAreaController.java
@@ -64,6 +64,7 @@
import com.android.car.carlauncher.AppGridActivity;
import com.android.car.carlauncher.ControlBarActivity;
import com.android.car.carlauncher.R;
+import com.android.internal.app.AssistUtils;
import com.android.wm.shell.common.SyncTransactionQueue;
import java.util.HashMap;
@@ -132,6 +133,7 @@
private View mTitleBarView;
private Context mApplicationContext;
private int mForegroundDisplayTop;
+ private AssistUtils mAssistUtils;
/**
* The WindowContext that is registered with {@link #mTitleBarWindowManager} with options to
@@ -192,6 +194,7 @@
mAssistantVoicePlateActivityName = ComponentName.unflattenFromString(
applicationContext.getResources().getString(
R.string.config_assistantVoicePlateActivity));
+ mAssistUtils = new AssistUtils(applicationContext);
// Get bottom nav bar height.
Resources resources = applicationContext.getResources();
@@ -425,6 +428,12 @@
if (isVoicePlate) {
return;
}
+
+ // Check is there is an existing session running for assist, cancel it.
+ if (mAssistUtils.isSessionRunning()) {
+ mAssistUtils.hideCurrentSession();
+ }
+
if (isHostingDefaultApplicationDisplayAreaVisible() && !isMaps) {
if (mForegroundDAComponentsVisibilityMap.containsKey(
componentName.flattenToShortString())