Camera2 vs Camera1

2020-09-15  本文已影响0人  Summer_LJ

Camera2

CameraManager:
摄像头管理器,专门用于检测系统摄像头、打开系统摄像头。除此之外,调用CameraManager的getCameraCharacteristics(String)方法即可获取指定摄像头的相关特性。在Camera打开之前主要操作CameraManager,打开后主要操作CameraCaptureSession。实例:getSystemService(Context.CAMERA_SERVICE);
CameraCharacteristics
摄像头属性,相当于原CameraInfo。通过CameraManager获取指定id的摄像头属性。 通过获取Camera属性信息,配置Camera输出,如FPS,大小,旋转等。实例获取:mCameraManager.getCameraCharacteristics(currentCameraId);
CameraDevice
代表系统摄像头,该类的功能类似于早期的Camera类。用于创建CameraCaptureSession和关闭摄像头。 通过CameraManager打开Camera,在StateCallback中会得到CameraDevice实例;
CameraCaptureSession
Camera打开后主要和CameraCaptureSession打交道,CameraCaptureSession建立了一个和Camera设备的通道,当这个通道建立完成后就可以向Camera发送请求获取图像。当程序需要预览、拍照时,都需要先通过该类的实例创建Session。而且不管预览还是拍照,也都是由该对象的方法进行控制的,其中控制预览的方法为setRepeatingRequest();控制拍照的方法为capture()。为了监听CameraCaptureSession的创建过程,以及监听CameraCaptureSession的拍照过程,Camera v2 API为CameraCaptureSession提供了StateCallback、CaptureCallback等内部类;
CaptureRequest
当程序调用setRepeatingRequest()方法进行预览时,或调用capture()方法进行拍照时,都需要传入CaptureRequest参数。CaptureRequest代表了一次捕获请求,用于描述捕获图片的各种参数设置,比如对焦模式、曝光模式……总之,程序需要对照片所做的各种控制,都通过CaptureRequest参数进行设置;
CaptureRequest.Builder
CaptureRequest.Builde中主要结构是一个Map,Builder构建后得到CaptureRequest;

Camera1

Camera
framework中api1的接口类,定义open、startPreview、takePicture、AutoFocus等标准的接口实现。实例方式:mCamera = Camera.open(camId);
Camera.Parameters
参数设置,通过camera内部类Parameters操作实现,如设置帧率,设置图片格式,预览尺寸等具体的设置接口,提供set/get函数;
Camera.CameraInfo
元数据获取,通过camera内部类CameraInfo实现,这里只能获取不能修改;

上一篇下一篇

猜你喜欢

热点阅读