Most visited

Recently visited

Added in API level 21

android.hardware.camera2

android.hardware.camera2软件包为连接到Android设备的各个相机设备提供了一个界面。 它取代了已弃用的Camera类。

该软件包将相机设备建模为流水线,该流水线接收输入请求以捕获单个帧,根据请求捕获单个图像,然后输出一个捕获结果元数据包以及一组用于请求的输出图像缓冲区。 这些请求按顺序处理,并且多个请求可以一次在飞行中。 由于摄像设备是一个具有多个阶段的流水线,因此在大多数Android设备上都需要有多个请求。

要枚举,查询和打开可用的相机设备,请获取 CameraManager实例。

个体CameraDevices提供一组静态属性信息,用于描述设备的硬件设备以及可用设置和输出参数。 此信息通过CameraCharacteristics对象提供,可通过getCameraCharacteristics(String)

要从摄像头设备捕捉或传输图像,应用程序必须首先创建一个带有一组输出表面的camera capture session ,以便与摄像头设备一起使用,并带有createCaptureSession(List , CameraCaptureSession.StateCallback, Handler) 每个Surface必须预先配置appropriate size and format (如果适用)以匹配相机设备提供的尺寸和格式。 目标表面可以从各种类来获得,包括SurfaceViewSurfaceTexture经由Surface(SurfaceTexture)MediaCodecMediaRecorderAllocation ,和ImageReader

通常,相机预览图像将发送到SurfaceViewTextureView (通过其SurfaceTexture )。 JPEG图像或RAW缓冲区来捕获DngCreator是可以做到ImageReaderJPEGRAW_SENSOR格式。 ,或直接在管理或本机代码在的renderScript,OpenGL ES的相机数据的应用驱动的处理最好是通过做Allocation用YUV TypeSurfaceTextureImageReaderYUV_420_888分别格式。

然后,应用程序需要构建一个CaptureRequest ,它定义摄像头设备捕获单个图像所需的所有捕获参数。 该请求还列出了应将哪个配置的输出曲面用作此捕捉的目标。 CameraDevice有一个factory method用于为给定用例创建一个request builder ,该用例针对运行该应用程序的Android设备进行了优化。

一旦请求建立起来,就可以将它交给主动捕获会话,以便进行一次性capture或无限repeating使用repeating 两种方法都有一个变种,它接受用作突发捕获/重复突发的请求列表。 重复请求的优先级低于捕获的优先级,因此在重新配置了重复请求时通过capture()提交的请求将在任何新的当前重复(突发)捕获实例开始捕获之前捕获。

处理请求后,相机设备将产生一个TotalCaptureResult对象,其中包含在捕获的时间大约摄像机装置的状态的信息,和所使用的最终设置。 如果四舍五入或解决矛盾的参数是必要的,这些可能与请求有所不同。 相机设备也会将一帧图像数据发送到请求中包含的每个输出Surfaces 这些是相对于输出CaptureResult异步生成的,有时会在相当晚的时候生成。

Classes

CameraCaptureSession CameraDevice配置的捕捉会话,用于从相机捕捉图像或在之前的同一会话中重新处理从相机捕捉的图像。
CameraCaptureSession.CaptureCallback

用于跟踪提交给相机设备的CaptureRequest的进度的回调对象。

CameraCaptureSession.StateCallback 用于接收有关摄像头捕获会话状态更新的回调对象。
CameraCharacteristics

描述CameraDevice的属性。

CameraCharacteristics.Key<T> 一个 Key用于与 get(CameraCharacteristics.Key ) 做相机特征字段查找。
CameraConstrainedHighSpeedCaptureSession CameraDevice受限高速捕捉会话,用于从 CameraDevice捕捉高速视频录制用例的高速图像。
CameraDevice

CameraDevice类是连接到Android设备的单个摄像头的代表,允许在高帧率下进行图像捕获和后期处理的细粒度控制。

CameraDevice.StateCallback 用于接收有关相机设备状态更新的回调对象。
CameraManager

系统服务管理器,用于检测,表征和连接到CameraDevices

CameraManager.AvailabilityCallback 相机设备的回调变为可用或无法打开。
CameraManager.TorchCallback 相机闪光灯模式的回调变为不可用,禁用或启用。
CameraMetadata<TKey> 相机控件和信息的基类。
CaptureFailure 来自图像传感器的单个图像捕获失败的捕获报告。
CaptureRequest

从摄像头设备捕捉单个图像所需的一整套设置和输出。

CaptureRequest.Builder 捕获请求的构建器。
CaptureRequest.Key<T> Key是用来做捕获请求字段查找与 get(CaptureResult.Key ) 或与设置字段 set(Key, Object)
CaptureResult

来自图像传感器的单个图像捕获结果的子集。

CaptureResult.Key<T> 一个 Key用于捕获结果字段查找与 get(CaptureResult.Key )
DngCreator DngCreator类提供将原始像素数据作为DNG文件写入的功能。
TotalCaptureResult

来自图像传感器的单个图像捕获的总装配结果。

Exceptions

CameraAccessException

如果CameraAccessException无法查询或打开相机设备,或者打开的CameraManager的连接不再有效, CameraDevice

Hooray!