아래의 코드 단편은 고정 초점 길이의 미리보기에 대한 CaptureRequest를 만들지 못했습니다. 미리보기에 표시된 이미지는 TotalCaptureRequest의 보고서에 다르게 표시되어 있더라도 항상 무한대로 초점을 맞추고 있습니다. [코드] CamId : 0 LensFace : BACK HwdSupportLevel : FULL SensorOrientation고정 초점 길이의 미리보기를 만드는 데 필요한 최소 CaptureRequest는 무엇입니까
이mPreviewBuilder = mCameraDevice.createCaptureRequest(SCameraDevice.TEMPLATE_PREVIEW);
mPreviewBuilder.set(SCaptureRequest.LENS_FOCUS_DISTANCE, 9.5f);
mPreviewBuilder.set(SCaptureRequest.CONTROL_AF_MODE, SCaptureRequest.CONTROL_AF_MODE_OFF);
내 장치가 다시 카메라에 대해 다음 속성을보고하는 삼성 갤럭시 S7입니다 : 여기
는 코드입니다 : 90 LensCalibration는 : CALIBRATED LensMinFocusDist : 10.0 [/ 코드] 여기는 onCaptureComplete()
callback: AF_STATE: 0 Lens Focus Distance: 9.555555 LENS_STATE: 0 HAS FOCUS RANGE: true Focus Range Min: 9.762765, Max: 9.348346
동안 캡처 내 로그입니다 나는 일반 된 안드로이드 카메라 2 API를뿐만 아니라 삼성 SDK와 함께이 시도했다 6,
은 (여기 : http://developer.samsung.com/galaxy/camera)
삼성의 자신의 카메라 응용 프로그램뿐만 아니라 카메라 FV-5 지원 같은 문제없이이 기능을 제공합니다.
어떻게 작동합니까?
상황에 대한 몇 가지 더 많은 코드를 추가
/**
* Start the camera preview.
*/
private void startPreview() {
if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {
return;
}
try {
closePreviewSession();
SurfaceTexture texture = mTextureView.getSurfaceTexture();
assert texture != null;
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
mPreviewBuilder = mCameraDevice.createCaptureRequest(SCameraDevice.TEMPLATE_PREVIEW);
//mPreviewBuilder.set(SCaptureRequest.CONTROL_CAPTURE_INTENT, SCaptureRequest.CONTROL_CAPTURE_INTENT_MANUAL);
//mPreviewBuilder.set(SCaptureRequest.CONTROL_MODE, SCaptureRequest.CONTROL_MODE_OFF);
mPreviewBuilder.set(SCaptureRequest.CONTROL_AF_MODE, SCaptureRequest.CONTROL_AF_MODE_OFF);
mPreviewBuilder.set(SCaptureRequest.CONTROL_AE_MODE, SCaptureRequest.CONTROL_AE_MODE_ON);
mPreviewBuilder.set(SCaptureRequest.LENS_FOCUS_DISTANCE, 9.5f);
Surface previewSurface = new Surface(texture);
mPreviewBuilder.addTarget(previewSurface);
mCameraDevice.createCaptureSession(Arrays.asList(previewSurface), new SCameraCaptureSession.StateCallback() {
@Override
public void onConfigured(SCameraCaptureSession cameraCaptureSession) {
mPreviewSession = cameraCaptureSession;
updatePreview();
}
@Override
public void onConfigureFailed(SCameraCaptureSession cameraCaptureSession) {
Toast.makeText(getApplicationContext(),"Failed", Toast.LENGTH_SHORT).show();
}
}, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
/**
* Update the camera preview. {@link #startPreview()} needs to be called in advance.
*/
private void updatePreview() {
if (null == mCameraDevice) {
return;
}
try {
setUpCaptureRequestBuilder(mPreviewBuilder);
HandlerThread thread = new HandlerThread("CameraPreview");
thread.start();
mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), mCaptureCallBack, mBackgroundHandler);
Log.i(TAG, "New Session values, control mode " + mPreviewBuilder.get(SCaptureRequest.CONTROL_MODE) +
", AF mode: " + mPreviewBuilder.get(SCaptureRequest.CONTROL_AF_MODE) +
", Focus value; " + +mPreviewBuilder.get(SCaptureRequest.LENS_FOCUS_DISTANCE));
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Durdins 여전히 작동하지 않습니다. 다음은 로그의 값입니다. 새 세션 값, 제어 모드 1, AF 모드 : 0, 초점 값; 9.5 – unshul
은 captureRequest에 올바른 값이 있음을 의미합니다. 미리보기를 업데이트하고 있습니까? 새 값을 설정 한 후 CaptureSession에 대해 새 setRepeatingRequest를 수행하고 새 요청 작성자 값으로 미리보기를 업데이트해야합니다. –
@Durdins : 제안과 요청을 설정하고 있습니다 (원본 게시물을 다음과 같이 업데이트했습니다. 더 많은 컨텍스트) 그러나 포커스 값은 여전히 미리보기에 영향을 미치지 않는 것 같습니다. – unshul