Camera2
使用流程:
- 初始化并启动HandlerThread(因为创建会话是好时的操作不宜放在主线程)
- 实现相关Surface的回调(是为了能在相关Surface可以用的时候自动开启预览)
- 检查相机权限
(android.permission.CAMERA)
cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);
cameraManager.getCameraIdList()
:获取相机硬件id集合cameraManager.getCameraCharacteristics(cameraId)
:获取相机信息cameraManager.openCamera(cameraId,cameraCallback,null)
; 开启相机CameraDevice.StateCallback
回调中获取cameraDevice
cameraDevice.createCaptureSession(surfaces,newCameraCaptureSession.StateCallback(),null)
创建捕获会话,surfaces
作为捕获的图像数据的输出的目标CameraCaptureSession.StateCallback
回调中获取到CameraCaptureSession
CaptureRequest.Builder
创建请求,通过键值对的方式设置参数cameraCaptureSession.setRepeatingRequest(previewRequest, captureCallback, mBackgroundHandler);
发送请求
Camera2 主要角色之间的联系
CameraManager
处于顶层管理位置负责检测获取所有摄像头及其特性和传入指定的CameraDevice.StateCallback
回调打开指定摄像头,CameraDevice
是负责管理抽象对象,包括监听Camera 的状态回调CameraDevice.StateCallback
、创建C