我遇到了Nexus 6上对焦缓慢的问题。我正在开发相机应用程序,现在我正在使用camera2 API。
为了应用程序的需要,我们创建了一个包含两个表面的预览请求: - SurfaceView(取景器) - YUV ImageReader surface(用于直方图计算中的数据)
这是一个关键点!如果只添加取景器表面,对焦就会正常进行。但是如果有这两个表面,对焦就会非常缓慢,而且会出现镜头移动的可视步骤!
代码相当标准,按照谷歌文档编写。
为了应用程序的需要,我们创建了一个包含两个表面的预览请求: - SurfaceView(取景器) - YUV ImageReader surface(用于直方图计算中的数据)
这是一个关键点!如果只添加取景器表面,对焦就会正常进行。但是如果有这两个表面,对焦就会非常缓慢,而且会出现镜头移动的可视步骤!
代码相当标准,按照谷歌文档编写。
mImageReaderPreviewYUV = ImageReader.newInstance(previewWidth, previewHeight, ImageFormat.YUV_420_888, 2);
previewRequestBuilder = camDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
previewRequestBuilder.addTarget(getCameraSurface()); //Add surface of SurfaceView
previewRequestBuilder.addTarget(mImageReaderPreviewYUV); //Add ImageReader
mCaptureSession.setRepeatingRequest(previewRequestBuilder.build(), captureCallback null);