Apply Assistant AudioPolicy to HotwordDetectionService
The HotwordDetectionService is part of the Assistant package but runs
with a separate (isolated) uid.
This change follows the pattern of how the Assistant and IME UIDs are
set.
Fix: 194368677
Test: manual - hotword works when another app is using the mic and in
Auto projection mode
Test: atest HotwordDetectionServiceBasicTest
Change-Id: I76a7930431db226c7e502f8993dfeaa4bc133bea
diff --git a/media/libaudioclient/AudioSystem.cpp b/media/libaudioclient/AudioSystem.cpp
index 88e752b..f1eeaa3 100644
--- a/media/libaudioclient/AudioSystem.cpp
+++ b/media/libaudioclient/AudioSystem.cpp
@@ -1922,6 +1922,14 @@
return statusTFromBinderStatus(aps->setAssistantUid(uidAidl));
}
+status_t AudioSystem::setHotwordDetectionServiceUid(uid_t uid) {
+ const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
+ if (aps == 0) return PERMISSION_DENIED;
+
+ int32_t uidAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_uid_t_int32_t(uid));
+ return statusTFromBinderStatus(aps->setHotwordDetectionServiceUid(uidAidl));
+}
+
status_t AudioSystem::setA11yServicesUids(const std::vector<uid_t>& uids) {
const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
if (aps == 0) return PERMISSION_DENIED;
diff --git a/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl b/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl
index 65bcd82..4c3955a 100644
--- a/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl
+++ b/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl
@@ -299,6 +299,8 @@
void setAssistantUid(int /* uid_t */ uid);
+ void setHotwordDetectionServiceUid(int /* uid_t */ uid);
+
void setA11yServicesUids(in int[] /* uid_t[] */ uids);
void setCurrentImeUid(int /* uid_t */ uid);
diff --git a/media/libaudioclient/include/media/AudioSystem.h b/media/libaudioclient/include/media/AudioSystem.h
index a9109c8..8ba23ad 100644
--- a/media/libaudioclient/include/media/AudioSystem.h
+++ b/media/libaudioclient/include/media/AudioSystem.h
@@ -429,6 +429,7 @@
static status_t setSurroundFormatEnabled(audio_format_t audioFormat, bool enabled);
static status_t setAssistantUid(uid_t uid);
+ static status_t setHotwordDetectionServiceUid(uid_t uid);
static status_t setA11yServicesUids(const std::vector<uid_t>& uids);
static status_t setCurrentImeUid(uid_t uid);