diff --git a/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt b/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt index 7c78c06..2dd2762 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt @@ -243,6 +243,10 @@ class PersistentCameraCaptureSession(private val cameraManager: CameraManager, p } catch (e: CaptureTimedOutError) { // Focus timed out - this is non-fatal, just log and continue Log.w(TAG, "Focus timed out at point $point, continuing without focus lock") + } catch (e: IllegalStateException) { + Log.w(TAG, "Focus failed, camera device was already closed: ${e.message}") + } catch (e: CameraAccessException) { + Log.w(TAG, "Focus failed, camera not accessible: ${e.message}") } } focusJob?.join() @@ -259,8 +263,14 @@ class PersistentCameraCaptureSession(private val cameraManager: CameraManager, p return@launch } Log.i(TAG, "Resetting focus to auto-focus...") - repeatingRequest.createCaptureRequest(device, deviceDetails, outputs).also { request -> - session.setRepeatingRequest(request.build(), null, null) + try { + repeatingRequest.createCaptureRequest(device, deviceDetails, outputs).also { request -> + session.setRepeatingRequest(request.build(), null, null) + } + } catch (e: IllegalStateException) { + Log.w(TAG, "Failed to reset focus, camera device was already closed: ${e.message}") + } catch (e: CameraAccessException) { + Log.w(TAG, "Failed to reset focus, camera not accessible: ${e.message}") } } }