Merge "Allow for camera streaming to virtual devices" into main
diff --git a/core/java/android/companion/virtual/flags.aconfig b/core/java/android/companion/virtual/flags.aconfig
index 55ae8ee..f380963 100644
--- a/core/java/android/companion/virtual/flags.aconfig
+++ b/core/java/android/companion/virtual/flags.aconfig
@@ -37,10 +37,17 @@
}
flag {
- name: "virtual_camera"
- namespace: "virtual_devices"
- description: "Enable Virtual Camera"
- bug: "270352264"
+ name: "virtual_camera"
+ namespace: "virtual_devices"
+ description: "Enable Virtual Camera"
+ bug: "270352264"
+}
+
+flag {
+ name: "stream_camera"
+ namespace: "virtual_devices"
+ description: "Enable streaming camera to Virtual Devices"
+ bug: "291740640"
}
flag {
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
index 70c449f..a036383 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -326,7 +326,9 @@
mSensorController = new SensorController(this, mDeviceId,
mParams.getVirtualSensorCallback(), mParams.getVirtualSensorConfigs());
mCameraAccessController = cameraAccessController;
- mCameraAccessController.startObservingIfNeeded();
+ if (mCameraAccessController != null) {
+ mCameraAccessController.startObservingIfNeeded();
+ }
if (!Flags.streamPermissions()) {
mPermissionDialogComponent = getPermissionDialogComponent();
} else {
@@ -566,7 +568,9 @@
}
mAppToken.unlinkToDeath(this, 0);
- mCameraAccessController.stopObservingIfNeeded();
+ if (mCameraAccessController != null) {
+ mCameraAccessController.stopObservingIfNeeded();
+ }
mInputController.close();
mSensorController.close();
@@ -586,7 +590,9 @@
@Override
@RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
public void onRunningAppsChanged(ArraySet<Integer> runningUids) {
- mCameraAccessController.blockCameraAccessIfNeeded(runningUids);
+ if (mCameraAccessController != null) {
+ mCameraAccessController.blockCameraAccessIfNeeded(runningUids);
+ }
mRunningAppsChangedCallback.accept(runningUids);
}
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
index 3031a84..959f69e 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -187,6 +187,9 @@
}
CameraAccessController getCameraAccessController(UserHandle userHandle) {
+ if (Flags.streamCamera()) {
+ return null;
+ }
int userId = userHandle.getIdentifier();
synchronized (mVirtualDeviceManagerLock) {
for (int i = 0; i < mVirtualDevices.size(); i++) {