#android #android-camerax
#Android #android-camerax
Вопрос:
Я пытаюсь изменить режим flash, как показано ниже
when {
ImageCapture.FLASH_MODE_AUTO == imageCapture!!.flashMode -> {
imageCaptureFlashMode = ImageCapture.FLASH_MODE_ON
idFlashControl.setImageResource(R.drawable.ic_flash_on)
startCamera()
}
...
...
в startCamera () Я связываю варианты использования, как показано ниже
cameraProvider?.unbindAll()
val cameraX = cameraProvider?.bindToLifecycle(
this, cameraSelector, preview, imageCapture
)
отмена привязки — это воссоздание поверхности. Итак, когда я меняю режим flash, экран становится черным и возвращается к жизни, как создается новое действие.
Как этого избежать?
Ответ №1:
Вам не нужно отменять / повторно привязывать варианты использования при изменении режима flash для варианта использования для захвата изображения. Когда вы устанавливаете режим flash FLASH_MODE_ON
, последующие запросы на захват будут использовать flash (при условии, что устройство поддерживает flash).
// Assuming the image capture has already been bound
imageCapture.flashMode = ImageCapture.FLASH_MODE_ON
// Assuming the flash unit is available, this capture request will use the flash
imageCapture.takePicture(...)
Комментарии:
1. У меня похожая проблема (воссозданная поверхность), но с режимом фокусировки. Чтобы установить фокус на бесконечность, я использую
Camera2Interop.Extender
и вызываю setCaptureRequestOption в previewBuilder. Если позже я захочу снова использовать автофокусировку, мне нужно воссоздать previewBuilder и повторно привязать вариант использования, который заставляет поверхность мигать. Есть ли решение для моего варианта использования?