From 1a7070a6d4799e9319d118ecf0f225c54432d795 Mon Sep 17 00:00:00 2001 From: Wang ArvinX Date: Sat, 5 Oct 2019 23:57:40 +0530 Subject: [PATCH] Set Assistant UID of the current user. As per the new concurrent capture policy introduced in Android-10, on user 10 (Driver), when Voice recording is ongoing, if user says "Ok, Google", Audio policy shall forward the audio data to both record clients (Voice recorder and Assitant); However, Assistant gets silence, because Audio policy perceives Assitant as an ordinary record client. This is due to the wrong Assistant UID set in AudioSystem.java when user-10 is logged in. This commit ensures to set the right Assistant Uid as that of the current user logged-in. Change-Id: Id838a250c021cbd56fbe12dda9690d01cb9a9832 Tracked-On: Test: manual - Triggered assistant during Voice recorder Signed-off-by: Prashanth M, Shakthi Co-authored-by: Prashanth M, Shakthi --- .../core/java/com/android/server/audio/AudioService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index e26cbc4487f90..ba8389136911c 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1454,10 +1454,13 @@ public class AudioService extends IAudioService.Stub } if (!TextUtils.isEmpty(packageName)) { PackageManager pm = mContext.getPackageManager(); + ActivityManager am = + (ActivityManager) mContext.getSystemService(mContext.ACTIVITY_SERVICE); + if (pm.checkPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD, packageName) == PackageManager.PERMISSION_GRANTED) { try { - assistantUid = pm.getPackageUid(packageName, 0); + assistantUid = pm.getPackageUidAsUser(packageName, am.getCurrentUser()); } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "updateAssistantUId() could not find UID for package: " + packageName);