handle torch state in video capture

- set initial torch state to off
- enable/disable the torch when flash mode is on/off in video mode
This commit is contained in:
darthpaul 2022-06-26 11:12:43 +01:00
parent 79f9267383
commit b10d8639fd
2 changed files with 17 additions and 8 deletions

View File

@ -236,7 +236,7 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
mFadeHandler = Handler() mFadeHandler = Handler()
setupPreviewImage(true) setupPreviewImage(true)
val initialFlashlightState = config.flashlightState val initialFlashlightState = FLASH_OFF
mPreview!!.setFlashlightState(initialFlashlightState) mPreview!!.setFlashlightState(initialFlashlightState)
updateFlashlightState(initialFlashlightState) updateFlashlightState(initialFlashlightState)
} }

View File

@ -122,7 +122,7 @@ class CameraXPreview(
private var currentRecording: Recording? = null private var currentRecording: Recording? = null
private var recordingState: VideoRecordEvent? = null private var recordingState: VideoRecordEvent? = null
private var cameraSelector = config.lastUsedCameraLens.toCameraSelector() private var cameraSelector = config.lastUsedCameraLens.toCameraSelector()
private var flashMode = config.flashlightState.toCameraXFlashMode() private var flashMode = FLASH_MODE_OFF
private var isPhotoCapture = config.initPhotoMode private var isPhotoCapture = config.initPhotoMode
init { init {
@ -357,13 +357,22 @@ class CameraXPreview(
} }
override fun toggleFlashlight() { override fun toggleFlashlight() {
val newFlashMode = when (flashMode) { val newFlashMode = if (isPhotoCapture) {
FLASH_MODE_OFF -> FLASH_MODE_ON when (flashMode) {
FLASH_MODE_ON -> FLASH_MODE_AUTO FLASH_MODE_OFF -> FLASH_MODE_ON
FLASH_MODE_AUTO -> FLASH_MODE_OFF FLASH_MODE_ON -> FLASH_MODE_AUTO
else -> throw IllegalArgumentException("Unknown mode: $flashMode") FLASH_MODE_AUTO -> FLASH_MODE_OFF
else -> throw IllegalArgumentException("Unknown mode: $flashMode")
}
} else {
when (flashMode) {
FLASH_MODE_OFF -> FLASH_MODE_ON
FLASH_MODE_ON -> FLASH_MODE_OFF
else -> throw IllegalArgumentException("Unknown mode: $flashMode")
}.also {
camera?.cameraControl?.enableTorch(it == FLASH_MODE_ON)
}
} }
flashMode = newFlashMode flashMode = newFlashMode
imageCapture?.flashMode = newFlashMode imageCapture?.flashMode = newFlashMode
val appFlashMode = flashMode.toAppFlashMode() val appFlashMode = flashMode.toAppFlashMode()