I want to to make camera app with touch focus, but i am little confused with the camera api 2. I have read about LENS_FOCUS_DISTANCE
but i don't understand how to use it. Can you please assist?
Thank you in advance and wish you nice weekend!
Camera API2 looks weird for begin, but then you will see that it's pretty easy.
Best answer for this question is code with comments:
private void captureImage() {
try {
//for do this you should have mCameraDevice and mCameraCaptureSession
//get CaptureRequestBuilder.
captureStillBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
//add target surfaces - for getting image data you should have instance on ImageReader
//with OnImageAvailableListener that will be called when image will be captured
//but for showing on screen you have to use SurfaceView or TextureView
captureStillBuilder.addTarget(mImageReader.getSurface());
//add some details for Request
//in general: you have fields and values for it and you just set what value should be in each field
// auto focus works only when whole control mode in auto
captureStillBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
// before capture lock focus
captureStillBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_START);
// set area for focusing
MeteringRectangle[] focusArea = new MeteringRectangle[1];
focusArea[0] = new MeteringRectangle(/*here set coordinates for focus on */);
captureStillBuilder.set(CaptureRequest.CONTROL_AF_REGIONS, focusArea);
// create callback for this capture
CameraCaptureSession.CaptureCallback callback = new ...
// just run capture to make focused photo
mCameraCaptureSession.capture(captureStillBuilder.build(), callback, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With