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) | 设置这个请求的标签 |