Android 版本升级带来的 Camera api 变化

Android 5.0之后,增加了api2接口。


Camera api1

Camera 类,通过 static open 方法获取一个 Camera 对象,然后通过 startPreview、stopPreview、takePicture、release 等方法,实现开始预览、停止预览、拍照、释放 Camera 对象等操作

CameraInfo 类(Camera 的内部类),元数据获取,获取 Camera 前后摄 ID 等信息

Parameters 类(Camera 的内部类),Camera 参数设置及获取,如通过 setFlashMode 设置 Camera 的闪光灯状态,通过 getFlashMode 获取此时闪光灯的状态


Camera api2

CameraManager 类,CameraManager 是一个用于检测、连接和描述相机设备的系统服务,负责管理所有的CameraDevice相机设备。可以通过调用 Context.getSystemService(Context.CAMERA_SERVICE) 方法来获取一个 CameraManager 的实例

CameraCharacteristics 类,用来描述相机设备属性,其对象由 CameraManager 的 getCameraCharacteristics 方法获取

CameraDevice 类,CameraDevice 是连接在安卓设备上的单个相机的抽象表示,CameraDevice 支持在高帧率下对捕获的图像进行细粒度控制和后期处理

CameraCaptureSession 类,这是一个非常重要的API,当程序需要预览、拍照时,都需要先通过该类的实例创建 Session。而且不管预览还是拍照,也都是由该对象的方法进行控制的,其中控制预览的方法为 setRepeatingRequest,控制拍照的方法为 capture

为了监听 CameraCaptureSession 的创建过程,以及监听 CameraCaptureSession 的拍照过程,API 为 CameraCaptureSession 提供了 StateCallback、CaptureCallback 等内部类

CameraRequest 类和 CameraRequest.Builder 类,当程序调用 setRepeatingRequest 方法进行预览时,或调用 capture 方法进行拍照时,都需要传入 CameraRequest 参数。CameraRequest 代表了一次捕获请求,用于描述捕获图片的各种参数设置,比如对焦模式、曝光模式……总之,程序需要对照片所做的各种控制,都通过 CameraRequest 参数进行设置。CameraRequest.Builder 则负责生成 CameraRequest 对象

你可能感兴趣的:(Android 版本升级带来的 Camera api 变化)