2016-10-04 2 views
4

camera2api을 사용하여 focus에 탭을 구현하려고합니다. 내 전화에서안드로이드 카메라 2 초점 맞추기

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 상태에 빠진 것처럼 보이지 않으며 미리보기는 결코 집중되지 않습니다. 방금 mPreviewBuilder에서 기본 영역을 재사용하고 - 삼성 갤럭시 노트 하나 3.

+0

나는'java.lang.IllegalArgumentException : rect.left가 음수가 아니어야한다 '를 가져왔다. 제발 날 안내해 주 시겠어요! –

+0

이것에 대한 새로운 질문을 시작할 가치가 있습니다. 이슈, 코드 샘플 등에 관한 더 자세한 정보가 있습니까? –

+0

'SENSOR_INFO_ACTIVE_ARRAY_SIZE'를 사용하여 해결되었습니다. 나는 오래된 카메라 코드를 새로운'Camera2'' MeteringRectangle'와 혼합했다. –

답변

2

, 당신은 실제로 AF 영역을 설정하지 않을 사용

.

두 번째로, 영역을 [(0, 200,200), METERING_WEIGHT_DONT_CARE]로 설정 했더라도 이미지의 왼쪽 위 모서리이고 원하는 것이 아닐 수도 있습니다.

셋째, 가장 중요한 것은 AF 트리거가 반복되도록 설정하는 것입니다. 즉, 모든 프레임에서 카메라가 초점을 다시 시작하도록 요청하는 것입니다. 결코 끝내지 않을 것입니다.

단일 캡처의 경우 AF_TRIGGER를 START로 설정해야합니다. AF_REGION과 AF_MODE를 반복 요청에 설정하여 시작하는 전체 AF 스캔을 통해 일관성있게 유지하려고합니다.

+0

고마워. 예, 직사각형은이 게시물의 예입니다. 나는 방아쇠를 정렬하려고 시도 할 것이다, 이것은 단지 약간의 문맥에 넣기 위해 비디오 애플 리케이션을 녹화하기위한 것이다. –

+0

반복되는 방아쇠 문제였습니다. –

+0

@YRfreeDevelopers 수정 코드를 사용하여 OP를 친절하게 업데이트 할 수 있습니까? – ryderd