Я работаю с Camera2 API для создания приложения камеры и хочу сделать снимки, сфокусированные на c области предварительного просмотра. Сейчас не нужно реагировать на сенсорные действия пользователя, просто нужно автоматически фокусировать указанную c область при нажатии кнопки захвата.
После некоторого поиска в Google я обнаружил, что должен использовать эти функции: CONTROL_AF_REGIONS , CONTROL_AF_MODE_AUTO Но я не знаю, куда я помещаю эти логи c в мой источник.
Я имею в виду Google Camera2Basi c образец, ниже приведено то, что я изучал о процессе захвата изображения до сих пор.
1.Preview - 2.Lock Focus - 3.Capture Picture от PreviewRequestBuilder
4.Снимок неподвижного изображения от CaptureBuilder
5. Разблокировать фокус от PreviewRequestBuilder
Я нашел есть 2 CaptureRequest.Builder
, и у них есть свои CaptureCallback
.
- PreviewRequestBuilder: используется для предварительного просмотра в TextureView
- CaptureBuilder: используется для захвата неподвижного изображения в ImageReader
Детали каждого потока * 1 036 *
Предварительный просмотр: этап отображения предварительного просмотра на экране перед захватом
- Переменная состояния:
STATE_PREVIEW
(начальное значение) - AF_TRIGGER:
IDLE
- AF_MODE:
CONTINUOUS_PICTURE
- AF_STATE: изначально
PASSIVE_SCAN
и изменение на PASSIVE_FOCUSED
setRepeatingRequest
вызывается для отображения непрерывного предварительного просмотра
Блокировка фокуса: когда пользователь нажимал кнопку захвата
- Переменная состояния:
STATE_WAITING_LOCK
- AF_TRIGGER:
START
- AF_MODE:
CONTINUOUS_PICTURE
- AF_STATE: все еще
PASSIVE_SCAN
в данный момент, но изменится после блокировки фокуса - Мне интересно, почему есть один
capture
вызов на этом этапе
Захват изображения: после блокировки фокуса
- Переменная состояния:
STATE_PICTURE_TAKEN
- AF_TRIGGER:
START
- AF_MODE:
CONTINUOUS_PICTURE
- AF_STATE:
FOCUSED_LOCKED
captureStillPicture
называется
Захват неподвижного изображения
- Переменная состояния:
STATE_PICTURE_TAKEN
- AF_TRIGGER:
IDLE
- AF_MODE:
CONTINUOUS_PICTURE
- AF_STATE: как может быть вызвано
FOCUSED_LOCKED
без AF_TRIGGER_START
capture
чтобы сделать снимок
Разблокировать фокус: после захвата вернуться к предварительному просмотру
- Переменная состояния:
STATE_PREVIEW
- AF_TRIGGER:
CANCEL
- AF_MODE:
CONTINUOUS_PICTURE
- AF_STATE:
PASSIVE_FOCUSED
Лучше для меня, если вы предложите на каком этапе или укажите мой фокус логи c должно быть реализовано. Или любые комментарии или советы о моем недоразумении действительно приветствуются!
С уважением, Ли