diff options
| author | 2020-06-10 18:17:42 +0000 | |
|---|---|---|
| committer | 2020-06-10 18:17:42 +0000 | |
| commit | 8aa60f69e9161c9df36b5dca620bda3876fcc4fe (patch) | |
| tree | 547c5074231f15da071db20f7fb1156792639495 | |
| parent | 8d4cef5e43465bc0dc5bbb236a91afa6a210ead5 (diff) | |
| parent | 92256e773a8ef1b86219aef2102a109c9056ac06 (diff) | |
Merge "Camera: clarify eviction behavior within the same application" into rvc-dev
| -rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 6bbc37a90fae..7f834afd7b30 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -586,13 +586,27 @@ public final class CameraManager { * priority when accessing the camera, and this method will succeed even if the camera device is * in use by another camera API client. Any lower-priority application that loses control of the * camera in this way will receive an - * {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected} callback.</p> + * {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected} callback. + * Opening the same camera ID twice in the same application will similarly cause the + * {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected} callback + * being fired for the {@link CameraDevice} from the first open call and all ongoing tasks + * being droppped.</p> * * <p>Once the camera is successfully opened, {@link CameraDevice.StateCallback#onOpened} will * be invoked with the newly opened {@link CameraDevice}. The camera device can then be set up * for operation by calling {@link CameraDevice#createCaptureSession} and * {@link CameraDevice#createCaptureRequest}</p> * + * <p>Before API level 30, when the application tries to open multiple {@link CameraDevice} of + * different IDs and the device does not support opening such combination, either the + * {@link #openCamera} will fail and throw a {@link CameraAccessException} or one or more of + * already opened {@link CameraDevice} will be disconnected and receive + * {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected} callback. Which + * behavior will happen depends on the device implementation and can vary on different devices. + * Starting in API level 30, if the device does not support the combination of cameras being + * opened, it is guaranteed the {@link #openCamera} call will fail and none of existing + * {@link CameraDevice} will be disconnected.</p> + * * <!-- * <p>Since the camera device will be opened asynchronously, any asynchronous operations done * on the returned CameraDevice instance will be queued up until the device startup has @@ -618,7 +632,8 @@ public final class CameraManager { * {@code null} to use the current thread's {@link android.os.Looper looper}. * * @throws CameraAccessException if the camera is disabled by device policy, - * has been disconnected, or is being used by a higher-priority camera API client. + * has been disconnected, is being used by a higher-priority camera API client, or the device + * has reached its maximal resource and cannot open this camera device. * * @throws IllegalArgumentException if cameraId or the callback was null, * or the cameraId does not match any currently or previously available |