camera 架构
相机使用流程
-
Android Camera2 Open/Close Camera流程
-
Android Camera2 创建Session流程
预览组件:SurfaceView、GLSurfaceView、TextureView 拍照组件:ImageReader 录像组件:MediaRecorder、MediaCodec
-
Android Camera2 创建CaptureRequest流程
-
Android Camera2 预览(启动、停止)流程
-
Android Camera2 拍照流程
-
Android Camera2 录像流程
打开相机流程:
-
获取CameraManager实例:首先,需要通过系统服务获取CameraManager的实例,通常可以通过getSystemService(Context.CAMERA_SERVICE)来获取。
-
获取相机ID列表:通过CameraManager实例,可以获取当前设备上的相机列表,即相机ID列表。
-
选择相机ID并打开相机:根据需求选择要打开的相机ID,并通过CameraManager的openCamera()方法打开相机。在此过程中,需要实现CameraDevice.StateCallback来处理相机打开成功或失败的回调。
-
配置相机预览:在相机打开成功后,需要配置相机的各种参数,设置预览尺寸、拍照尺寸、对焦模式等参数。
-
创建预览会话:最后,通过创建CaptureSession来进行预览显示,通常会将预览的Surface设置到CaptureRequest.Builder中,并启动预览会话。
关闭相机流程:
-
停止预览:在关闭相机之前,需要先停止当前的预览会话,释放预览相关的资源。
-
关闭相机:通过调用CameraDevice的close()方法来关闭相机,释放相机相关的资源。
Android Camera2 创建Session流程
-
创建会话的输出 Surface:首先,你需要创建一个用于接收相机图像数据的 Surface 对象。这通常是一个 SurfaceTexture 或者是一个 SurfaceView 的 Surface。
-
配置 CaptureRequest:接着,你需要创建一个 CaptureRequest 对象,该对象包含了相机的配置信息,比如预览尺寸、对焦模式等。
-
设置会话的状态回调:为了处理会话状态的变化,你需要实现 CameraCaptureSession.StateCallback 接口,该接口包括了会话创建成功、会话关闭等状态的回调方法。
-
创建会话:通过调用 CameraDevice.createCaptureSession() 方法,