fix IllegalStateException crash when camera device closes during focus

This commit is contained in:
2026-01-30 15:15:50 -08:00
parent 31e7b8bd35
commit 2d570c9af2

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,8 +263,14 @@ 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...")
repeatingRequest.createCaptureRequest(device, deviceDetails, outputs).also { request -> try {
session.setRepeatingRequest(request.build(), null, null) 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}")
} }
} }
} }