for some reason the surface is abandoned, a simple retry fixes the problem
privatesuspendfuncreateCaptureSession(
device:CameraDevice, targets:List<Surface>, handler:Handler? = null
): CameraCaptureSession?= suspendCoroutine { cont ->if (targets.any {
!it.isValid
}) {
// re-initialize the cameraLog.w("CamEngine", "Invalid surface targets, re-initializing camera")
cont.resume(null);
return@suspendCoroutine
}
// .....
session = createCaptureSession(camera, targets, cameraHandler)
if (session ==null) {
Log.i("CAMERA", "session is null")
return initializeCamera();
}
for some reason the surface is abandoned, a simple retry fixes the problem