我想在我的自定义相机中实现轻拍对焦功能.
这是Google https://github.com/googlesamples/android-Camera2Basic提供的基本代码
这是Google https://github.com/googlesamples/android-Camera2Basic提供的基本代码
这是代码片段,我认为我应该添加我的功能
如果有人实现了Camera2 API,请帮忙!
private void lockFocus() { try { // This is how to tell the camera to lock focus. mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,CameraMetadata.CONTROL_AF_TRIGGER_START); // Tell #mCaptureCallback to wait for the lock. mState = STATE_WAITING_LOCK; mCaptureSession.capture(mPreviewRequestBuilder.build(),mCaptureCallback,mBackgroundHandler); } catch (CameraAccessException e) { e.printStackTrace(); } }
解决方法
您需要将自动对焦和自动曝光区域设置为用户轻按的区域.
钥匙是CONTROL_AF_REGIONS和CONTROL_AE_REGIONS.
它们的单位在传感器active array coordinate system中,因此您必须从UI触摸坐标转换为相对于预览视图的坐标,并从那里转换到活动的阵列坐标.
如果您的预览的宽高比与传感器的宽高比一致,那就很简单;如果没有,您将必须调整完成的裁剪以创建预览输出.关于裁剪如何工作的最佳图表当前为here.请注意,如果您还应用缩放,您还需要在计算中包含缩放因子.
计算该区域后,您可能需要将AF模式设置为AUTO(而不是通常用于正常预览的CONTINUOUS_PICTURE),然后触发AF.一旦您收敛AF(在捕获结果中查看AF状态,请等待AF_STATE_FOCUSED_LOCKED),您很乐意拍摄一幅关注焦点的图片.如果要在一段时间后返回正常操作或用户取消对焦的触摸,请将AF模式切换回CONTINUOUS_PICTURE.