我想在我的自定义相机中实现tap to focus功能.这是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();
}
}
Run Code Online (Sandbox Code Playgroud)
Edd*_*ala 14
您需要将自动对焦和自动曝光区域设置为用户点按的区域.
键是CONTROL_AF_REGIONS和CONTROL_AE_REGIONS.
它们的单位位于传感器活动阵列坐标系中,因此您必须从UI触摸坐标转换为相对于预览视图的坐标,并从那里转换为活动阵列坐标.
如果您的预览的宽高比与传感器的宽高比相匹配,那么这很简单; 如果没有,您将必须调整为创建预览输出所做的裁剪.关于裁剪如何工作的最佳图表目前在这里.请注意,如果您还要应用缩放,则还需要在计算中包含缩放系数.
计算完区域后,您可能希望将自动对焦模式设置为自动(而不是通常用于正常预览的CONTINUOUS_PICTURE),然后触发自动对焦.一旦你收敛AF(在捕捉结果中查看AF状态,等待AF_STATE_FOCUSED_LOCKED),你就可以拍出一张焦点对准的照片.如果您想在一段时间后恢复正常操作或者用户取消触摸以进行对焦,请将AF模式切换回CONTINUOUS_PICTURE.
| 归档时间: |
|
| 查看次数: |
9790 次 |
| 最近记录: |