Ръчен фокус със светкавица с помощта на Android камера2

Как да извършите ръчен (докосване) фокус със светкавица с помощта на Android camera2 api?

Настройките ми за captureRequest са: 1. type - TEMPLATE_PREVIEW 2. CONTROL_AE_MODE - CONTROL_AE_MODE_OFF 3. FLASH_MODE - FLASH_MODE_SINGLE 4. CONTROL_AF_TRIGGER - CONTROL_AF_TRIGGER_START

употреба:

CaptureSession.capture(captureRequest.build(), captureCallback, null);

Резултат: Камерата се фокусира, ако има достатъчно светлина. В противен случай светкавицата мига много бързо и фокусът не успява.


person Maxim Metelskiy    schedule 23.12.2014    source източник
comment
Не е ясно какво искате да направите. Използвате ли ръчна експозиция, но искате да включите светкавицата за фокусиране или просто искате светкавицата да се задейства за последното заснемане? Или нещо съвсем друго? В момента едновременно пускате една светкавица и се опитвате да задействате AF с една заявка, което едва ли ще проработи.   -  person Eddy Talvala    schedule 08.01.2015
comment
Искам да направя светкавица, задействана за фокусиране и за окончателно заснемане. Като светкавица в режим на приложението за камера на Google   -  person Maxim Metelskiy    schedule 09.01.2015
comment
Ако използвате AE_MODE_OFF, ще трябва ръчно да управлявате светкавицата, което в момента е възможно само по ограничен начин. Ще трябва да превключите светкавицата на TORCH, преди да започнете да фокусирате, и след това да я зададете на SINGLE за вашето заснемане с висока разделителна способност.   -  person Eddy Talvala    schedule 10.01.2015
comment
Благодаря ти, @Eddy! Мислех по този начин. Но изглежда като хак. Наистина ли винаги включената Flash е толкова сложна функция с използването на API на camera2?   -  person Maxim Metelskiy    schedule 11.01.2015


Отговори (1)


можете да опитате да извършите ръчно (докосване) фокусиране със светкавица по този начин:

mPreviewBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH);

когато използвате TRIGGER, използвайте както AE, така и AF:

mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL);
mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);
mPreviewBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CameraMetadata.CONTROL_AE_PRECAPTURE_TRIGGER_START);

и тогава:

mCameraCaptureSession.setRepeatingRequest(mPreviewBuilder.build(), mPreviewSessionCallback, mHandler);
person yydcdut    schedule 23.12.2014
comment
Благодаря за отговора! Забравих да спомена, че винаги ми трябва светкавица, а не автоматична. И не съм сигурен за setRepeatingRequest. Сензорният фокус е само едно действие. И последен въпрос: мога ли да управлявам работата на флаш чрез параметър FLASH_MODE, а не чрез CONTROL_AE_MODE? - person Maxim Metelskiy; 23.12.2014
comment
FLASH винаги ВКЛЮЧЕН: mBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_TORCH); - person yydcdut; 24.12.2014
comment
setRepeatingRequest означава изискване за безкрайно повтарящо се заснемане на изображения от тази сесия за заснемане“ в SDK документ. - person yydcdut; 24.12.2014
comment
Не ми трябва фенерче. Трябва ми винаги включена светкавица като режим на камерата. Това означава, че светкавицата трябва да се задейства само за всяко заснемане и всяко фокусиране. Но това не трябва да зависи от светлинните условия. - person Maxim Metelskiy; 25.12.2014
comment
Опитах се да използвам TEMPLATE_MANUAL. Проблемът ми е, че не мога да разбера разликата между CONTROL_AE_MODE и FLASH_MODE. Какви са разликите между тях? За какво отговаря FLASH_MODE? - person Maxim Metelskiy; 25.12.2014
comment
mPreviewBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH); - person yydcdut; 04.01.2015