fix inconsistencies when user switches camera mode fast

- debounce switching by 300ms when toggling between video/photo capture
- setCameraAvailable only when there is no error and the camera state is Type.OPEN
This commit is contained in:
darthpaul
2022-11-11 00:44:53 +00:00
parent 7b7838331e
commit c858e5b908
2 changed files with 29 additions and 15 deletions

View File

@ -244,20 +244,23 @@ class CameraXPreview(
listener.onChangeCamera(isFrontCameraInUse())
camera?.cameraInfo?.cameraState?.observe(activity) { cameraState ->
when (cameraState.type) {
CameraState.Type.OPEN,
CameraState.Type.OPENING -> {
listener.setHasFrontAndBackCamera(hasFrontCamera() && hasBackCamera())
listener.setCameraAvailable(true)
}
CameraState.Type.PENDING_OPEN,
CameraState.Type.CLOSING,
CameraState.Type.CLOSED -> {
listener.setCameraAvailable(false)
if (cameraState.error == null) {
when (cameraState.type) {
CameraState.Type.OPEN-> {
listener.setHasFrontAndBackCamera(hasFrontCamera() && hasBackCamera())
listener.setCameraAvailable(true)
}
CameraState.Type.OPENING,
CameraState.Type.PENDING_OPEN,
CameraState.Type.CLOSING,
CameraState.Type.CLOSED -> {
listener.setCameraAvailable(false)
}
}
} else {
listener.setCameraAvailable(false)
cameraErrorHandler.handleCameraError(cameraState.error)
}
cameraErrorHandler.handleCameraError(cameraState?.error)
}
}