diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 5734cbd8d84f1..8d12f3d3da769 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -353,6 +353,7 @@ package android {
field public static final int config_systemContacts = 17039403; // 0x104002b
field public static final int config_systemGallery = 17039399; // 0x1040027
field public static final int config_systemShell = 17039402; // 0x104002a
+ field public static final int config_systemSpeechRecognizer = 17039406; // 0x104002e
}
public static final class R.style {
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 592a3a1ff083f..12cb3980f785c 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1953,6 +1953,8 @@
com.android.shell
com.android.contacts
+
+
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 9b2573f3d62f8..2004d0a8d15c8 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -3166,6 +3166,8 @@
+
+
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 8628f89a49c1c..dce63ebb08892 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -76,6 +76,7 @@ import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;
+import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IHotwordRecognitionStatusCallback;
import com.android.internal.app.IVoiceActionCheckCallback;
@@ -643,6 +644,10 @@ public class VoiceInteractionManagerService extends SystemService {
}
ComponentName findAvailRecognizer(String prefPackage, int userHandle) {
+ if (prefPackage == null) {
+ prefPackage = getDefaultRecognizer();
+ }
+
List available =
mContext.getPackageManager().queryIntentServicesAsUser(
new Intent(RecognitionService.SERVICE_INTERFACE),
@@ -670,6 +675,12 @@ public class VoiceInteractionManagerService extends SystemService {
}
}
+ @Nullable
+ public String getDefaultRecognizer() {
+ String recognizer = mContext.getString(R.string.config_systemSpeechRecognizer);
+ return TextUtils.isEmpty(recognizer) ? null : recognizer;
+ }
+
ComponentName getCurRecognizer(int userHandle) {
String curRecognizer = Settings.Secure.getStringForUser(
mContext.getContentResolver(),