Revert "audio policy: concurrent capture"
This reverts commit 4c1ef4b64d113be6ee1106375bd10cdc643e80d8.
Reason for revert: b/120588242
Bug: 120588242
Change-Id: Iac41f371cb739c54d5ce519232688bebe2285c72
Test: Launch QSB and capture from mic icon
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index 2893872..78dbf5f 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -348,91 +348,11 @@
void AudioPolicyService::updateUidStates_l()
{
-// Go over all active clients and allow capture (does not force silence) in the
-// following cases:
-// - The client is the assistant AND
-// an accessibility service is on TOP AND the source is VOICE_RECOGNITION or HOTWORD
-// OR
-// is on TOP AND uses VOICE_RECOGNITION
-// OR uses HOTWORD AND there is no privacy sensitive active capture
-// - The client is an accessibility service AND
-// is on TOP AND the source is VOICE_RECOGNITION or HOTWORD
-// - Any other client AND
-// The assistant is not on TOP AND
-// is on TOP OR latest started AND
-// there is no privacy sensitive active capture
-//TODO: mamanage pre processing effects according to use case priority
-
- sp<AudioRecordClient> topActive;
- sp<AudioRecordClient> latestActive;
- nsecs_t latestStartNs = 0;
- sp<AudioRecordClient> latestSensitiveActive;
- nsecs_t latestSensitiveStartNs = 0;
- bool isA11yOnTop = mUidPolicy->isA11yOnTop();
- bool isAssistantOnTop = false;
- bool isSensitiveActive = false;
-
+ //TODO: implement real concurrent capture policy: for now just apply each app state directly
for (size_t i =0; i < mAudioRecordClients.size(); i++) {
sp<AudioRecordClient> current = mAudioRecordClients[i];
if (!current->active) continue;
- if (isPrivacySensitive(current->attributes.source)) {
- if (current->startTimeNs > latestSensitiveStartNs) {
- latestSensitiveActive = current;
- latestSensitiveStartNs = current->startTimeNs;
- }
- isSensitiveActive = true;
- }
- if (mUidPolicy->getUidState(current->uid) == ActivityManager::PROCESS_STATE_TOP) {
- topActive = current;
- latestActive = nullptr;
- if (mUidPolicy->isAssistantUid(current->uid)) {
- isAssistantOnTop = true;
- }
- }
- if (current->startTimeNs > latestStartNs) {
- latestActive = current;
- latestStartNs = current->startTimeNs;
- }
- }
-
- if (topActive == nullptr && latestActive == nullptr) {
- return;
- }
-
- for (size_t i =0; i < mAudioRecordClients.size(); i++) {
- sp<AudioRecordClient> current = mAudioRecordClients[i];
- if (!current->active) continue;
-
- audio_source_t source = current->attributes.source;
- bool isOnTop = mUidPolicy->getUidState(current->uid) == ActivityManager::PROCESS_STATE_TOP;
- bool isLatest = current == latestActive;
- bool isLatestSensitive = current == latestSensitiveActive;
- bool forceIdle = true;
- if (mUidPolicy->isAssistantUid(current->uid)) {
- if (isA11yOnTop) {
- if (source == AUDIO_SOURCE_HOTWORD || source == AUDIO_SOURCE_VOICE_RECOGNITION) {
- forceIdle = false;
- }
- } else {
- if (((isOnTop && source == AUDIO_SOURCE_VOICE_RECOGNITION) ||
- source == AUDIO_SOURCE_HOTWORD) && !isSensitiveActive) {
- forceIdle = false;
- }
- }
- } else if (mUidPolicy->isA11yUid(current->uid)) {
- if (isOnTop &&
- (source == AUDIO_SOURCE_VOICE_RECOGNITION || source == AUDIO_SOURCE_HOTWORD)) {
- forceIdle = false;
- }
- } else {
- if (!isAssistantOnTop && (isOnTop || (topActive == nullptr && isLatest)) &&
- (!isSensitiveActive || isLatestSensitive)) {
- forceIdle = false;
- }
- }
- setAppState_l(current->uid,
- forceIdle ? APP_STATE_IDLE :
- apmStatFromAmState(mUidPolicy->getUidState(current->uid)));
+ setAppState_l(current->uid, apmStatFromAmState(mUidPolicy->getUidState(current->uid)));
}
}
@@ -449,22 +369,6 @@
return APP_STATE_FOREGROUND;
}
-/* static */
-bool AudioPolicyService::isPrivacySensitive(audio_source_t source)
-{
- switch (source) {
- case AUDIO_SOURCE_VOICE_UPLINK:
- case AUDIO_SOURCE_VOICE_DOWNLINK:
- case AUDIO_SOURCE_VOICE_CALL:
- case AUDIO_SOURCE_CAMCORDER:
- case AUDIO_SOURCE_VOICE_COMMUNICATION:
- return true;
- default:
- break;
- }
- return false;
-}
-
void AudioPolicyService::setAppState_l(uid_t uid, app_state_t state)
{
AutoCallerClear acc;
@@ -644,7 +548,6 @@
mObserverRegistered = true;
} else {
ALOGE("UidPolicy::registerSelf linkToDeath failed: %d", res);
-
am.unregisterUidObserver(this);
}
}
@@ -747,7 +650,6 @@
mCachedUids.insert(std::pair<uid_t,
std::pair<bool, int>>(uid, std::pair<bool, int>(active, state)));
}
-
return state;
}
@@ -828,21 +730,6 @@
}
}
-bool AudioPolicyService::UidPolicy::isA11yOnTop() {
- for (const auto &uid : mCachedUids) {
- std::vector<uid_t>::iterator it = find(mA11yUids.begin(), mA11yUids.end(), uid.first);
- if (it == mA11yUids.end()) {
- continue;
- }
- if (uid.second.second == ActivityManager::PROCESS_STATE_TOP ||
- uid.second.second == ActivityManager::PROCESS_STATE_FOREGROUND_SERVICE ||
- uid.second.second == ActivityManager::PROCESS_STATE_BOUND_FOREGROUND_SERVICE) {
- return true;
- }
- }
- return false;
-}
-
bool AudioPolicyService::UidPolicy::isA11yUid(uid_t uid)
{
std::vector<uid_t>::iterator it = find(mA11yUids.begin(), mA11yUids.end(), uid);