summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marvin Ramin <marvinramin@google.com> 2024-01-31 17:20:47 +0100
committer Marvin Ramin <marvinramin@google.com> 2024-01-31 21:52:08 +0100
commit2f1c20236a39b43bfec0c3d90f02c90f25d475b7 (patch)
tree30d3469752ea86e80b76ba37a7d90ba302924420
parent79f9b82049aad192b7a32a15f245503577cf3357 (diff)
Make VirtualAudioDevice device-aware
Create and use the correct device context when creating VirtualAudioDevice. This helps ensure audio policies are registered with the correct context to facilitate device-aware permissions. Bug: 291737188 Test: n/a Change-Id: I19046277d8cc439beafa07e55e0f2ed88b86d157
-rw-r--r--AconfigFlags.bp1
-rw-r--r--core/java/android/companion/virtual/VirtualDeviceInternal.java7
-rw-r--r--core/java/android/companion/virtual/flags/flags.aconfig8
3 files changed, 15 insertions, 1 deletions
diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index 0ee7ace5f661..28bb35dcea55 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -23,6 +23,7 @@ aconfig_srcjars = [
":android.chre.flags-aconfig-java{.generated_srcjars}",
":android.companion.flags-aconfig-java{.generated_srcjars}",
":android.companion.virtual.flags-aconfig-java{.generated_srcjars}",
+ ":android.companion.virtualdevice.flags-aconfig-java{.generated_srcjars}",
":android.content.flags-aconfig-java{.generated_srcjars}",
":android.content.pm.flags-aconfig-java{.generated_srcjars}",
":android.content.res.flags-aconfig-java{.generated_srcjars}",
diff --git a/core/java/android/companion/virtual/VirtualDeviceInternal.java b/core/java/android/companion/virtual/VirtualDeviceInternal.java
index c1e443d1729d..39f6de75928a 100644
--- a/core/java/android/companion/virtual/VirtualDeviceInternal.java
+++ b/core/java/android/companion/virtual/VirtualDeviceInternal.java
@@ -26,6 +26,7 @@ import android.companion.virtual.audio.VirtualAudioDevice;
import android.companion.virtual.camera.VirtualCamera;
import android.companion.virtual.camera.VirtualCameraConfig;
import android.companion.virtual.sensor.VirtualSensor;
+import android.companion.virtualdevice.flags.Flags;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -351,7 +352,11 @@ public class VirtualDeviceInternal {
@Nullable Executor executor,
@Nullable VirtualAudioDevice.AudioConfigurationChangeCallback callback) {
if (mVirtualAudioDevice == null) {
- mVirtualAudioDevice = new VirtualAudioDevice(mContext, mVirtualDevice, display,
+ Context context = mContext;
+ if (Flags.deviceAwareRecordAudioPermission()) {
+ context = mContext.createDeviceContext(getDeviceId());
+ }
+ mVirtualAudioDevice = new VirtualAudioDevice(context, mVirtualDevice, display,
executor, callback, () -> mVirtualAudioDevice = null);
}
return mVirtualAudioDevice;
diff --git a/core/java/android/companion/virtual/flags/flags.aconfig b/core/java/android/companion/virtual/flags/flags.aconfig
index d26890faee79..ab8db6e59ddb 100644
--- a/core/java/android/companion/virtual/flags/flags.aconfig
+++ b/core/java/android/companion/virtual/flags/flags.aconfig
@@ -21,3 +21,11 @@ flag {
description: "Enable discovery of the Virtual Camera HAL without a VINTF entry"
bug: "305170199"
}
+
+flag {
+ namespace: "virtual_devices"
+ name: "device_aware_record_audio_permission"
+ description: "Enable device-aware RECORD_AUDIO permission"
+ bug: "291737188"
+ is_fixed_read_only: true
+}