I am trying to modify the android-Camera2Basic code to capture a burst of pictures. However, I can\'t get the delay between pictures any faster than 200-300ms on my Nexus 5,
Try to set following capture request parameters
requestBuilder = camDevice
.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
requestBuilder.set(CaptureRequest.EDGE_MODE,
CaptureRequest.EDGE_MODE_OFF);
requestBuilder.set(
CaptureRequest.LENS_OPTICAL_STABILIZATION_MODE,
CaptureRequest.LENS_OPTICAL_STABILIZATION_MODE_ON);
requestBuilder.set(
CaptureRequest.COLOR_CORRECTION_ABERRATION_MODE,
CaptureRequest.COLOR_CORRECTION_ABERRATION_MODE_OFF);
requestBuilder.set(CaptureRequest.NOISE_REDUCTION_MODE,
CaptureRequest.NOISE_REDUCTION_MODE_OFF);
requestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
requestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, true);
requestBuilder.set(CaptureRequest.CONTROL_AWB_LOCK, true);
I am not sure about how fast info comes into CameraCaptureSession.CaptureCallback. It's not have image data, and it could be called before or after ImageReader.OnImageAvailableListener. Try to measure time between ImageReader.OnImageAvailableListener calls. And don't forget to read images and release them, because new images are not available if buffer is filled and images not released. For example:
private class imageAvailableListener implements
ImageReader.OnImageAvailableListener {
@Override
public void onImageAvailable(ImageReader ir) {
Log.i(TAG, "Time = " + System.currentTimeMillis());
Image im = ir.acquireNextImage();
im.close();
}
}
ImageReader mImageReader = ImageReader.newInstance(imageReaderWidth,
imageReaderHeight, ImageFormat.YUV_420_888, 2);
mImageReader.setOnImageAvailableListener(
new imageAvailableListener(), null);