diff --git a/core/java/android/hardware/soundtrigger/SoundTrigger.java b/core/java/android/hardware/soundtrigger/SoundTrigger.java index e63f57b5224cf..55939896ab986 100644 --- a/core/java/android/hardware/soundtrigger/SoundTrigger.java +++ b/core/java/android/hardware/soundtrigger/SoundTrigger.java @@ -78,6 +78,11 @@ public class SoundTrigger { private SoundTrigger() { } + /** + * @hide + */ + public static final String FAKE_HAL_ARCH = "injection"; + /** * Status code used when the operation succeeded */ diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java index b1dc686059914..2830fb7750e42 100644 --- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java +++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java @@ -805,11 +805,13 @@ public class AlwaysOnHotwordDetector extends AbstractDetector { Identity identity = new Identity(); identity.packageName = ActivityThread.currentOpPackageName(); if (moduleProperties == null) { - List modulePropList = - mModelManagementService.listModuleProperties(identity); - if (modulePropList.size() > 0) { - moduleProperties = modulePropList.get(0); - } + moduleProperties = mModelManagementService + .listModuleProperties(identity) + .stream() + .filter(prop -> !prop.getSupportedModelArch() + .equals(SoundTrigger.FAKE_HAL_ARCH)) + .findFirst() + .orElse(null); // (@atneya) intentionally let a null moduleProperties through until // all CTS tests are fixed } diff --git a/media/java/android/media/soundtrigger/SoundTriggerManager.java b/media/java/android/media/soundtrigger/SoundTriggerManager.java index 0e9ef4c0c8ddb..ae8121a59abf3 100644 --- a/media/java/android/media/soundtrigger/SoundTriggerManager.java +++ b/media/java/android/media/soundtrigger/SoundTriggerManager.java @@ -94,12 +94,17 @@ public final class SoundTriggerManager { originatorIdentity.packageName = ActivityThread.currentOpPackageName(); try (SafeCloseable ignored = ClearCallingIdentityContext.create()) { - List modulePropertiesList = soundTriggerService - .listModuleProperties(originatorIdentity); - if (!modulePropertiesList.isEmpty()) { + ModuleProperties moduleProperties = soundTriggerService + .listModuleProperties(originatorIdentity) + .stream() + .filter(prop -> !prop.getSupportedModelArch() + .equals(SoundTrigger.FAKE_HAL_ARCH)) + .findFirst() + .orElse(null); + if (moduleProperties != null) { mSoundTriggerSession = soundTriggerService.attachAsOriginator( originatorIdentity, - modulePropertiesList.get(0), + moduleProperties, mBinderToken); } else { mSoundTriggerSession = null;