Fixed
Status Update
Comments
tr...@google.com <tr...@google.com>
tr...@google.com <tr...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 1dda64a84e303abec7d0c95bfb7d0e5850888177
Author: husaynhakeem <husaynhakeem@google.com>
Date: Wed Jan 06 13:27:51 2021
Attempt to force open the camera on initial attempt
CameraX should attempt to open the camera on an initial attempt, this includes when first binding use cases to it, or whenever it starts again after having stopped, e.g. when attaching use cases to it after having detached all use cases.
Relnote: "CameraX now tries to force open a camera on the initial attempt, this may result in CameraX stealing the camera away from other camera clients when its app has a higher priority."
Doc: go/camerax-camera-opening
Bug: 175820568
Bug: 166666320
Test: Camera2CameraImplForceOpenCameraTest
Change-Id: Iab0692e958c0a39d9da61a43fdd534e01d32be79
A camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplForceOpenCameraTest.kt
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java
M camera/camera-core/src/main/java/androidx/camera/core/impl/CameraStateRegistry.java
https://android-review.googlesource.com/1555358
Branch: androidx-main
commit 1dda64a84e303abec7d0c95bfb7d0e5850888177
Author: husaynhakeem <husaynhakeem@google.com>
Date: Wed Jan 06 13:27:51 2021
Attempt to force open the camera on initial attempt
CameraX should attempt to open the camera on an initial attempt, this includes when first binding use cases to it, or whenever it starts again after having stopped, e.g. when attaching use cases to it after having detached all use cases.
Relnote: "CameraX now tries to force open a camera on the initial attempt, this may result in CameraX stealing the camera away from other camera clients when its app has a higher priority."
Doc: go/camerax-camera-opening
Bug: 175820568
Bug: 166666320
Test: Camera2CameraImplForceOpenCameraTest
Change-Id: Iab0692e958c0a39d9da61a43fdd534e01d32be79
A camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplForceOpenCameraTest.kt
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java
M camera/camera-core/src/main/java/androidx/camera/core/impl/CameraStateRegistry.java
Description
CameraX currently will only attempt to open a camera when it becomes available as reported by the Camera2 CameraManager.AvailabilityCallback . This means if another app does not close the camera when it goes into the background, CameraX will not be able to open the camera in the foreground.
On API 29, this causes the camera to stay in a
PENDING_OPEN
state for 30 seconds until the OS disconnects the camera from the background process. In modified OSes where this 30 second background restriction has been removed, this could cause the camera to never open, and there is no way to tell CameraX to attempt to steal the camera from another process.While we don't want CameraX to continually attempt to steal the camera from other processes or camera APIs within the same process, we still would like the camera to open, at least on the initial
bindToLifecycle()
call as long as the app is the current highest-priority camera client.