2016-10-04 2 views
4

Пытается использовать кран до focus, используя camera2api.Камера для Android2, чтобы сфокусироваться

CaptureRequest.Builder afBuilder = mPreviewBuilder; 

    Rect newRect=new Rect(0,0,200,200); 
    MeteringRectangle meteringRectangle=new MeteringRectangle(newRect,METERING_WEIGHT_DONT_CARE); 

    MeteringRectangle[] areas = afBuilder.get(CaptureRequest.CONTROL_AF_REGIONS); 

    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_REGIONS,areas); 
    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_AUTO); 
    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START); 
    mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), mCaptureCallback, mBackgroundHandler); 

В моем перезвонить я постоянно застревать в ACTIVE_SCAN состоянии и иногда переходит в FOCUS_NOT_LOCKED состояние. Я никогда не могу попасть в состояние FOCUS_LOCKED, и просмотр никогда не будет сфокусирован.

Использование Samsung Galaxy Примечание 3.

+0

Я получаю 'java.lang.IllegalArgumentException: rect.left должен быть неотрицательным'. не могли бы вы направить меня! –

+0

Возможно, стоит начать новый вопрос по этому вопросу. У вас есть дополнительная информация по этой проблеме, пример кода и т. Д.? –

+0

Решено использовать 'SENSOR_INFO_ACTIVE_ARRAY_SIZE'. У меня был смешанный старый код камеры с новым 'Camera2'' MeteringRectangle' –

ответ

2

С одной стороны, вы на самом деле не устанавливая область AF - вы просто повторно использовать область по умолчанию от mPreviewBuilder.

Во-вторых, даже если вы установили область в [(0,0,200,200), METERING_WEIGHT_DONT_CARE], это верхний левый угол изображения и, вероятно, не то, что вы хотите?

В-третьих, и, самое главное, вы настраиваете триггер автофокусировки. Это означает, что на каждом кадре вы попросите камеру перезапустить фокусировку. Так что это никогда не закончится, потому что вы никогда этого не допускаете.

Вам необходимо установить AF_TRIGGER в START только для одного захвата; вы все равно захотите настроить AF_REGION и AF_MODE на повторение запроса, чтобы он был согласован с помощью всего сканирования автофокусировки, которое вы запускаете.

+0

Спасибо. Да, прямоугольники были скорее примером для этого поста. Я попробую сортировать триггер, но это для записи видео-приложения, чтобы поместить его в какой-то контекст. –

+0

Спасибо, что это была повторяющаяся проблема с триггером! –

+0

@YRfreeDevelopers вы могли бы любезно обновить OP кодом исправления? – ryderd

Смежные вопросы