提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
前面已经分析了Camera2的open流程,接下来我们分析一下Camera2的预览流程。
一、流程图
二、相机预览流程
- 从 TextureView 获取到 SurfaceTexture
- 将 SurfaceTexture 默认缓冲区的大小配置为相机预览的大小
- 新建一个 Surface 作为预览输出
- CaptureRequest.Builder 设置 Surface
- 创建 CameraCaptureSession 用于相机预览
- 创建成功 CameraCaptureSession 后给 CaptureRequest.Builder 设置自动对焦,必要时开启闪光灯
- 开始显示相机预览,CameraCaptureSession 发送预览请求
1. 创建预览会话
代码如下(示例):
// 创建预览会话
private void createCameraCaptureSession() {
try {
// Here, we create a CameraCaptureSession for camera preview.
// 此处的mCameraDevice即CameraDevice.StateCallback回调返回的CameraDeviceImpl实例
mCameraDevice.createCaptureSession(Arrays.asList(mImageReader.getSurface()),
new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession cameraCaptureSession) {
Log.d(TAG, "createCameraCaptureSession onConfigured");
// The camera is already closed
if (null == mCameraDevice) {
Log.d(TAG, "createCameraCaptureSession null == mCameraDevice");
return;
}
Log.d