Fix IllegalStateException crash when camera device closes during focus #22

Merged
loewy merged 1 commits from loewy/fix-camera-device-closed-crash into main 2026-01-30 23:24:10 +00:00

View File

@@ -243,6 +243,10 @@ class PersistentCameraCaptureSession(private val cameraManager: CameraManager, p
} catch (e: CaptureTimedOutError) { } catch (e: CaptureTimedOutError) {
// Focus timed out - this is non-fatal, just log and continue // Focus timed out - this is non-fatal, just log and continue
Log.w(TAG, "Focus timed out at point $point, continuing without focus lock") 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() focusJob?.join()
@@ -259,9 +263,15 @@ class PersistentCameraCaptureSession(private val cameraManager: CameraManager, p
return@launch return@launch
} }
Log.i(TAG, "Resetting focus to auto-focus...") Log.i(TAG, "Resetting focus to auto-focus...")
try {
repeatingRequest.createCaptureRequest(device, deviceDetails, outputs).also { request -> repeatingRequest.createCaptureRequest(device, deviceDetails, outputs).also { request ->
session.setRepeatingRequest(request.build(), null, null) 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}")
}
} }
} }
} }