audio policy: fix concurrent capture policy for virtual sources

Do not consider virtual sources when determining
lastest active capture client. As a virtual source
capturing does not silence other captures, it should not
prevent another client from being selected as the latest active.

Bug: 160820363
Bug: 161725794
Test: Verify capture with Solotester in background and projecting to
DHU.

Change-Id: I2f28026dbecfa72b5d44f52b95538fc13996627b
Merged-In: I2f28026dbecfa72b5d44f52b95538fc13996627b
(cherry picked from commit 14a88630162b96d0d52354261ee09216c0bed0d7)
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index e847f9f..a6e8989 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -488,9 +488,9 @@
         }
 
         bool isAccessibility = mUidPolicy->isA11yUid(current->uid);
-        // Clients capturing for Accessibility services are not considered
+        // Clients capturing for Accessibility services or virtual sources are not considered
         // for top or latest active to avoid masking regular clients started before
-        if (!isAccessibility) {
+        if (!isAccessibility && !isVirtualSource(current->attributes.source)) {
             bool isAssistant = mUidPolicy->isAssistantUid(current->uid);
             bool isPrivacySensitive =
                     (current->attributes.flags & AUDIO_FLAG_CAPTURE_PRIVATE) != 0;