Android Camera2 API 学习笔记2

CameraCharacteristics.Key

Public methods

Return Name Description
boolean equals(Object o) 某个对象是否与这个相等
String getName() 返回camelCase形式名字
int hashCode() 返回对象的哈希编码值
String toString() 返回字符串形式的CameraCharacteristics.Key

CameraConstrainedHighSpeedCaptureSession

通过向 createConstrainedHighSpeedCaptureSession(List, CameraCaptureSession.StateCallback, Handler) 提供一组目标输出表面创建 CameraHighSpeedCaptureSession,一旦创建,会话被激活,直到相机设备创建新的会话,或者相机设备关闭。

激活的高速捕获会话是一个特别的捕获会话,针对于高速(>=120fps)的视频记录情况,当相机支持高速摄像(例如,REQUEST_AVAILABLE_CAPABILITIES 包含 REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO)。它只接受通过
createHighSpeedRequestList(CaptureRequest) 创建的请求列表,请求列表只能通过 captureBurst 或者 setRepeatingBurst 提交到这个会话.
创建一个会话是一个费时的操作,可能需要几百毫秒,
createConstrainedHighSpeedCaptureSession(List, CameraCaptureSession.StateCallback, Handler) 将发送一个准备好使用信号到提供的监听器 onConfigured(CameraCaptureSession) 回调函数,如果配置没能完成,就调用 onConfigureFailed(CameraCaptureSession) ,会话不被激活。

如果新的会话被创建,之前的会话就被关闭,启用相关的 onClosed 回调。

Public methods

Return Name Description
abstract List<CaptureRequest> createHighSpeedRequestList(CaptureRequest request) 创建一个不可改变的请求列表

CameraDevice

你的应用必须在 manifest 中声明相机权限。
一个给定的相机可能支持两个级别中的一个:limited 或者 full。如果一个设备仅支持 limited 级别,那么 Camera2 包含粗略的相当于旧版 Camera API 的特性集合,但是有着更清晰更有效的接口。实现 full 级别支持的设备在较老的摄像头API上提供了大大改进的功能。针对 limited 级别设备的应用程序将在 full 级别设备上保持不变;如果您的应用程序需要一个 full 级别的设备来进行适当的操作,请在 manifest 中声明 “android.hardware.camera.level.full”。

常量

Type Name Description
int TEMPLATE_MANUAL 一个基础模板用于直接应用控制捕获参数
int TEMPLATE_PREVIEW 创建一个适合相机预览窗口的请求
int TEMPLATE_RECORD 创建一个适合视频记录的请求
int TEMPLATE_STILL_CAPTURE 创建一个适合静态图像捕获的请求
int TEMPLATE_VIDEO_SNAPSHOT 创建一个适合记录视频时捕捉图像的请求
int TEMPLATE_ZERO_SHUTTER_LAG 创建一个零快门滞后静态捕获请求

Public methods

Type Name Description
abstract void close() 尽可能快的关闭这个相机连接
CaptureRequest.Builder createCaptureRequest(int templateType, Set<String> physicalCameraIdSet) 为新的捕获请求创建一个 CaptureRequest.Builder,用目标使用情况初始化模板 API P 及以上
abstract CaptureRequest.Builder createCaptureRequest(int templateType) 为新的捕获请求创建一个 CaptureRequest.Builder,用目标使用情况初始化模板
void createCaptureSession(SessionConfiguration config) 用一个集合所有支持参数的 SessionConfiguration 对象创建一个新的 CameraCaptureSession。 Android P 及以上
abstract void createCaptureSession(List<Surface> outputs, CameraCaptureSession.StateCallback callback, Handler handler) 通过向相机设备提供一组目标输出表面创建一个新的捕获会话
abstract void createCaptureSessionByOutputConfigurations(List<OutputConfiguration> outputConfigurations, CameraCaptureSession.StateCallback callback, Handler handler) 通过向相机设备提供一组目标输出表面及其配置创建一个新的捕获会话
abstract void
createConstrainedHighSpeedCaptureSession(List<Surface> outputs, CameraCaptureSession.StateCallback callback, Handler handler) 创建一个新的约束高速捕获会话
abstract CaptureRequest.Builder createReprocessCaptureRequest(TotalCaptureResult inputResult) 从一个 TotalCaptureResult 为新的重新处理 CaptureRequest 创建一个 CaptureRequest.Builder
abstract void createReprocessableCaptureSession(InputConfiguration inputConfig, List outputs, CameraCaptureSession.StateCallback callback, Handler handler) 通过向相机设备提供需要的重处理输入表面配置和一组目标输出表面创建新的可重处理相机捕获会话
abstract void createReprocessableCaptureSessionByConfigurations(InputConfiguration inputConfig, List outputs, CameraCaptureSession.StateCallback callback, Handler handler) 通过向相机设备提供需要的重处理输入配置和输出 OutputConfiguration 创建新的可重处理相机捕获会话
abstract String getId() 获取相机设备的 ID

CameraDevice.StateCallback

用于接收相机设备状态更新的回调,必须提供给 openCamera(String, CameraDevice.StateCallback, Handler) 方法来打开一个相机设备。

常量

Type Name Description
int ERROR_CAMERA_DEVICE 可以通过 onError(CameraDevice, int) 报告的一个错误码,指示相机设备遭遇致命错误
int ERROR_CAMERA_DISABLED 可以通过 onError(CameraDevice, int) 报告的一个错误码,指示由于设备策略无法打开相机设备
int ERROR_CAMERA_IN_USE 可以通过 onError(CameraDevice, int) 报告的一个错误码,指示相机设备已经在使用
int ERROR_CAMERA_SERVICE 可以通过 onError(CameraDevice, int) 报告的一个错误码,指示相机服务遭遇致命错误
int ERROR_MAX_CAMERAS_IN_USE 可以通过 onError(CameraDevice, int) 报告的一个错误码,指示由于有太多其他打开的相机设备该相机无法打开

Public methods

Type Name Description
void onClosed(CameraDevice camera) 当相机设备用 close() 关闭时调用
abstract void onDisconnected(CameraDevice camera) 当相机设备不再可以使用时调用
abstract void onError(CameraDevice camera, int error) 相机设备遭遇严重错误时调用
abstract void onOpened(CameraDevice camera) 相机设备打开完成时调用

CameraManager

一个系统服务管理用于检测,区分和连接到 CameraDevices。
必须通过传入 CameraManager.class 到 Context.getSystemService(Class) 或者传入 Context.CAMERA_SERVICE 到 Context.getSystemService(String) 获取这个类的实例。

Public methods

Type Name Description
CameraCharacteristics getCameraCharacteristics(String cameraId) 查询相机设备能力
String[] getCameraIdList() 通过标识符返回当前连接的摄像机设备列表,包括其他相机API客户端可能使用的摄像机。
void openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler) 使用给定的 ID 打开连接一个相机
void openCamera(String cameraId, Executor executor, CameraDevice.StateCallback callback) 使用给定的 ID 打开连接一个相机 Android P 及以上
void registerAvailabilityCallback(Executor executor, CameraManager.AvailabilityCallback callback) 注册一个回调,相机可用时通知 Android P 及以上
void registerAvailabilityCallback(CameraManager.AvailabilityCallback callback, Handler handler) 注册一个回调,相机可用时通知
void registerTorchCallback(CameraManager.TorchCallback callback, Handler handler) 注册一个回调,通知相机 torch 模式状态
void setTorchMode(String cameraId, boolean enabled) 设定给定 ID 相机 flash 单元的 torch 模式,不用打开相机设备
void unregisterAvailabilityCallback(CameraManager.AvailabilityCallback callback) 移除过去添加的回调,回调不在接收 torch 模式状态回调

CameraManager.AvailabilityCallback

当相机设备可以打开或不可打开时回调。

Public methods

Type Name Description
void onCameraAvailable(String cameraId) 新相机可用时调用
void onCameraUnavailable(String cameraId) 一个原本可用的相机不可用时调用

CameraManager.TorchCallback

当相机闪光灯 torch 模式变得 unavailable,disabled,enabled 时回调。
当拥有闪光灯的相机设备不可用或者需要的相机资源由于更要优先级的相机活动变得繁忙时 torch 模式变得 unavailable。当闪光灯关闭或者拥有它的相机设备不再使用和他需要的相机资源不再繁忙时 torch 模式变得 disabled。当应用调用 setTorchMode(String, boolean) 来关闭相机的 torch 模式时或者当同时保持多个 torch 不被支持,一个应用打开其他相机的 torch 模式,torch 模式关闭。当通过 setTorchMode(String, boolean) 打开时 torch 模式变得 enabled。
只有当 torch 模式是 disabled 或者 enabled 状态时,能通过 setTorchMode(String, boolean) 设置。

Public methods

Type Name Description
void onTorchModeChanged(String cameraId, boolean enabled) 相机的 torch 模式 enabled 或 disabled,可以通过 setTorchMode(String, boolean) 改变
void onTorchModeUnavailable(String cameraId) 相机的 torch 模式不能通过 setTorchMode(String, boolean) 设置

CameraMetadata

相机控制和信息的基类,定义了基础的键值对用于查询相机特性和捕获结果,以及设置相机请求参数。
所有 CameraMetadata 实例都是不可变的,getKeys() 返回的 keys 列表不会改变。

常量

Type Name Description
int COLOR_CORRECTION_ABERRATION_MODE_FAST 像差校正不会减慢捕获率相对于传感器的原始输出
int COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY 像差校正工作的质量提高,但捕获率可能降低(相对于传感器的原始输出率)
int COLOR_CORRECTION_ABERRATION_MODE_OFF 不使用像差校正
int COLOR_CORRECTION_MODE_FAST 颜色校正必须不会减慢捕获率相对于传感器的原始输出
int COLOR_CORRECTION_MODE_HIGH_QUALITY 提高颜色矫正质量,捕获率可能会降低(相对于传感器原始输出速率)
int COLOR_CORRECTION_MODE_TRANSFORM_MATRIX 使用 android.colorCorrection.transform 矩阵和 android.colorCorrection.gains 做颜色转换
int CONTROL_AE_ANTIBANDING_MODE_50HZ 相机设备将调整曝光周期来避免 50Hz 光源的 banding 问题
int CONTROL_AE_ANTIBANDING_MODE_60HZ 相机设备将调整曝光周期来避免 60Hz 光源的 banding 问题
int CONTROL_AE_ANTIBANDING_MODE_AUTO 相机设备将自动调整 antibanding 程序以适应当前照明条件
int CONTROL_AE_ANTIBANDING_MODE_OFF 相机设备不会调整曝光时长来避免 banding 问题
int CONTROL_AE_MODE_OFF 相机设备自动曝光关闭
int CONTROL_AE_MODE_ON 相机设备自动曝光激活,没有 flash 控制
int CONTROL_AE_MODE_ON_ALWAYS_FLASH 同上,只是相机设备还控制闪光灯,拍照时总是闪光
int CONTROL_AE_MODE_ON_AUTO_FLASH 同上,只是相机设备控制闪光灯在低光条件下开启
int CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE 自动闪光,自动红眼消除
int CONTROL_AE_MODE_ON_EXTERNAL_FLASH 点亮外部闪光灯
int CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL 相机设备将取消任何当前的活动或完成预捕捉测量序列,自动曝光将回到初始状态
int CONTROL_AE_PRECAPTURE_TRIGGER_IDLE 触发器是空闲的
int CONTROL_AE_PRECAPTURE_TRIGGER_START 预捕捉测量序列将被相机设备开始
int CONTROL_AE_STATE_CONVERGED AE 对当前的场景有一个好的控制值
int CONTROL_AE_STATE_FLASH_REQUIRED AE 有一个好的控制值,但是闪光灯需要被点亮
int CONTROL_AE_STATE_INACTIVE AE 关闭或者暂时复位
int CONTROL_AE_STATE_LOCKED AE 被锁定
int CONTROL_AE_STATE_PRECAPTURE AE 被要求做预捕获序列并且现在正在做
int CONTROL_AE_STATE_SEARCHING AE 对当前场景没有好的控制值
int CONTROL_AF_MODE_AUTO 基础的自动对焦模式
int CONTROL_AF_MODE_CONTINUOUS_PICTURE 在这种模式下,AF算法不断地修改镜头位置,试图提供一个恒定的焦点图像流
int CONTROL_AF_MODE_CONTINUOUS_VIDEO 在这种模式下,AF算法不断地修改镜头位置,试图提供一个恒定的焦点图像流
int CONTROL_AF_MODE_EDOF 扩展景深(数字聚焦)模式
int CONTROL_AF_MODE_MACRO 特写镜头聚焦(微距)模式
int CONTROL_AF_MODE_OFF 自动对焦不控制焦距, android.lens.focusDistance 被应用控制
int CONTROL_AF_SCENE_CHANGE_DETECTED 自动对焦区域检测到场景改变
int CONTROL_AF_SCENE_CHANGE_NOT_DETECTED 自动对焦区域没有检测到场景改变
int CONTROL_AF_STATE_ACTIVE_SCAN AF 开始 AF 扫描,因为他被 AF trigger 触发
int CONTROL_AF_STATE_FOCUSED_LOCKED 自动对焦相信对焦正确并且锁定
int CONTROL_AF_STATE_INACTIVE AF 关闭或者还没开始扫描
int CONTROL_AF_STATE_NOT_FOCUSED_LOCKED AF 对焦失败且锁定
int CONTROL_AF_STATE_PASSIVE_FOCUSED AF 相信当前对焦,但是随时准备重新扫描
int CONTROL_AF_STATE_PASSIVE_SCAN AF 目前正在执行AF 扫描启动的相机设备在一个连续的自动对焦模式。
int CONTROL_AF_STATE_PASSIVE_UNFOCUSED AF完成了被动扫描,没有找到焦点,可以随时重新开始扫描
int CONTROL_AF_TRIGGER_CANCEL 自动对焦将返回到它的初始状态,并取消任何当前激活的触发器
int CONTROL_AF_TRIGGER_IDLE 触发器闲置
int CONTROL_AF_TRIGGER_START 自动对焦现在触发
int CONTROL_AWB_MODE_AUTO 相机设备自动白平衡程序激活
int CONTROL_AWB_MODE_CLOUDY_DAYLIGHT 相机设备自动白平衡程序关闭,相机设备使用多云的白天光线作为假定的白平衡光源
int CONTROL_AWB_MODE_DAYLIGHT 相机设备自动白平衡程序关闭,相机设备使用日光光线作为假定的白平衡光源
int CONTROL_AWB_MODE_FLUORESCENT 相机设备自动白平衡程序关闭,相机设备使用荧光光线作为假定的白平衡光源
int CONTROL_AWB_MODE_INCANDESCENT 相机设备自动白平衡程序关闭,相机设备使用白炽灯光线作为假定的白平衡光源
int CONTROL_AWB_MODE_OFF 自动白平衡关闭
int CONTROL_AWB_MODE_SHADE 相机设备自动白平衡程序关闭,相机设备使用阴影光线作为假定的白平衡光源
int CONTROL_AWB_MODE_TWILIGHT 相机设备自动白平衡程序关闭,相机设备使用黄昏光线作为假定的白平衡光源
int CONTROL_AWB_MODE_WARM_FLUORESCENT 相机设备自动白平衡程序关闭,相机设备使用温暖荧光光线作为假定的白平衡光源
int CONTROL_AWB_STATE_CONVERGED AWB 对当前场景友好的控制值
int CONTROL_AWB_STATE_INACTIVE AWB 不在自动模式,或者还没开始测量
int CONTROL_AWB_STATE_LOCKED AWB 已经被锁定
int CONTROL_AWB_STATE_SEARCHING AWB 对当前场景没有好的控制值
int CONTROL_CAPTURE_INTENT_CUSTOM 此请求的目标不属于其他类别
int CONTROL_CAPTURE_INTENT_MANUAL 此请求用于手动捕获,应用程序希望直接控制捕获参数
int CONTROL_CAPTURE_INTENT_MOTION_TRACKING 这个请求是针对一个运动跟踪用例,应用程序将使用相机和惯性传感器数据来定位和跟踪物体
int CONTROL_CAPTURE_INTENT_PREVIEW 这个请求用于预览类的请求
int CONTROL_CAPTURE_INTENT_STILL_CAPTURE 这个请求用于拍照类的请求
int CONTROL_CAPTURE_INTENT_VIDEO_RECORD 这个请求用于拍摄视频类的请求
int CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT 这个请求用于视频快照(录制视频时的静态图像)用例
int CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG 此请求用于 ZSL 用例;应用程序将对全分辨率图像进行流处理,然后重新处理一个或多个图像,以便最终捕获
int CONTROL_EFFECT_MODE_AQUA 图像中加入蓝色色调的“aqua”效果
int CONTROL_EFFECT_MODE_BLACKBOARD 一种“黑板”效果,图像通常显示为黑色区域,带有白色或灰色的细节
int CONTROL_EFFECT_MODE_MONO 一种“单色”效果,将图像映射为单一颜色
int CONTROL_EFFECT_MODE_NEGATIVE 一种“负片”效果,图像的颜色是倒过来的
int CONTROL_EFFECT_MODE_OFF 不使用颜色效果
int CONTROL_EFFECT_MODE_POSTERIZE 一种“色调分离”的效果,即图像使用的是离散的色调区域而不是连续的色调梯度
int CONTROL_EFFECT_MODE_SEPIA 一种“深褐色”效果,图像被映射成温暖的灰色、红色和棕色色调
int CONTROL_EFFECT_MODE_SOLARIZE 一种“日晒”效应(萨巴蒂尔效应),图像的色调完全或部分颠倒
int CONTROL_EFFECT_MODE_WHITEBOARD 一种“白板”效果,图像通常显示为白色区域,带有黑色或灰色的细节
int CONTROL_MODE_AUTO 为每个 3A 算法使用设置
int CONTROL_MODE_OFF APP 控制整个 pipeline
int CONTROL_MODE_OFF_KEEP_STATE 同上,但是这个捕获不会被相机设备背景自动曝光,自动白平衡和自动聚焦算法(3A)用来更新他们的统计数据
int CONTROL_MODE_USE_SCENE_MODE 使用特殊的场景模式
int CONTROL_SCENE_MODE_ACTION 为快速移动对象的照片优化
int CONTROL_SCENE_MODE_BARCODE 为准确捕捉条码照片而优化,以便希望读取条码值的相机应用程序使用
int CONTROL_SCENE_MODE_BEACH 特别适合明亮的户外沙滩环境
int CONTROL_SCENE_MODE_CANDLELIGHT 优化黑暗情况,其主要光源是火焰。
int CONTROL_SCENE_MODE_DISABLED 指示没有为给定的捕获请求设置场景模式
int CONTROL_SCENE_MODE_FACE_PRIORITY 如果有人脸检测支持,使用人脸检测数据进行自动对焦、自动白平衡和自动曝光
int CONTROL_SCENE_MODE_FIREWORKS 为夜间的烟火照片优化
int CONTROL_SCENE_MODE_HDR 打开设备特定的高动态范围(HDR)模式
int CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO API 23 弃用
int CONTROL_SCENE_MODE_LANDSCAPE 为远观小物体的照片优化
int CONTROL_SCENE_MODE_NIGHT 优化低光设置
int CONTROL_SCENE_MODE_NIGHT_PORTRAIT 为低光环境下的人的静态照片优化
int CONTROL_SCENE_MODE_PARTY 为室内昏暗环境的多个移动人物优化
int CONTROL_SCENE_MODE_PORTRAIT 为静态人物优化
int CONTROL_SCENE_MODE_SNOW 优化光亮情况,室外包含雪的设置
int CONTROL_SCENE_MODE_SPORTS 为快速移动人物优化
int CONTROL_SCENE_MODE_STEADYPHOTO 优化避免小的设备移动引起的模糊
int CONTROL_SCENE_MODE_SUNSET 日落场景优化
int CONTROL_SCENE_MODE_THEATRE 昏暗室内不能开闪光灯情况的优化
int CONTROL_VIDEO_STABILIZATION_MODE_OFF 视频增稳模式关闭
int CONTROL_VIDEO_STABILIZATION_MODE_ON 视频增稳开启
int DISTORTION_CORRECTION_MODE_FAST 采用镜头失真校正,不降低帧率相对于传感器输出
int DISTORTION_CORRECTION_MODE_HIGH_QUALITY 采用高质量的畸变校正,其代价可能是相对于传感器输出的帧率降低
int DISTORTION_CORRECTION_MODE_OFF 不应用畸变矫正
int EDGE_MODE_FAST 在质量级别上应用边缘增强,不会降低相对于传感器输出的帧速率
int EDGE_MODE_HIGH_QUALITY 采用高质量的边缘增强,以降低输出帧率为代价
int EDGE_MODE_OFF 不应用边缘增强
int EDGE_MODE_ZERO_SHUTTER_LAG 基于分辨率,边缘增强可应用于不同级别的不同输出流
int FLASH_MODE_OFF 这次捕获不使用闪光灯
int FLASH_MODE_SINGLE 如果闪光灯可用并有电,则为该捕获启动闪光灯
int FLASH_MODE_TORCH 转换闪光到连续点亮
int FLASH_STATE_CHARGING 闪光灯正在重点,不能点亮
int FLASH_STATE_FIRED 闪光灯已经点亮
int FLASH_STATE_PARTIAL Flash partially illuminated this frame
int FLASH_STATE_READY 闪光灯准备好被点亮
int FLASH_STATE_UNAVAILABLE 相机没有闪光灯
int HOT_PIXEL_MODE_FAST 采用热点校正,不降低帧率相对于传感器的原始输出
int HOT_PIXEL_MODE_HIGH_QUALITY 采用高质量的热点校正,代价是相对于传感器的原始输出可能降低帧率
int HOT_PIXEL_MODE_OFF 热点校正关闭
int INFO_SUPPORTED_HARDWARE_LEVEL_3 该相机设备除了具有全层功能外,还可以进行YUV的再处理和原始数据捕获
int INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL 这个摄像头设备由一个连接到这个Android设备的外部摄像头支持
int INFO_SUPPORTED_HARDWARE_LEVEL_FULL 该摄像装置能够支持先进的成像应用
int INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY 这台相机正在向后兼容模式下运行
int INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED 这个相机设备没有足够的能力来作为一个FULL级别或更好的设备
int LENS_FACING_BACK 摄像头设备朝向与屏幕相反的方向
int LENS_FACING_EXTERNAL 外部摄像头与屏幕方向不确定
int LENS_FACING_FRONT 摄像头朝向与屏幕相同
int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE 镜头聚焦距离用屈光度测量
int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED 镜头聚焦距离用屈光度测量,并且已经标定
int LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED 镜头焦距不准确,使用的单位为android.lens。焦点距离不对应任何物理单位
int LENS_OPTICAL_STABILIZATION_MODE_OFF 光学增稳关闭
int LENS_OPTICAL_STABILIZATION_MODE_ON 光学增稳开启
int LENS_POSE_REFERENCE_GYROSCOPE android.lens.poseTranslation的值是相对于设备主陀螺仪的位置
int LENS_POSE_REFERENCE_PRIMARY_CAMERA android.lens.poseTranslation的值是相对于与本相机朝向相同的最大的相机设备的光学中心
int LENS_STATE_MOVING 一个或几个镜头参数正在改变
int LENS_STATE_STATIONARY 镜头参数不在改变
int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE 一个软件机制被用来在物理相机之间同步
int LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED 相机设备支持硬件级的帧时间戳同步,物理流图像的时间戳准确地反映了它的开始曝光时间
int NOISE_REDUCTION_MODE_FAST 在不降低相对于传感器输出的帧率的情况下,采用了降噪
int NOISE_REDUCTION_MODE_HIGH_QUALITY 采用了高质量的降噪,代价是相对于传感器的输出可能降低帧率
int NOISE_REDUCTION_MODE_MINIMAL 在不降低相对于传感器输出的帧率的情况下,应用了最小的噪声降低
int NOISE_REDUCTION_MODE_OFF 不使用降噪
int NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG 根据分辨率,不同的输出流采用不同的降噪方法
int REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE 每个相机设备都支持的最小功能集
int REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE 该相机设备支持在>= 20帧/秒拍摄高分辨率图像,至少在未压缩的YUV格式下,当后处理设置设置为FAST
int REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO 该设备支持受约束的高速视频记录(帧速率>=120fps)用例
int REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT 照相设备可以从它的视场测量深度
int REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA 相机设备是由两个或两个以上的物理相机支持的逻辑相机
int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING 相机设备的后处理阶段可以手动控制
int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR 相机设备可以手动控制(3A算法,如自动曝光,自动对焦可以绕过)
int REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME 相机设备是一个单色相机,不包含彩色滤色阵列,U和Y平面上的像素值都是128
int REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING 相机对android.control.captureIntent支持的MOTION_TRACKING值,限制最大曝光时间为20ms
int REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING 相机设备支持零快门延迟再处理用例
int REQUEST_AVAILABLE_CAPABILITIES_RAW 摄像头设备支持输出原始缓冲区和解释它们的元数据
int REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS 当内置的3A算法在运行时,相机设备支持精确地报告传感器的设置
int REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING 相机设备支持YUV_420_888重处理用例,类似于PRIVATE_REPROCESSING,该功能需要相机设备支持以下内容:One input stream is supported, that is, android.request.maxNumInputStreams == 1.
int SCALER_CROPPING_TYPE_CENTER_ONLY 摄像头设备只支持中央裁减区域
int SCALER_CROPPING_TYPE_FREEFORM 摄像头设备支持任意选择的的裁减区域
int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR
int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG
int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG
int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB 传感器不是拜尔滤色镜,每个像素有三个16bit值,而不是一位16bit值
int SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB
int SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME 从android.sensor.timestamp得到的时间戳与elapsedRealtimeNanos()具有相同的时间基,可与具有相同时间基的时间戳相比较
int SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN 从android.sensor.timestamp得到的时间戳。以纳秒为单位,并且是单调的,但是不能与其他子系统的时间戳相比较
int SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER
int SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT W 3900 - 4500K
int SENSOR_REFERENCE_ILLUMINANT1_D50
int SENSOR_REFERENCE_ILLUMINANT1_D55
int SENSOR_REFERENCE_ILLUMINANT1_D65
int SENSOR_REFERENCE_ILLUMINANT1_D75
int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT
int SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT D 5700 - 7100K
int SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT N 4600 - 5400K
int SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER
int SENSOR_REFERENCE_ILLUMINANT1_FLASH
int SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT
int SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN
int SENSOR_REFERENCE_ILLUMINANT1_SHADE
int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A
int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B
int SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C
int SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN 白炽灯
int SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT WW 3200 - 3700K
int SENSOR_TEST_PATTERN_MODE_COLOR_BARS
int 所有的像素数据都被一个8-bar的彩色图案所取代SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY 测试模式与COLOR_BARS类似,不同的是,每个bar应该从顶部指定的颜色开始,然后在底部逐渐变为灰色
int SENSOR_TEST_PATTERN_MODE_CUSTOM1 第一个自定义测试模式
int SENSOR_TEST_PATTERN_MODE_OFF 不使用测试模式,相机设备返回来自图像传感器的捕获
int SENSOR_TEST_PATTERN_MODE_PN9 所有像素数据都被由PN9 512位序列生成的伪随机序列所取代(通常在硬件中使用线性反馈移位寄存器实现)。
int SENSOR_TEST_PATTERN_MODE_SOLID_COLOR [R, G_even, G_odd, B]中的每个像素都被其各自的android.sensor.testPatternData中提供的颜色通道所替代
int SHADING_MODE_FAST 应用镜头阴影校正,不减慢帧率相对于传感器原始输出
int SHADING_MODE_HIGH_QUALITY 采用高质量的镜片阴影校正,可能会降低帧率
int SHADING_MODE_OFF 不使用镜头阴影校正
int STATISTICS_FACE_DETECT_MODE_FULL 返回所有人脸元数据
int STATISTICS_FACE_DETECT_MODE_OFF 在捕获结果中不包含人脸检测统计信息
int STATISTICS_FACE_DETECT_MODE_SIMPLE 只返回人脸矩形和置信值
int STATISTICS_LENS_SHADING_MAP_MODE_OFF 在捕获结果中不包含镜头阴影图
int STATISTICS_LENS_SHADING_MAP_MODE_ON 在捕获结果中包括一个镜头阴影图
int STATISTICS_OIS_DATA_MODE_OFF 捕获结果中不包含 OIS 数据
int STATISTICS_OIS_DATA_MODE_ON 在捕获结果中包含OIS数据
int STATISTICS_SCENE_FLICKER_50HZ 摄像头设备检测到当前场景中50Hz的照明闪烁
int STATISTICS_SCENE_FLICKER_60HZ 摄像头设备检测到当前场景中60Hz的照明闪烁
int STATISTICS_SCENE_FLICKER_NONE 摄像头设备没有检测到当前场景中照明闪烁
int SYNC_MAX_LATENCY_PER_FRAME_CONTROL 每一帧都有立即应用的请求
int SYNC_MAX_LATENCY_UNKNOWN 每个新帧都有一些应用于过去相机设置的请求的子集(可能是整个集合)
int TONEMAP_MODE_CONTRAST_CURVE 使用android.tonemap中指定的色调映射曲线
int TONEMAP_MODE_FAST 高级的伽马映射和颜色增强可能应用,不降低帧率相比原始传感器的输出
int TONEMAP_MODE_GAMMA_VALUE 使用android.tonemap中指定的伽马值进行色调映射
int TONEMAP_MODE_HIGH_QUALITY 将采用高质量的伽玛映射和色彩增强,代价是与原始传感器输出相比可能降低帧率
int TONEMAP_MODE_PRESET_CURVE 使用在android.tonemap.presetCurve中指定的预设置的tonemapping曲线进行色调映射
int TONEMAP_PRESET_CURVE_REC709 Tonemapping曲线由ITU-R BT.709定义
int TONEMAP_PRESET_CURVE_SRGB Tonemapping曲线由sRGB定义

CaptureFailure

来自图像传感器的单个图像捕获失败报告。

如果处理CaptureRequest失败(部分失败或全部失败),则由CameraDevice 生成capturefailure。使用getReason()来确定捕获失败的特性。

接收到CaptureFailure意味着与该帧号关联的元数据被删除——不会产生具有相同帧号的CaptureResult。

常量

Type Name Description
int REASON_ERROR 由于框架中的错误,该帧的CaptureResult 已经被删除
int REASON_FLUSHED 由于应用调用abortCaptures(),捕获失败

Public methods

ReturnType Name Description
long getFrameNumber() 获取与此失败捕获相关联的帧号
int getReason() 确定请求被删除的原因,无论是由于错误还是用户操作
CaptureRequest getRequest() 获取与此失败捕获相关联的请求
int getSequenceId() 取与此失败捕获相关联的序列ID
boolean wasImageCaptured() 确定图像是否从摄像机中捕获

CaptureRequest

从相机设备捕获单个图像所需的一组不变的设置和输出。

包含捕获硬件(传感器、镜头、闪存)、处理pipeline、控制算法和输出缓冲区的配置。还包含要将图像数据发送到此捕获的目标表面的列表。

CaptureRequests可以通过使用CaptureRequest.Builder 实例来创建,通过调用createCaptureRequest(int)获得。

将CaptureRequests传给 capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler) 或者 setRepeatingRequest(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)来从一个相机捕获图像。

每个请求都可以为相机指定目标表面的不同子集,以便将捕获的数据发送给它。请求提交到会话时,请求中使用的所有表面必须是最后调用createCaptureSession(SessionConfiguration)的表面列表的一部分。

例如,用于重复预览的请求可能只包含用于预览的表面SurfaceView 或者 SurfaceTexture,而高分辨率的still capture也将包含为高分辨率JPEG图像配置的ImageReader的表面。

可重处理捕获请求允许一个过去相机捕获的图像送回设备做进一步处理。他可以通过createReprocessCaptureRequest(TotalCaptureResult)创建,并和createReprocessableCaptureSession(InputConfiguration, List, CameraCaptureSession.StateCallback, Handler)创建的重处理捕获会话一起使用。

Fields

Type Name Description
public static final Key<Boolean> BLACK_LEVEL_LOCK black-level补偿是否锁定在当前值上,或者是否可以随意更改
public static finalKey<Integer> COLOR_CORRECTION_ABERRATION_MODE 色差校正算法的运算模式
public static final Key<RggbChannelVector> COLOR_CORRECTION_GAINS 用于白平衡的拜尔原始颜色通道的增益
public static final Key<Integer> COLOR_CORRECTION_MODE 模式控制选择如何将图像数据从传感器的本地颜色转换为线性sRGB颜色
public static final Key<ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM 一个颜色变换矩阵用于从传感器RGB颜色空间转换为输出线性sRGB颜色空间
public static final Key<Integer> CONTROL_AE_ANTIBANDING_MODE 相机设备的自动曝光算法的antibanding补偿的期望设置
public static final Key<Integer> CONTROL_AE_EXPOSURE_COMPENSATION 调整自动曝光(AE)目标图像亮度
public static final Key<Boolean> CONTROL_AE_LOCK 是否自动曝光(AE)目前锁定在其最新计算值
public static final Key<Integer> CONTROL_AE_MODE 相机设备自动曝光的期望模式
public static final Key<Integer> CONTROL_AE_PRECAPTURE_TRIGGER 相机设备在处理此请求时是否会触发预捕获测量序列
public static final Key<MeteringRectangle[]> CONTROL_AE_REGIONS 用于调整自动曝光的计量区域的列表
public static final Key<Range<Integer>> CONTROL_AE_TARGET_FPS_RANGE 自动曝光程序可以调整的帧率范围以保持良好曝光
public static final Key<Integer> CONTROL_AF_MODE 是否当前启用自动对焦(AF),以及设置为什么模式
public static final Key<MeteringRectangle[]> CONTROL_AF_REGIONS 自动对焦测量区域列表
public static final Key<Integer> CONTROL_AF_TRIGGER 这次捕获相机设备是否触发自动对焦
public static final Key<Boolean> CONTROL_AWB_LOCK 自动白平衡是否锁定在它最新计算值
public static final Key<Integer> CONTROL_AWB_MODE 是否自动白平衡(AWB)正在设置颜色转换字段,以及它的光源目标是什么
public static final Key<MeteringRectangle[]> CONTROL_AWB_REGIONS 用于自动白平衡光源估计的计量区域列的表
public static final Key<Integer> CONTROL_CAPTURE_INTENT 帮助相机设备决定最优3A策略
public static final Key<Integer> CONTROL_EFFECT_MODE 应用特殊的颜色效果
public static final Key<Boolean> CONTROL_ENABLE_ZSL 允许相机使能 zero-shutter-lag 模式,android.control.captureIntent == STILL_CAPTURE
public static final Key<Integer> CONTROL_MODE 3A(自动曝光,自动白平衡,自动对焦)控制程序的整体模式
public static final Key<Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST 在获取原始传感器数据后,应用于输出图像的附加灵敏度提升量
public static final Key<Integer> CONTROL_SCENE_MODE 控制当前激活的场景模式
public static final Key<Integer> CONTROL_VIDEO_STABILIZATION_MODE 视频增稳是否激活
public static final Creator<CaptureRequest> CREATOR
public static final Key<Integer> DISTORTION_CORRECTION_MODE 镜头畸变校正块的操作模式
public static final Key<Integer> EDGE_MODE 边缘增强的操作模式
public static final Key<Integer> FLASH_MODE 相机设备闪光灯控制的期望模式
public static final Key<Integer> HOT_PIXEL_MODE 热点校正操作模式
public static final Key<Location> JPEG_GPS_LOCATION 在生成图像GPS元数据时要使用的位置对象
public static final Key<Integer> JPEG_ORIENTATION JPEG图像的旋转
public static final Key<Byte> JPEG_QUALITY 最终JPEG图像的压缩质量
public static final Key<Byte> JPEG_THUMBNAIL_QUALITY JPEG缩略图的压缩质量
public static final Key<Size> JPEG_THUMBNAIL_SIZE 集成JPEG缩略图的分辨率
public static final Key<Float> LENS_APERTURE 期望的镜头孔径尺寸,以透镜焦距与有效孔径的比值为标准
public static final Key<Float> LENS_FILTER_DENSITY 期望的镜头中性密度过滤器设置
public static final Key<Float> LENS_FOCAL_LENGTH 期望的镜头焦距;用于光学变焦
public static final Key<Float> LENS_FOCUS_DISTANCE 从镜头最前部的表面测量到最尖锐焦点的平面的期望距离
public static final Key<Integer> LENS_OPTICAL_STABILIZATION_MODE 设置相机设备在拍照时是否使用光学图像稳定(OIS)
public static final Key<Integer> NOISE_REDUCTION_MODE 降噪算法的模式
public static final Key<Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR 曝光时间增加数量应用于原始输出帧
public static final Key<Rect> SCALER_CROP_REGION 传感器捕获读出的期望区域
public static final Key<Long> SENSOR_EXPOSURE_TIME 每个像素曝光时长
public static final Key<Long> SENSOR_FRAME_DURATION 从帧曝光开始到下一帧曝光的持续时间
public static final Key<Integer> SENSOR_SENSITIVITY 处理前应用于传感器数据的增益量
public static final Key<int[]> SENSOR_TEST_PATTERN_DATA 一个像素[R, G_even, G_odd, B],当android.sensor.testPatternMode是SOLID_COLOR时提供测试图案
public static final Key<Integer> SENSOR_TEST_PATTERN_MODE 当启用时,传感器会发送一个测试图案,而不是从摄像头进行真实曝光
public static final Key<Integer> SHADING_MODE 镜头阴影校正质量
public static final Key<Integer> STATISTICS_FACE_DETECT_MODE 人脸检测单元操作模式
public static final Key<Boolean> STATISTICS_HOT_PIXEL_MAP_MODE 热点图生成操作模式
public static final Key<Integer> STATISTICS_LENS_SHADING_MAP_MODE 相机设备是否在输出结果元数据中输出镜头阴影图
public static final Key<Integer> STATISTICS_OIS_DATA_MODE 用于选择输出结果元数据中是否包含OIS位置信息的控件
public static final Key<TonemapCurve> TONEMAP_CURVE 当android.tonemap.mode是CONTRAST_CURVE时,使用的色调映射/对比度/伽马曲线
public static final Key<Float> TONEMAP_GAMMA 当android.tonemap.mode是GAMMA_VALUE使用的色调曲线
public static final Key<Integer> TONEMAP_MODE 高级别全局对比度/伽马/色调映射控制
public static final Key<Integer> TONEMAP_PRESET_CURVE 当android.tonemap.mode是PRESET_CURVE时使用的色调映射曲线

Public methods

ReturnType Name Description
int describeContents() 描述
boolean equals(Object other) 判断相等
<T> T get(Key<T> key) 获取捕获请求字段值
List<Key<?>> getKeys() 返回map中包含的关键字list
Object getTag() 检索此请求的标记(如果有的话)
int hashCode() 返回对象的hash code值
boolean isReprocess() 确定这是否是一个reprocess capture请求
void writeToParcel(Parcel dest, int flags) 把这个东西压成一团

CaptureRequest.Builder

Public methods

ReturnType Name Description
void addTarget(Surface outputTarget) 为这个请求的目标列表添加一个Surface,Surface必须包含在当前调用createCaptureSession(SessionConfiguration)
CaptureRequest build() 构建一个请求,使用当前的目标Surface和设置
<T> T get(Key<T> key) 获得一个捕获请求字段值
<T> T getPhysicalCameraKey(Key<T> key, String physicalCameraId) 从指定的物理相机获得一个捕获请求字段值
void removeTarget(Surface outputTarget) 从此请求的目标列表中删除一个Surface
<T> void set(Key<T> key, T value) 设置捕获请求字段值
<T> CaptureRequest.Builder setPhysicalCameraKey(Key<T> key, T value, String physicalCameraId) 设置捕获请求字段值
void setTag(Object tag) 设置这个请求的标签

猜你喜欢

转载自blog.csdn.net/huajun998/article/details/80367610