@Ening_apps

Как включить вспышку в Camera2 API без создания новой сессии?

Всем доброго времени суток. Я работаю над приложением, основанном на Camera 2 API, и я хочу добавить возможность включать/выключать вспышку в этом приложении.

Я знаю, что это можно сделать так:
mPreviewBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE);
mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), null, null);


Но насколько я понимаю, создание новой сессии - это затратная процедура и плюс я не хочу потерять кадры от камеры.
Скажите, пожалуйста, есть ли способ включить вспышку без создания новой сессии? Интересно, как это сделано в стандартных приложениях, может есть какой-то опенсорсный код (нормально работающий) ?
Или я ошибаюсь, и создания сессии особо не требует ресурсов и т.д.?

Всем заранее большое спасибо за ответы!
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 1
@acb99
Есть вариант включать или отключать вспышку следующим образом:
camera?.cameraControl?.enableTorch(isFlashEnabled)
где camera - это объект Camera, а isFlashEnabled - это булевое значение (включить или отключить камеру)
Написано на Kotlin. Более подробно можно почитать в документации про CameraControl: https://developer.android.com/reference/androidx/c...
Данный вариант будет включать или отключать фонарик на телефоне, если вы хотите чтобы была вспышка непосредственно при создании фото, то это можно делать через ImageCapture:
imageCapture?.flashMode = YOUR_FLASH_MODE
Виды флагов YOUR_FLASH_MODE:
- FLASH_MODE_ON - фото со вспышкой
- FLASH_MODE_OFF - фото без вспышки
- FLASH_MODE_AUTO - автоматическая вспышка
Более подробно, опять же, в документации: https://developer.android.com/training/camerax/tak...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы