diff options
| author | 2024-01-31 17:20:47 +0100 | |
|---|---|---|
| committer | 2024-01-31 21:52:08 +0100 | |
| commit | 2f1c20236a39b43bfec0c3d90f02c90f25d475b7 (patch) | |
| tree | 30d3469752ea86e80b76ba37a7d90ba302924420 | |
| parent | 79f9b82049aad192b7a32a15f245503577cf3357 (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.bp | 1 | ||||
| -rw-r--r-- | core/java/android/companion/virtual/VirtualDeviceInternal.java | 7 | ||||
| -rw-r--r-- | core/java/android/companion/virtual/flags/flags.aconfig | 8 |
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 +} |