作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在我的自定义相机中实现点击对焦功能。这是谷歌提供的基础代码https://github.com/googlesamples/android-Camera2Basic
这是我认为应该添加我的功能的代码 fragment 如果有人实现了 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 触摸坐标转换为相对于预览 View 的坐标,然后从那里转换为 Activity 数组坐标。
如果预览的纵横比与传感器的纵横比相匹配,那就很简单了;如果不是,则必须针对创建预览输出所做的裁剪进行调整。目前关于裁剪如何工作的最佳图表是 here .请注意,如果您还应用缩放,则需要在计算中也包括缩放系数。
计算区域后,您可能希望将 AF 模式设置为 AUTO(而不是通常用于普通预览的 CONTINUOUS_PICTURE),然后触发 AF。收敛 AF(查看拍摄结果中的 AF 状态,等待 AF_STATE_FOCUSED_LOCKED)后,您就可以拍摄合焦的照片了。如果您想在一段时间后返回正常操作或用户取消触摸对焦,请将 AF 模式切换回 CONTINUOUS_PICTURE。
关于android - 在 Camera2 API 中实现点击对焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151244/
我是一名优秀的程序员,十分优秀!