|
|
|
|
@@ -235,10 +235,19 @@ class PersistentCameraCaptureSession(private val cameraManager: CameraManager, p
|
|
|
|
|
|
|
|
|
|
// 1. Run a precapture sequence for AF, AE and AWB.
|
|
|
|
|
focusJob = coroutineScope.launch {
|
|
|
|
|
val request = repeatingRequest.createCaptureRequest(device, deviceDetails, outputs)
|
|
|
|
|
val options =
|
|
|
|
|
PrecaptureOptions(listOf(PrecaptureTrigger.AF, PrecaptureTrigger.AE), Flash.OFF, listOf(point), false, FOCUS_RESET_TIMEOUT)
|
|
|
|
|
session.precapture(request, deviceDetails, options)
|
|
|
|
|
try {
|
|
|
|
|
val request = repeatingRequest.createCaptureRequest(device, deviceDetails, outputs)
|
|
|
|
|
val options =
|
|
|
|
|
PrecaptureOptions(listOf(PrecaptureTrigger.AF, PrecaptureTrigger.AE), Flash.OFF, listOf(point), false, FOCUS_RESET_TIMEOUT)
|
|
|
|
|
session.precapture(request, deviceDetails, options)
|
|
|
|
|
} 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()
|
|
|
|
|
|
|
|
|
|
@@ -254,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}")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|