mirror of
https://github.com/SimpleMobileTools/Simple-Camera.git
synced 2025-06-27 09:02:59 +02:00
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:
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user