Most visited

Recently visited

Added in API level 21

CaptureResult

public class CaptureResult
extends CameraMetadata<Key<?>>

java.lang.Object
   ↳ android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureResult.Key<?>>
     ↳ android.hardware.camera2.CaptureResult
Known Direct Subclasses


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

包含捕获硬件(传感器,镜头,闪存)的最终配置的子集,处理管道,控制算法和输出缓冲区。

CaptureResults由产生CameraDevice处理后CaptureRequest 列出的捕获请求的所有属性也可以在捕获结果上查询,以确定用于捕获的最终值。 结果还包括捕获期间有关摄像头设备状态的附加元数据。

并非所有由getAvailableCaptureResultKeys()返回的getAvailableCaptureResultKeys()都必须可用。 一些结果是partial ,不会有每个密钥集。 只有total结果才能保证每个可用的密钥都是由请求启用的。

CaptureResult对象是不可变的。

Summary

Nested classes

class CaptureResult.Key<T>

一个Key用于捕获结果字段查找与get(CaptureResult.Key )

Inherited constants

From class android.hardware.camera2.CameraMetadata

Fields

public static final Key<Boolean> BLACK_LEVEL_LOCK

黑电平补偿是否锁定到其当前值,或者可以自由变化。

public static final Key<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

相机设备的自动曝光算法的抗污染补偿所需的设置。

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<Integer> CONTROL_AE_STATE

自动曝光(AE)算法的当前状态。

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_STATE

自动对焦(AF)算法的当前状态。

public static final Key<Integer> CONTROL_AF_TRIGGER

相机设备是否会为此请求触发自动对焦。

public static final Key<Boolean> CONTROL_AWB_LOCK

自动白平衡(AWB)当前是否锁定到其最新的计算值。

public static final Key<Integer> CONTROL_AWB_MODE

自动白平衡(AWB)是否正在设置色彩转换字段以及其照明目标是什么。

public static final Key<MeteringRectangle[]> CONTROL_AWB_REGIONS

用于自动白平衡光源估计的测光区域列表。

public static final Key<Integer> CONTROL_AWB_STATE

自动白平衡(AWB)算法的当前状态。

public static final Key<Integer> CONTROL_CAPTURE_INTENT

相机设备3A的信息(自动曝光,自动对焦,自动白平衡)关于此拍摄目的的例程,以帮助相机设备决定最佳的3A策略。

public static final Key<Integer> CONTROL_EFFECT_MODE

要应用的特殊颜色效果。

public static final Key<Integer> CONTROL_MODE

3A(自动曝光,自动白平衡,自动对焦)控制程序的整体模式。

public static final Key<Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST

捕获RAW传感器数据后应用于输出图像的附加灵敏度提升量。

public static final Key<Integer> CONTROL_SCENE_MODE

控制哪种场景模式当前处于活动状态。

public static final Key<Integer> CONTROL_VIDEO_STABILIZATION_MODE

视频稳定是否有效。

public static final Key<Integer> EDGE_MODE

边缘增强的操作模式。

public static final Key<Integer> FLASH_MODE

相机设备闪光灯控制的理想模式。

public static final Key<Integer> FLASH_STATE

闪光灯组件的当前状态。

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<Pair<FloatFloat>> LENS_FOCUS_RANGE

清晰焦距(景深)的场景距离范围。

public static final Key<float[]> LENS_INTRINSIC_CALIBRATION

此摄像机设备的固有校准参数。

public static final Key<Integer> LENS_OPTICAL_STABILIZATION_MODE

设置相机设备在拍摄图像时是否使用光学防抖(OIS)。

public static final Key<float[]> LENS_POSE_ROTATION

摄像机相对于传感器坐标系的方向。

public static final Key<float[]> LENS_POSE_TRANSLATION

相机光学中心的位置。

public static final Key<float[]> LENS_RADIAL_DISTORTION

校正系数以校正此摄像机设备的径向和切向镜头失真。

public static final Key<Integer> LENS_STATE

当前镜头状态。

public static final Key<Integer> NOISE_REDUCTION_MODE

降噪算法的操作模式。

public static final Key<Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR

在发送用于重新处理之前,由应用程序处理应用于原始输出帧的曝光时间增加因子的数量。

public static final Key<Byte> REQUEST_PIPELINE_DEPTH

指定框架从暴露到最终完成结果可用于框架时的流水线阶段数。

public static final Key<Rect> SCALER_CROP_REGION

读取该传感器所需的区域以进行捕获。

public static final Key<float[]> SENSOR_DYNAMIC_BLACK_LEVEL

每个彩色滤光片排列(CFA)镶嵌通道的每帧动态黑色电平偏移。

public static final Key<Integer> SENSOR_DYNAMIC_WHITE_LEVEL

传感器为此帧输出的最大原始值。

public static final Key<Long> SENSOR_EXPOSURE_TIME

持续每个像素曝光。

public static final Key<Long> SENSOR_FRAME_DURATION

从帧曝光开始到下一帧曝光开始的持续时间。

public static final Key<Float> SENSOR_GREEN_SPLIT

拜耳绿色渠道之间最差的分歧。

public static final Key<Rational[]> SENSOR_NEUTRAL_COLOR_POINT

捕捉时本机传感器颜色空间中的相机中性色估计值。

public static final Key<Pair[]<DoubleDouble>> SENSOR_NOISE_PROFILE

每个CFA镶嵌通道的噪声模型系数。

public static final Key<Long> SENSOR_ROLLING_SHUTTER_SKEW

第一行曝光开始和最后一行曝光开始之间的持续时间。

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<Long> SENSOR_TIMESTAMP

图像传感器有源阵列第一行曝光开始时间,以纳秒为单位。

public static final Key<Integer> SHADING_MODE

应用于图像数据的镜头阴影校正质量。

public static final Key<Face[]> STATISTICS_FACES

在此捕获中通过相机脸部检测检测到的脸部列表。

public static final Key<Integer> STATISTICS_FACE_DETECT_MODE

面部检测器单元的操作模式。

public static final Key<Point[]> STATISTICS_HOT_PIXEL_MAP

传感器上热/缺陷像素的 (x, y)坐标列表。

public static final Key<Boolean> STATISTICS_HOT_PIXEL_MAP_MODE

生成热像素图的操作模式。

public static final Key<LensShadingMap> STATISTICS_LENS_SHADING_CORRECTION_MAP

着色图是一个低分辨率浮点图,列出了用于校正每个拜耳颜色通道的渐晕的系数。

public static final Key<Integer> STATISTICS_LENS_SHADING_MAP_MODE

相机设备是否将在输出结果元数据中输出镜头阴影贴图。

public static final Key<Integer> STATISTICS_SCENE_FLICKER

摄像机设备估计场景照明照明频率。

public static final Key<TonemapCurve> TONEMAP_CURVE

android.tonemap.mode为CONTRAST_CURVE时使用的色调映射/对比度/伽马曲线。

public static final Key<Float> TONEMAP_GAMMA

android.tonemap.mode为GAMMA_VALUE时使用的 android.tonemap.mode映射曲线

色调映射曲线将被定义为以下公式:* OUT = pow(IN,1.0 / gamma)其中IN和OUT是缩放到范围[0.0,1.0]的输入像素值,pow是功率函数,而gamma是伽玛值由此键指定。

public static final Key<Integer> TONEMAP_MODE

高级全局对比度/伽马/色调映射控制。

public static final Key<Integer> TONEMAP_PRESET_CURVE

android.tonemap.mode为PRESET_CURVE时使用的 android.tonemap.mode映射曲线

色调映射曲线将由指定的标准定义。

Public methods

<T> T get(Key<T> key)

获取捕获结果字段值。

long getFrameNumber()

获取与此结果关联的帧号。

List<Key<?>> getKeys()

返回此映射中包含的键的列表。

CaptureRequest getRequest()

获取与此结果关联的请求。

int getSequenceId()

capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)函数系列返回的此故障的序列号。

Inherited methods

From class android.hardware.camera2.CameraMetadata
From class java.lang.Object

Fields

BLACK_LEVEL_LOCK

Added in API level 21
Key<Boolean> BLACK_LEVEL_LOCK

黑电平补偿是否锁定到其当前值,或者可以自由变化。

黑框电平是否被锁定。 如果捕获请求中的android.blackLevel.lock为ON,则应该为ON,除非其他捕获设置中的更改强制相机设备执行黑电平重设。

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

COLOR_CORRECTION_ABERRATION_MODE

Added in API level 21
Key<Integer> COLOR_CORRECTION_ABERRATION_MODE

色差校正算法的操作模式。

色差(色差)是由于不同波长的光在离开镜头后不能聚焦在同一点上。 该元数据定义了色差校正算法的高级控制,其目的是最小化可能沿着图像中的对象边界发生的色差伪像。

FAST / HIGH_QUALITY都意味着将应用相机设备确定的像差校正。 HIGH_QUALITY模式表示相机设备将使用最高质量的像差校正算法,即使它会降低捕捉速率。 FAST意味着相机设备在应用像差校正时不会降低拍摄速度。

LEGACY设备将始终处于FAST模式。

可能的值:

此设备的可用值:
android.colorCorrection.availableAberrationModes

此密钥可在所有设备上使用。

也可以看看:

COLOR_CORRECTION_GAINS

Added in API level 21
Key<RggbChannelVector> COLOR_CORRECTION_GAINS

获得应用于拜耳原始颜色通道的白平衡。

这些每信道增益是由摄像机装置当请求任一组 android.colorCorrection.mode不是TRANSFORM_MATRIX,或直接由在当该请求的应用 android.colorCorrection.mode是TRANSFORM_MATRIX。

结果元数据中的增益是相机设备实际应用于当前帧的增益。

增益的有效范围因不同设备而异,但保证[1.0,3.0]之间的增益不会被削减。 即使给定的设备允许低于1.0的增益,通常也不建议这样做,因为这可能会产生彩色伪像。

单位 :无 单位增益因子

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

COLOR_CORRECTION_MODE

Added in API level 21
Key<Integer> COLOR_CORRECTION_MODE

模式控制选择图像数据如何从传感器的本地颜色转换为线性sRGB颜色。

当使用android.control.awbMode启用自动白平衡(AWB)时,AWB例程会覆盖此控件。 当禁用AWB时,应用程序将控制颜色映射的执行方式。

我们在下面定义了预期的处理流程。 为了保持设备之间的一致性,TRANSFORM_MATRIX始终是这种情况。

当使用FULL或HIGH_QUALITY时,相机设备可能会执行额外的处理,但 android.colorCorrection.gainsandroid.colorCorrection.transform仍将由相机设备提供(在结果中)并且大致正确。

切换到TRANSFORM_MATRIX并使用从FAST或HIGH_QUALITY提供的数据将产生与前一帧中摄像机设备产生的相同白点的图像。

预期的处理流程如下:

白平衡由两个值编码,一个4通道白平衡增益矢量(应用于拜耳域)和一个3x3色彩转换矩阵(在去马赛克之后应用)。

4通道白平衡增益定义为:

android.colorCorrection.gains = [ R G_even G_odd B ]
 

其中G_even是输出的偶数行上绿色像素的增益, G_odd是奇数行上绿色像素的增益。 对于给定的相机设备实现,这些可能是相同的; 如果相机设备不支持偶数/奇数绿色通道的单独增益,则它将使用G_even值,并在输出结果元数据G_evenG_odd等于G_even

颜色变换的矩阵被定义为9入口矢量:

android.colorCorrection.transform = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
 

其定义了从输入传感器颜色 P_in = [ r g b ]到输出线性sRGB的 P_out = [ r' g' b' ]

颜色如下:

r' = I0r + I1g + I2b
 g' = I3r + I4g + I5b
 b' = I6r + I7g + I8b
 

输入和输出值范围必须匹配。 上溢/下溢值被剪切以适应该范围。

可能的值:

可选 - 在某些设备上该值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

COLOR_CORRECTION_TRANSFORM

Added in API level 21
Key<ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM

用于从传感器RGB色彩空间转换为输出线性sRGB色彩空间的色彩转换矩阵。

当请求 android.colorCorrection.mode不是TRANSFORM_MATRIX时,或者在 android.colorCorrection.mode为TRANSFORM_MATRIX时请求中的应用程序直接通过相机设备设置此矩阵。

在后一种情况下,摄像机设备可能会对矩阵进行四舍五入以解决精度问题; 最后的舍入矩阵应该在这个矩阵结果元数据中报告。 变换应将输出颜色值的大小保持在[0, 1.0]内(假设输入颜色值在标准化范围[0, 1.0] ),否则可能会发生削波。

每个矩阵元素的有效范围在不同设备上有所不同,但保证[-1.5,3.0]内的值不被剪切。

单位 :无 单位比例因子

可选 - 在某些设备上,此值可能为 null

完整功能 - 在 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上都存在

也可以看看:

CONTROL_AE_ANTIBANDING_MODE

Added in API level 21
Key<Integer> CONTROL_AE_ANTIBANDING_MODE

相机设备的自动曝光算法的抗污染补偿所需的设置。

某些类型的照明灯具,如某些荧光灯,以电源频率(60Hz或50Hz,取决于国家)的频率闪烁。 虽然这通常对个人来说不明显,但是摄像机设备可以看到它。 如果相机将其曝光时间设置为错误值,则闪烁可能会在取景器中以闪烁或最终拍摄的图像的形式出现,如图像上的一组可变亮度带。

因此,相机设备的自动曝光程序包括抗染色程序,以确保所选择的曝光值不会导致此类条纹。 曝光时间的选择取决于相机设备可以自动检测到的闪烁速率,或者应用程序使用此控件可以选择预期速率。

给定的相机设备可能不支持抗混模式的所有可能选项。 android.control.aeAvailableAntibandingModes键包含给定摄像头设备的可用模式。

如果在给定的相机设备上可用,则AUTO模式是默认模式。 当AUTO模式不可用时,默认值为50HZ或60HZ,50HZ和60HZ都可用。

如果启用手动曝光控制(通过将android.control.aeModeandroid.control.mode设置为OFF),则此设置无效,并且应用程序必须确保它选择不会导致条带问题的曝光时间。 android.statistics.sceneFlicker密钥可以协助此应用程序。

可能的值:

此设备的可用值:

android.control.aeAvailableAntibandingModes

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AE_EXPOSURE_COMPENSATION

Added in API level 21
Key<Integer> CONTROL_AE_EXPOSURE_COMPENSATION

调整自动曝光(AE)目标图像亮度。

调整以步数计算,步长由 android.control.aeCompensationStep定义,允许的范围由 android.control.aeCompensationRange

例如,如果曝光值(EV)为0.333,则“6”表示曝光补偿为+ 2EV; -3意味着-1 EV的曝光补偿。 一个EV代表图像亮度的两倍。 请注意,此控件仅在android.control.aeMode != OFF时才有效。 即使在android.control.aeLock == true时,此控件也会生效。

如果曝光补偿值发生变化,相机设备可能需要几帧才能到达新请求的曝光目标。 在此期间, android.control.aeState字段将处于SEARCHING状态。 一旦达到新的曝光目标, android.control.aeState将从SEARCHING变为CONVERGED,LOCKED(如果启用了AE锁定)或FLASH_REQUIRED(如果场景太暗而不能拍摄)。

单位 :补偿步骤

有效值的范围:
android.control.aeCompensationRange

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AE_LOCK

Added in API level 21
Key<Boolean> CONTROL_AE_LOCK

自动曝光(AE)当前是否锁定到其最新的计算值。

设置为 true (开)时,AE算法将锁定到其最新参数,并且不会更改曝光设置,直到锁定设置为 false (OFF)。

请注意,即使AE锁定,如果 android.control.aeMode为ON_AUTO_FLASH / ON_ALWAYS_FLASH / ON_AUTO_FLASH_REDEYE,则可能会触发闪光灯。

当更改 android.control.aeExposureCompensation ,即使自动曝光锁定为开启,照相机设备仍将调整其曝光值。

如果自动曝光已被锁定,触发AE预捕获(请参阅android.control.aePrecaptureTrigger ),相机设备将不会更改曝光时间( android.sensor.exposureTime )和灵敏度( android.sensor.sensitivity )参数。 如果android.control.aeMode为ON_AUTO_FLASH / ON_AUTO_FLASH_REDEYE且场景太暗,则可能会触发闪光灯。 如果android.control.aeMode为ON_ALWAYS_FLASH,则场景可能会曝光过度。 同样,当AE已经锁定时,AE预捕获触发器CANCEL不起作用。

当AE预捕获序列被触发时,如果在预捕测量序列期间AE由摄像设备在内部锁定,AE解锁将无法解锁AE。换句话说,提交带AE解锁的请求对正在进行的预捕获计量序列没有影响。 否则,预捕获测光序列永远不会成功执行AE锁定始终设置为false的预览请求序列。

由于相机设备具有一系列正在进行的请求,因此锁定的设置不一定与从相机设备接收到的最新捕捉结果中存在的设置相对应,因为甚至可能在之前发生了额外的捕捉和AE更新结果被送出。 如果应用程序在自动和手动控制之间切换,并希望在切换过程中消除闪烁,建议执行以下步骤:

  1. Starting in auto-AE mode:
  2. Lock AE
  3. Wait for the first result to be output that has the AE locked
  4. Copy exposure settings from that result into a request, set the request to manual AE
  5. Submit the capture request, proceed to run manual AE as desired.

有关AE锁相关状态转换的详细信息,请参阅 android.control.aeState

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AE_MODE

Added in API level 21
Key<Integer> CONTROL_AE_MODE

相机设备自动曝光程序的所需模式。

此控件仅在 android.control.mode为自动时有效。

当设置为任何的ON模式,相机设备的自动曝光程序被使能,重写应用程序的选择的曝光时间,传感器的灵敏度,和帧持续时间( android.sensor.exposureTimeandroid.sensor.sensitivity ,和android.sensor.frameDuration )。 如果选择了其中一种闪光灯模式,则照相机设备的闪光灯控制装置也将被覆盖。

只有相机设备具有闪光灯组件时才可使用闪光灯模式( android.flash.info.availabletrue )。

如果需要闪光灯TORCH模式,则此字段必须设置为ON或OFF,并且 android.flash.mode设置为TORCH。

当设置为任何ON模式时,相机设备自动曝光程序为给定捕捉的重写字段选择的值将在CaptureResult中提供。

可能的值:

此设备的可用值:
android.control.aeAvailableModes

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AE_PRECAPTURE_TRIGGER

Added in API level 21
Key<Integer> CONTROL_AE_PRECAPTURE_TRIGGER

相机设备在处理该请求时是否会触发预捕获计量序列。

该条目通常设置为IDLE,或根本不包含在请求设置中。 当包含并设置为开始时,相机设备将触发自动曝光(AE)预捕测量序列。

当设置为取消时,相机设备将取消任何激活的预捕测量触发,并返回到其初始AE状态。 如果预捕获测光序列已经完成,并且相机设备已隐式锁定了AE以便随后进行静态捕捉,则CANCEL触发器将解锁AE并返回其初始AE状态。

在启动高质量静态捕捉以进行最终测光决定之前,应该触发预捕获序列,并且在启用闪光灯时启动预捕捉闪光脉冲以估计场景亮度并要求最终捕捉闪光灯功率。

通常情况下,只有一个请求才会将此条目设置为START,并且应用程序应该等到序列完成后才能开始新的请求。

当预捕获测光序列完成后,相机设备可以在内部锁定自动曝光程序,以便能够准确曝光后续的静态图像( android.control.captureIntent == STILL_CAPTURE )。 对于这种情况,如果未提交后续静态捕捉,AE可能无法恢复正常扫描。 为确保AE例程重新开始正常扫描,如果应用程序决定在precapture序列完成后不提交静态捕获请求,则应用程序应提交android.control.aeLock == true的请求,然后请求android.control.aeLock == false 或者,对于API级别23或更新的设备,如果应用程序在AE预捕获触发后未提交静态捕获请求,则可以使用CANCEL来解锁相机设备内部锁定的AE。 请注意,CANCEL已添加到API级别23中,并且不得用于具有较早API级别的设备。

自动曝光(AE)预捕获触发的确切效果取决于当前AE模式和状态; 有关AE预捕获状态转换细节,请参阅android.control.aeState

在LEGACY级别的设备上,预捕获触发器不受支持; 捕获高分辨率JPEG图像将在高分辨率捕捉之前自动触发预捕获序列,包括可能触发预捕获闪光。

允许同时使用预捕获触发器和自动对焦触发器android.control.afTrigger 然而,由于这些触发器经常需要自动对焦和自动曝光例程之间的协作(例如,可能需要启用焦点扫描),所以摄像机设备可以延迟作用于稍后的触发,直到先前的触发已经被完全处理。 例如,这可能导致触发和更改为android.control.aeState之间的更长间隔, android.control.aeState指示预捕获序列的开始。

如果预取和自动对焦触发都在相同请求中激活,则摄像机设备将按照该设备的最佳顺序完成它们。

可能的值:

可选 - 某些设备上的此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

CONTROL_AE_REGIONS

Added in API level 21
Key<MeteringRectangle[]> CONTROL_AE_REGIONS

用于自动曝光调整的测光区域列表。

如果 android.control.maxRegionsAe为0, android.control.maxRegionsAe可用。否则将始终存在。

设备支持的最大区域数由值 android.control.maxRegionsAe

坐标系基于有源像素阵列,其中(0,0)是有源像素阵列中的左上像素,并且( android.sensor.info.activeArraySize android.sensor.info.activeArraySize -1,android.sensor.info.activeArraySize。高-1)是右下像素有源像素阵列。

权重必须在[0, 1000]之内,并且表示该区域中每个像素的权重。 这意味着与较小面积相同重量的大型计量区域将对计量结果产生更大的影响。 测光区域可以部分重叠,相机设备将在重叠区域添加权重。

权重是相对于其他曝光测量区域的权重的,所以如果只使用一个区域,所有非零权重将具有相同的效果。 忽略0重量的区域。

如果所有地区的重量都为0,则相机设备不需要使用特定的测光区域。

如果测光区域在捕捉结果元数据中返回使用的android.scaler.cropRegion之外,相机设备将忽略裁切区域之外的部分,并仅输出相交矩形作为结果元数据中的测光区域。 如果该区域完全位于裁剪区域之外,它将被忽略,并且不会在结果元数据中报告。

单位android.sensor.info.activeArraySize内的像素坐标

有效值的范围:
坐标必须介于[(0,0), (width, height))之间的android.sensor.info.activeArraySize之间

可选 - 在某些设备上该值可能为 null

也可以看看:

CONTROL_AE_STATE

Added in API level 21
Key<Integer> CONTROL_AE_STATE

自动曝光(AE)算法的当前状态。

在AE模式之间切换或启用AE模式( android.control.aeMode )总是会将AE状态重置为INACTIVE。 类似地,如果android.control.mode == USE_SCENE_MODE所有算法状态重置为INACTIVE,则在android.control.modeandroid.control.sceneMode之间切换。

如果状态转换表允许,相机设备可以在两个结果之间进行多个状态转换。 例如:INACTIVE可能永远不会在结果中看到。

结果中的状态是此图像的状态(与此图像同步):如果AE状态变为CONVERGED,则与此结果相关的图像数据应该很好使用。

以下是不同AE模式的状态转换表。

State Transition Cause New State Notes
INACTIVE INACTIVE Camera device auto exposure algorithm is disabled

android.control.aeMode是AE_MODE_ON_ *时:

State Transition Cause New State Notes
INACTIVE Camera device initiates AE scan SEARCHING Values changing
INACTIVE android.control.aeLock is ON LOCKED Values locked
SEARCHING Camera device finishes AE scan CONVERGED Good values, not changing
SEARCHING Camera device finishes AE scan FLASH_REQUIRED Converged but too dark w/o flash
SEARCHING android.control.aeLock is ON LOCKED Values locked
CONVERGED Camera device initiates AE scan SEARCHING Values changing
CONVERGED android.control.aeLock is ON LOCKED Values locked
FLASH_REQUIRED Camera device initiates AE scan SEARCHING Values changing
FLASH_REQUIRED android.control.aeLock is ON LOCKED Values locked
LOCKED android.control.aeLock is OFF SEARCHING Values not good after unlock
LOCKED android.control.aeLock is OFF CONVERGED Values good after unlock
LOCKED android.control.aeLock is OFF FLASH_REQUIRED Exposure good, but too dark
PRECAPTURE Sequence done. android.control.aeLock is OFF CONVERGED Ready for high-quality capture
PRECAPTURE Sequence done. android.control.aeLock is ON LOCKED Ready for high-quality capture
LOCKED aeLock is ON and aePrecaptureTrigger is START LOCKED Precapture trigger is ignored when AE is already locked
LOCKED aeLock is ON and aePrecaptureTrigger is CANCEL LOCKED Precapture trigger is ignored when AE is already locked
Any state (excluding LOCKED) android.control.aePrecaptureTrigger is START PRECAPTURE Start AE precapture metering sequence
Any state (excluding LOCKED) android.control.aePrecaptureTrigger is CANCEL INACTIVE Currently active precapture metering sequence is canceled

对于上表,摄像机设备可以跳过报告在没有应用干预的情况下发生的任何状态改变(即,模式切换,触发,锁定)。 任何可以以这种方式跳过的状态都称为瞬态。

例如,对于上述AE模式(AE_MODE_ON_ *),除了上表中列出的状态转换之外,相机设备在两个结果之间跳过一个或多个瞬态状态也是合法的。 示例见下表:

State Transition Cause New State Notes
INACTIVE Camera device finished AE scan CONVERGED Values are already good, transient states are skipped by camera device.
Any state (excluding LOCKED) android.control.aePrecaptureTrigger is START, sequence done FLASH_REQUIRED Converged but too dark w/o flash after a precapture sequence, transient states are skipped by camera device.
Any state (excluding LOCKED) android.control.aePrecaptureTrigger is START, sequence done CONVERGED Converged after a precapture sequence, transient states are skipped by camera device.
Any state (excluding LOCKED) android.control.aePrecaptureTrigger is CANCEL, converged FLASH_REQUIRED Converged but too dark w/o flash after a precapture sequence is canceled, transient states are skipped by camera device.
Any state (excluding LOCKED) android.control.aePrecaptureTrigger is CANCEL, converged CONVERGED Converged after a precapture sequenceis canceled, transient states are skipped by camera device.
CONVERGED Camera device finished AE scan FLASH_REQUIRED Converged but too dark w/o flash after a new scan, transient states are skipped by camera device.
FLASH_REQUIRED Camera device finished AE scan CONVERGED Converged after a new scan, transient states are skipped by camera device.

可能的值:

可选 - 在某些设备上,此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

CONTROL_AE_TARGET_FPS_RANGE

Added in API level 21
Key<Range<Integer>> CONTROL_AE_TARGET_FPS_RANGE

自动曝光程序可以调整捕捉帧率以保持良好曝光的范围。

只限制自动曝光(AE)算法,而不是手动控制 android.sensor.exposureTimeandroid.sensor.frameDuration

单位 :每秒帧数(FPS)

有效值的范围:
android.control.aeAvailableTargetFpsRanges任何条目

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AF_MODE

Added in API level 21
Key<Integer> CONTROL_AF_MODE

是否启用自动对焦(AF),以及设置为何种模式。

仅当android.control.mode = AUTO并且镜头不是固定焦点(即android.lens.info.minimumFocusDistance > 0 )时才有效。 另请注意,当android.control.aeMode关闭时,AF的行为取决于设备。 建议在将android.control.aeMode设置为OFF之前使用android.control.afTrigger来锁定AF,或者在AE关闭时将AF模式设置为OFF。

如果镜头由相机设备自动对焦算法控制,则相机设备将在结果元数据中报告 android.control.afState中的当前AF状态。

可能的值:

此设备的可用值:
android.control.afAvailableModes

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AF_REGIONS

Added in API level 21
Key<MeteringRectangle[]> CONTROL_AF_REGIONS

用于自动对焦的测光区域列表。

如果 android.control.maxRegionsAf为0, android.control.maxRegionsAf可用。否则将始终存在。

设备支持的最大聚焦区域数量由值 android.control.maxRegionsAf确定。

的坐标系是基于有源像素阵列上,以(0,0)作为有源像素阵列中的左上角的像素,以及( android.sensor.info.activeArraySize .WIDTH - 1, android.sensor.info.activeArraySize .height - 1)是在右下像素有源像素阵列。

权重必须在[0, 1000]之内,并且表示该区域中每个像素的权重。 这意味着与较小面积相同重量的大型计量区域将对计量结果产生更大的影响。 测光区域可以部分重叠,相机设备将在重叠区域添加权重。

权重与其他测量区域的权重有关,所以如果只使用一个区域,则所有非零权重将具有相同的效果。 忽略0重量的区域。

如果所有地区的重量都为0,则相机设备不需要使用特定的测光区域。

如果测光区域在捕捉结果元数据中返回使用的android.scaler.cropRegion之外,摄像机设备将忽略裁切区域之外的区域,并仅输出相交矩形作为结果元数据中的测光区域。 如果该区域完全位于裁剪区域之外,它将被忽略,并且不会在结果元数据中报告。

单位android.sensor.info.activeArraySize内的像素坐标

有效值的范围:
坐标必须在[(0,0), (width, height))之间android.sensor.info.activeArraySize

可选 - 在某些设备上此值可能为 null

也可以看看:

CONTROL_AF_STATE

Added in API level 21
Key<Integer> CONTROL_AF_STATE

自动对焦(AF)算法的当前状态。

在自动对焦模式( android.control.afMode )之间切换时,始终会将自动对焦状态重置为非激活状态。 同样,如果android.control.mode == USE_SCENE_MODE所有算法状态重置为INACTIVE,则在android.control.modeandroid.control.sceneMode之间切换。

如果状态转换表允许,相机设备可以在两个结果之间进行多个状态转换。 例如:INACTIVE可能永远不会在结果中看到。

结果中的状态是此图像的状态(与此图像同步):如果AF状态变为FOCUSED,则与此结果相关的图像数据应该很清晰。

以下是不同AF模式的状态转换表。

android.control.afMode是AF_MODE_OFF或AF_MODE_EDOF时:

State Transition Cause New State Notes
INACTIVE INACTIVE Never changes

android.control.afMode是AF_MODE_AUTO或AF_MODE_MACRO时:

State Transition Cause New State Notes
INACTIVE AF_TRIGGER ACTIVE_SCAN Start AF sweep, Lens now moving
ACTIVE_SCAN AF sweep done FOCUSED_LOCKED Focused, Lens now locked
ACTIVE_SCAN AF sweep done NOT_FOCUSED_LOCKED Not focused, Lens now locked
ACTIVE_SCAN AF_CANCEL INACTIVE Cancel/reset AF, Lens now locked
FOCUSED_LOCKED AF_CANCEL INACTIVE Cancel/reset AF
FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN Start new sweep, Lens now moving
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE Cancel/reset AF
NOT_FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN Start new sweep, Lens now moving
Any state Mode change INACTIVE

对于上表,摄像机设备可以跳过报告在没有应用干预的情况下发生的任何状态改变(即,模式切换,触发,锁定)。 任何可以以这种方式跳过的状态都称为瞬态。

例如,对于这些AF模式(AF_MODE_AUTO和AF_MODE_MACRO),除了上表中列出的状态转换之外,摄像机设备在两个结果之间跳过一个或多个瞬态状态也是合法的。 示例见下表:

State Transition Cause New State Notes
INACTIVE AF_TRIGGER FOCUSED_LOCKED Focus is already good or good after a scan, lens is now locked.
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED Focus failed after a scan, lens is now locked.
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED Focus is already good or good after a scan, lens is now locked.
NOT_FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED Focus is good after a scan, lens is not locked.

android.control.afMode是AF_MODE_CONTINUOUS_VIDEO时:

State Transition Cause New State Notes
INACTIVE Camera device initiates new scan PASSIVE_SCAN Start AF scan, Lens now moving
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED AF state query, Lens now locked
PASSIVE_SCAN Camera device completes current scan PASSIVE_FOCUSED End AF scan, Lens now locked
PASSIVE_SCAN Camera device fails current scan PASSIVE_UNFOCUSED End AF scan, Lens now locked
PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED Immediate transition, if focus is good. Lens now locked
PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED Immediate transition, if focus is bad. Lens now locked
PASSIVE_SCAN AF_CANCEL INACTIVE Reset lens position, Lens now locked
PASSIVE_FOCUSED Camera device initiates new scan PASSIVE_SCAN Start AF scan, Lens now moving
PASSIVE_UNFOCUSED Camera device initiates new scan PASSIVE_SCAN Start AF scan, Lens now moving
PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED Immediate transition, lens now locked
PASSIVE_UNFOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED Immediate transition, lens now locked
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED No effect
FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED No effect
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan

android.control.afMode是AF_MODE_CONTINUOUS_PICTURE时:

State Transition Cause New State Notes
INACTIVE Camera device initiates new scan PASSIVE_SCAN Start AF scan, Lens now moving
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED AF state query, Lens now locked
PASSIVE_SCAN Camera device completes current scan PASSIVE_FOCUSED End AF scan, Lens now locked
PASSIVE_SCAN Camera device fails current scan PASSIVE_UNFOCUSED End AF scan, Lens now locked
PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED Eventual transition once the focus is good. Lens now locked
PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED Eventual transition if cannot find focus. Lens now locked
PASSIVE_SCAN AF_CANCEL INACTIVE Reset lens position, Lens now locked
PASSIVE_FOCUSED Camera device initiates new scan PASSIVE_SCAN Start AF scan, Lens now moving
PASSIVE_UNFOCUSED Camera device initiates new scan PASSIVE_SCAN Start AF scan, Lens now moving
PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED Immediate trans. Lens now locked
PASSIVE_UNFOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED Immediate trans. Lens now locked
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED No effect
FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED No effect
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan

在AF_MODE_CONTINUOUS_ *(CAF模式)和AF_MODE_AUTO / AF_MODE_MACRO(自动模式)之间切换时,相机设备可能会跳过初始INACTIVE或PASSIVE_SCAN状态。 当模式切换请求中包含触发器时,将在请求中新模式的上下文中评估触发器。 示例见下表:

State Transition Cause New State Notes
any state CAF-->AUTO mode switch INACTIVE Mode switch without trigger, initial state must be INACTIVE
any state CAF-->AUTO mode switch with AF_TRIGGER trigger-reachable states from INACTIVE Mode switch with trigger, INACTIVE is skipped
any state AUTO-->CAF mode switch passively reachable states from INACTIVE Mode switch without trigger, passive transient state is skipped

可能的值:

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AF_TRIGGER

Added in API level 21
Key<Integer> CONTROL_AF_TRIGGER

相机设备是否会为此请求触发自动对焦。

该条目通常设置为IDLE,或根本不包含在请求设置中。

当包含并设置为START时,相机设备将触发自动对焦算法。 如果禁用了自动对焦,则此触发器不起作用。

设置为取消时,相机设备将取消任何激活的触发,并返回其初始AF状态。

通常,应用程序应将此条目设置为START或CANCEL,以便仅进行一次捕获,然后将其返回到IDLE(或根本不设置)。 指定连续多次捕捉的开始意味着反复重新开始AF操作。

有关每种自动对焦模式的触发方式,请参阅 android.control.afState

允许同时使用自动对焦触发器和预捕获触发器android.control.aePrecaptureTrigger 然而,由于这些触发器经常需要自动对焦和自动曝光例程之间的协作(例如,可能需要启用焦点扫描),所以摄像机设备可以延迟作用于稍后的触发,直到先前的触发已经被完全处理。 例如,这可能会导致触发器和android.control.afState更改之间的间隔变android.control.afState

可能的值:

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AWB_LOCK

Added in API level 21
Key<Boolean> CONTROL_AWB_LOCK

自动白平衡(AWB)当前是否锁定到其最新的计算值。

当设置为 true (ON)时,AWB算法被锁定到其最新参数,并且不会更改色彩平衡设置,直到锁定设置为 false (OFF)。

由于相机设备具有流水线中的请求,因此锁定的设置不一定对应于从相机设备接收到的最新捕捉结果中存在的设置,因为甚至可能之前发生了附加捕捉和AWB更新结果被送出。 如果应用程序在自动和手动控制之间切换,并希望在切换过程中消除闪烁,建议执行以下步骤:

  1. Starting in auto-AWB mode:
  2. Lock AWB
  3. Wait for the first result to be output that has the AWB locked
  4. Copy AWB settings from that result into a request, set the request to manual AWB
  5. Submit the capture request, proceed to run manual AWB as desired.

请注意,AWB锁仅在android.control.awbMode处于AUTO模式时才有意义; 在其他模式下,AWB已经被固定为特定设置。

一些LEGACY设备可能不支持ON; 该值将被覆盖为OFF。

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AWB_MODE

Added in API level 21
Key<Integer> CONTROL_AWB_MODE

自动白平衡(AWB)是否正在设置色彩转换字段以及其照明目标是什么。

此控件仅在 android.control.mode为AUTO时有效。

当设置为ON模式下,相机设备的自动白平衡程序启用,重写应用程序的选择android.colorCorrection.transformandroid.colorCorrection.gainsandroid.colorCorrection.mode 请注意,当android.control.aeMode为OFF时,AWB的行为取决于设备。 在将AE模式设置为OFF之前,建议使用android.control.awbLock将AWB模式设置为OFF或锁定AWB。

当设置为关闭模式时,相机设备的自动白平衡例程被禁用。 应用手动控制由白平衡android.colorCorrection.transformandroid.colorCorrection.gainsandroid.colorCorrection.mode

设置为其他模式时,相机设备的自动白平衡例程将被禁用。 相机设备使用每个特定的照明目标进行白平衡调整。 该应用程序对价值android.colorCorrection.transformandroid.colorCorrection.gainsandroid.colorCorrection.mode被忽略。

可能的值:

此设备的可用值:
android.control.awbAvailableModes

此密钥可在所有设备上使用。

也可以看看:

CONTROL_AWB_REGIONS

Added in API level 21
Key<MeteringRectangle[]> CONTROL_AWB_REGIONS

用于自动白平衡光源估计的测光区域列表。

如果 android.control.maxRegionsAwb为0, android.control.maxRegionsAwb可用。否则将始终存在。

设备支持的最大区域数由值 android.control.maxRegionsAwb确定。

的坐标系是基于有源像素阵列上,以(0,0)作为有源像素阵列中的左上角的像素,以及( android.sensor.info.activeArraySize .WIDTH - 1, android.sensor.info.activeArraySize .height - 1)是在右下像素有源像素阵列。

权重必须在0到1000之间,并且表示该区域中每个像素的权重。 这意味着与较小面积相同重量的大型计量区域将对计量结果产生更大的影响。 测光区域可以部分重叠,相机设备将在重叠区域添加权重。

权重与其他白平衡测量区域的权重有关,因此如果仅使用一个区域,则所有非零权重将具有相同的效果。 忽略0重量的区域。

如果所有地区的重量都为0,则相机设备不需要使用特定的测光区域。

如果测光区域在捕捉结果元数据中返回使用的android.scaler.cropRegion之外,相机设备将忽略裁切区域之外的部分,并仅输出相交矩形作为结果元数据中的测光区域。 如果该区域完全位于裁剪区域之外,它将被忽略,并且不会在结果元数据中报告。

单位android.sensor.info.activeArraySize内的像素坐标

有效值的范围:
坐标必须在[(0,0), (width, height))之间android.sensor.info.activeArraySize

可选 - 某些设备上的此值可能为 null

也可以看看:

CONTROL_AWB_STATE

Added in API level 21
Key<Integer> CONTROL_AWB_STATE

自动白平衡(AWB)算法的当前状态。

在AWB模式之间切换( android.control.awbMode )总是会将AWB状态重置为INACTIVE。 同样,如果android.control.mode == USE_SCENE_MODE所有算法状态重置为INACTIVE,则在android.control.modeandroid.control.sceneMode之间切换。

如果状态转换表允许,相机设备可以在两个结果之间进行多个状态转换。 所以INACTIVE可能永远不会在结果中看到。

结果中的状态是此图像的状态(与此图像同步):如果AWB状态变为CONVERGED,则与此结果相关的图像数据应该很好用。

以下是不同AWB模式的状态转换表。

android.control.awbMode != AWB_MODE_AUTO

State Transition Cause New State Notes
INACTIVE INACTIVE Camera device auto white balance algorithm is disabled

android.control.awbMode是AWB_MODE_AUTO时:

State Transition Cause New State Notes
INACTIVE Camera device initiates AWB scan SEARCHING Values changing
INACTIVE android.control.awbLock is ON LOCKED Values locked
SEARCHING Camera device finishes AWB scan CONVERGED Good values, not changing
SEARCHING android.control.awbLock is ON LOCKED Values locked
CONVERGED Camera device initiates AWB scan SEARCHING Values changing
CONVERGED android.control.awbLock is ON LOCKED Values locked
LOCKED android.control.awbLock is OFF SEARCHING Values not good after unlock

对于上表,摄像机设备可以跳过报告在没有应用干预的情况下发生的任何状态改变(即,模式切换,触发,锁定)。 任何可以以这种方式跳过的状态都称为瞬态。

例如,对于此AWB模式(AWB_MODE_AUTO),除上表中列出的状态转换外,相机设备在两个结果之间跳过一个或多个瞬态也是合法的。 示例见下表:

State Transition Cause New State Notes
INACTIVE Camera device finished AWB scan CONVERGED Values are already good, transient states are skipped by camera device.
LOCKED android.control.awbLock is OFF CONVERGED Values good after unlock, transient states are skipped by camera device.

可能的值:

可选 - 在某些设备上,此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

CONTROL_CAPTURE_INTENT

Added in API level 21
Key<Integer> CONTROL_CAPTURE_INTENT

相机设备3A的信息(自动曝光,自动对焦,自动白平衡)关于此拍摄目的的例程,以帮助相机设备决定最佳的3A策略。

该控制(MANUAL除外)仅在 android.control.mode != OFF和任何3A例程处于活动状态时才有效。

如果android.request.availableCapabilities包含PRIVATE_REPROCESSING或YUV_REPROCESSING,将支持ZERO_SHUTTER_LAG。 如果android.request.availableCapabilities包含MANUAL_SENSOR,则将支持MANUAL。 其他意图值始终受支持。

可能的值:

此密钥可在所有设备上使用。

也可以看看:

CONTROL_EFFECT_MODE

Added in API level 21
Key<Integer> CONTROL_EFFECT_MODE

要应用的特殊颜色效果。

设置此模式时,相机设备生成的图像将应用颜色效果。 这些色彩效果的解释和实现留给相机设备的实现者,并且不应该依赖于在所有设备中一致(或存在)。

可能的值:

此设备的可用值:
android.control.availableEffects

此密钥可在所有设备上使用。

也可以看看:

CONTROL_MODE

Added in API level 21
Key<Integer> CONTROL_MODE

3A(自动曝光,自动白平衡,自动对焦)控制程序的整体模式。

这是一个顶级3A控制开关。 设置为OFF时,相机设备的所有3A控制均被禁用。 应用程序必须自行设置捕获参数的字段。

当设置为AUTO时,android.control。*中的各个算法控件有效,例如 android.control.afMode

当设置为USE_SCENE_MODE时,android.control。*中的各个控件大多被禁用,并且相机设备按照自己的意愿实现场景模式设置之一(例如ACTION,SUNSET或PARTY)。 摄像机设备场景模式3A设置由capture results提供。

设置为OFF_KEEP_STATE时,它与OFF模式类似,唯一的区别是相机设备不会使用背景3A统计信息更新,就像从未捕获此帧一样。 该模式可用于应用程序不希望3A手动控制捕获影响后续自动3A捕获结果的情况。

可能的值:

此设备的可用值:
android.control.availableModes

此密钥可在所有设备上使用。

也可以看看:

CONTROL_POST_RAW_SENSITIVITY_BOOST

Added in API level 24
Key<Integer> CONTROL_POST_RAW_SENSITIVITY_BOOST

捕获RAW传感器数据后应用于输出图像的附加灵敏度提升量。

在捕捉传感器RAW图像后,某些相机设备在相机处理流水线中支持额外的数字灵敏度提升。 这种提升将应用于YUV / JPEG格式的输出图像,但不会对RAW_SENSOR,RAW10,RAW12或RAW_OPAQUE等RAW输出格式产生影响。

对于不支持任何RAW格式输出的设备,该密钥将为null 对于支持RAW格式输出的设备,该键始终存在,如果设备不支持后期RAW灵敏度提升,则会在此键中列出100

如果相机设备无法应用所请求的精确提升,它会将提升降至最接近的支持值。 输出捕捉结果中将使用最终提升值。

对于支持后期RAW灵敏度提升的设备,此类设备的YUV / JPEG输出图像的总灵敏度为 android.sensor.sensitivity * android.control.postRawSensitivityBoost / 100格式图像的灵敏度始终为 android.sensor.sensitivity

此控件仅在android.control.aeModeandroid.control.mode设置为OFF时有效; 否则自动曝光算法将覆盖此值。

单位 :ISO算术单位,与 android.sensor.sensitivity相同

有效值的范围:
android.control.postRawSensitivityBoostRange

可选 - 在某些设备上,此值可能为 null

也可以看看:

CONTROL_SCENE_MODE

Added in API level 21
Key<Integer> CONTROL_SCENE_MODE

控制哪种场景模式当前处于活动状态。

场景模式是针对特定条件和拍摄设置进行优化的自定义相机模式。

这是android.control.mode == USE_SCENE_MODE时激活的模式。 除了FACE_PRIORITY,这些模式将禁用android.control.aeModeandroid.control.awbMode ,并android.control.afMode ,同时在使用。

这些场景模式的解释和实现留给相机设备的实现者。 他们的行为在所有设备上都不一致,并且任何给定的设备可能只实现这些模式的一个子集。

可能的值:

此设备的可用值:
android.control.availableSceneModes

此密钥可在所有设备上使用。

也可以看看:

CONTROL_VIDEO_STABILIZATION_MODE

Added in API level 21
Key<Integer> CONTROL_VIDEO_STABILIZATION_MODE

视频稳定是否有效。

视频稳定会自动变换摄像机中的图像,以便稳定连续帧之间的运动。

如果启用,视频稳定可以修改 android.scaler.cropRegion以保持视频流稳定。

在不同的视频稳定模式之间切换可能需要几个帧才能初始化,相机设备将在捕捉结果元数据中报告当前模式。 例如,当请求“开”模式时,前几个捕捉结果中的视频稳定模式可能仍为“关”,初始化完成后它将变为“开”。

另外,并非所有记录尺寸或帧速率都可以被支持稳定的设备支持。 如果记录分辨率小于或等于1920 x 1080(宽度小于或等于1920,高度小于或等于1080),则可以保证以MediaRecorder或MediaCodec为目标的输出稳定;记录帧速率小于或等于30fps。 在其他尺寸下,如果记录输出不稳定,或者没有可稳定的输出表面类型,则CaptureResult android.control.videoStabilizationMode字段将返回OFF。

如果摄像设备同时支持此模式和OIS( android.lens.opticalStabilizationMode ),则打开这两个模式可能会产生不希望的交互,因此建议不要同时启用这两种模式。

可能的值:

此密钥可在所有设备上使用。

也可以看看:

EDGE_MODE

Added in API level 21
Key<Integer> EDGE_MODE

边缘增强的操作模式。

边缘增强功能可提高拍摄图像的清晰度和细节。 OFF表示相机设备不会应用增强功能。

FAST / HIGH_QUALITY都意味着将应用相机设备确定的增强。 HIGH_QUALITY模式表示相机设备将使用最高质量的增强算法,即使它会降低捕捉速率。 FAST意味着相机设备在应用边缘增强时不会降低捕捉速度。 如果边缘增强会减慢捕获速率,FAST可能与OFF相同。 每个输出流都会应用相似的增强量。

ZERO_SHUTTER_LAG旨在用于在预览期间保持高分辨率图像的连续循环缓冲区并在用户触发时将来自该缓冲区的图像重新处理为最终采集的应用程序。 在此模式下,相机设备会将边缘增强应用于低分辨率流(低于最大记录分辨率)以最大化预览质量,但不会将边缘增强应用于高分辨率流,因为如果需要,以后会对其进行重新处理。

对于YUV_REPROCESSING,这些FAST / HIGH_QUALITY模式都意味着相机设备将分别应用FAST / HIGH_QUALITY YUV域边缘增强。 如果已设置,摄像机设备可根据android.reprocess.effectiveExposureFactor调整其内部边缘增强参数以获得最佳图像质量。

可能的值:

此设备的可用值:
android.edge.availableEdgeModes

可选 - 在某些设备上,此值可能为 null

完整功能 - 在 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上都存在

也可以看看:

FLASH_MODE

Added in API level 21
Key<Integer> FLASH_MODE

相机设备闪光灯控制的理想模式。

此控件仅在闪光灯可用时有效( android.flash.info.available == true )。

使用此控件时,必须将android.control.aeMode设置为ON或OFF。 否则,相机设备自动曝光相关的闪光控制(ON_AUTO_FLASH,ON_ALWAYS_FLASH或ON_AUTO_FLASH_REDEYE)将覆盖此控件。

设置为OFF时,相机设备将不会为此拍摄启动闪光灯。

设置为SINGLE时,无论相机设备的自动曝光例程结果如何,相机设备都会闪光。 当用于静止拍摄的情况下,该控制应与自动曝光(AE)预拍测光顺序( android.control.aePrecaptureTrigger )一起使用,否则图像可能会曝光不正确。

设置为TORCH时,闪光灯将持续点亮。 此模式可用于预览,自动对焦辅助,静态拍摄或视频录制等用例。

捕获结果元数据中的闪存状态将由 android.flash.state报告。

可能的值:

此密钥可在所有设备上使用。

也可以看看:

FLASH_STATE

Added in API level 21
Key<Integer> FLASH_STATE

闪光灯组件的当前状态。

当相机设备没有闪光灯装置时(即android.flash.info.available == false ),此状态将始终为无效。 其他状态表示当前的闪光灯状态。

在某些情况下,这可以在LEGACY设备上使用:

在所有其他情况下,LEGACY设备将无法使用该状态(即它将是 null )。

可能的值:

可选 - 在某些设备上,此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

HOT_PIXEL_MODE

Added in API level 21
Key<Integer> HOT_PIXEL_MODE

热像素校正的操作模式。

热像素校正插值出或去除不能准确测量入射光的像素(例如,粘在任意值或过度敏感的像素)。

可能的值:

此设备的可用值:
android.hotPixel.availableHotPixelModes

可选 - 在某些设备上该值可能为 null

也可以看看:

JPEG_GPS_LOCATION

Added in API level 21
Key<Location> JPEG_GPS_LOCATION

生成图像GPS元数据时使用的位置对象。

在请求中设置位置对象将把位置的GPS坐标包括在根据请求捕获的任何JPEG图像中。 任何接收JPEG图像的人都可以查看这些坐标。

此密钥可在所有设备上使用。

JPEG_ORIENTATION

Added in API level 21
Key<Integer> JPEG_ORIENTATION

JPEG图像的方向。

相对于相机的方向,顺时针旋转的角度(以度为单位),JPEG图片需要旋转,以便直视。

相机设备可以将此值编码为JPEG EXIF标头,或旋转图像数据以匹配此方向。 当图像数据旋转时,缩略图数据也会旋转。

请注意,此方向与摄像机传感器的方向有关,由 android.sensor.orientation给出。

要从Android传感器API提供的设备方向转换,可以使用以下示例代码:

private int getJpegOrientation(CameraCharacteristics c, int deviceOrientation) {
     if (deviceOrientation == android.view.OrientationEventListener.ORIENTATION_UNKNOWN) return 0;
     int sensorOrientation = c.get(CameraCharacteristics.SENSOR_ORIENTATION);

     // Round device orientation to a multiple of 90
     deviceOrientation = (deviceOrientation + 45) / 90 * 90;

     // Reverse device orientation for front-facing cameras
     boolean facingFront = c.get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT;
     if (facingFront) deviceOrientation = -deviceOrientation;

     // Calculate desired JPEG orientation relative to camera orientation to make
     // the image upright relative to the device orientation
     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;

     return jpegOrientation;
 }
 

单位 :90度的倍数

有效值的范围:
0,90,180,270

此密钥可在所有设备上使用。

也可以看看:

JPEG_QUALITY

Added in API level 21
Key<Byte> JPEG_QUALITY

最终JPEG图像的压缩质量。

85-95是典型的使用范围。

有效值的范围:
1-100; 质量越高,质量越好

此密钥可在所有设备上使用。

JPEG_THUMBNAIL_QUALITY

Added in API level 21
Key<Byte> JPEG_THUMBNAIL_QUALITY

JPEG缩略图的压缩质量。

有效值的范围:
1-100; 质量越高,质量越好

此密钥可在所有设备上使用。

JPEG_THUMBNAIL_SIZE

Added in API level 21
Key<Size> JPEG_THUMBNAIL_SIZE

嵌入式JPEG缩略图的分辨率。

设置为(0,0)值时,JPEG EXIF将不包含缩略图,但捕获的JPEG仍然是有效的图像。

为获得最佳效果,在发出JPEG图像请求时,所选缩略图大小应与主JPEG输出具有相同的纵横比。

如果缩略图图像宽高比与JPEG主图像宽高比不同,则相机设备通过从主图像裁剪缩略图来创建缩略图。 例如,如果主图像的宽高比为4:3,则缩略图图像的宽高比为16:9,主图像将垂直裁剪(信箱)以生成缩略图图像。 纵横比不同时,缩略图图像始终比主图像具有更小的视场(FOV)。

当请求非零度的 android.jpeg.orientation时,相机设备将通过以下方式之一处理缩略图旋转:

  • Set the EXIF orientation flag and keep jpeg and thumbnail image data unrotated.
  • Rotate the jpeg and thumbnail image data and not set EXIF orientation flag. In this case, LIMITED or FULL hardware level devices will report rotated thumnail size in capture result, so the width and height will be interchanged if 90 or 270 degree orientation is requested. LEGACY device will always report unrotated thumbnail size.

有效值的范围:
android.jpeg.availableThumbnailSizes

此密钥可在所有设备上使用。

也可以看看:

LENS_APERTURE

Added in API level 21
Key<Float> LENS_APERTURE

所需的镜头光圈尺寸,作为镜头焦距与有效光圈直径的比率。

仅在具有可变光圈镜头的相机设备上支持设置此值。

当这种支撑和 android.control.aeMode为OFF时,这可被设置连同 android.sensor.exposureTimeandroid.sensor.sensitivityandroid.sensor.frameDuration实现手动曝光控制。

要求的光圈值可能需要几帧才能达到要求的值; 相机设备将在光圈变化时报告捕捉结果元数据中的当前(中间)光圈大小。 当光圈仍在变化时, android.lens.state将被设置为MOVING。

当这被支持并且 android.control.aeMode是开启模式之一时,这将被相机设备自动曝光算法覆盖,重写的值然后在相应的结果中被提供给用户。

单位 :f数(f / N)

有效值的范围:
android.lens.info.availableApertures

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

LENS_FILTER_DENSITY

Added in API level 21
Key<Float> LENS_FILTER_DENSITY

镜头中性密度滤镜的所需设置。

大多数相机设备不支持此控件。

通常使用透镜滤光片来降低传感器所接触的光量(以EV的步长测量)。 如此处所使用的,EV步骤是标准对数表示,其是非负的,并且与光照到传感器的光量成反比。 例如,将此值设置为0将不会导致入射光的减少,将其设置为2意味着将滤波器设置为将入射光减少两次(允许传感器的先前光量的1/4) )。

在镜头滤镜密度变为所需值之前可能需要几个画面。 虽然滤波器密度仍在变化,但android.lens.state将设置为MOVING。

单位 :曝光值(EV)

有效值的范围:
android.lens.info.availableFilterDensities

可选 - 在某些设备上,该值可能为 null

完整功能 - 在 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上都存在

也可以看看:

LENS_FOCAL_LENGTH

Added in API level 21
Key<Float> LENS_FOCAL_LENGTH

所需的镜头焦距; 用于光学变焦。

此设置控制相机设备镜头的物理焦距。 改变焦距会改变相机设备的视野,并且通常用于光学变焦。

android.lens.focusDistanceandroid.lens.aperture一样,此设置不会立即应用,并且可能需要几帧才能将镜头更改为所需的焦距。 虽然焦距仍在变化,但android.lens.state将设置为MOVING。

大多数设备不支持光学变焦。

单位 :毫米

有效值的范围:
android.lens.info.availableFocalLengths

此密钥可在所有设备上使用。

也可以看看:

LENS_FOCUS_DISTANCE

Added in API level 21
Key<Float> LENS_FOCUS_DISTANCE

从镜头最前表面测量的最清晰焦距平面的所需距离。

对于定焦相机应该为零

单位 :详情请参阅 android.lens.info.focusDistanceCalibration

有效值的范围:
> = 0

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

LENS_FOCUS_RANGE

Added in API level 21
Key<Pair<FloatFloat>> LENS_FOCUS_RANGE

清晰焦距(景深)的场景距离范围。

如果变焦不支持,仍然可以报告固定的景深范围

单位 :屈光度的一对焦点距离:(近,远); 详情请参阅android.lens.info.focusDistanceCalibration

有效值的范围:
> = 0

可选 - 在某些设备上该值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

LENS_INTRINSIC_CALIBRATION

Added in API level 23
Key<float[]> LENS_INTRINSIC_CALIBRATION

此摄像机设备的固有校准参数。

描述从以相机为中心的三维坐标到传感器像素坐标的转换的五个校准参数:

[f_x, f_y, c_x, c_y, s]
 

其中 f_xf_y是水平和垂直焦距, [c_x, c_y]是光轴的位置,而 s是传感器平面未与镜头平面对齐的歪斜参数。

这些通常在变换矩阵K中使用:

K = [ f_x,   s, c_x,
        0, f_y, c_y,
        0    0,   1 ]
 

然后可以将其与相机姿态旋转 R和平移 t (分别为 android.lens.poseRotationandroid.lens.poseTranslation )组合以计算从世界坐标到像素坐标的完整变换:

P = [ K 0   * [ R t
      0 1 ]     0 1 ]
 

并且 p_w是世界坐标系中的点,并且 p_s是相机有效像素阵列坐标系中的点,并且具有包括由z:

 p_h = (x_h, y_h, z_h) = P p_w
 p_s = p_h / z_h
 

因此 [x_s, y_s]是世界点的像素坐标, z_s = 1w_s是像素坐标中视差(深度)的度量。

请注意,此变换的坐标系是android.sensor.info.preCorrectionActiveArraySize系统,其中(0,0)是preCorrectionActiveArraySize矩形的左上角。 一旦将姿态和内部校准变换应用于世界点,则需要应用android.lens.radialDistortion变换,并将结果调整为android.sensor.info.activeArraySize坐标系(其中(0, 0)是activeArraySize矩形的左上角),以将确定已处理(非RAW)输出缓冲区的世界点的最终像素坐标。

单位android.sensor.info.preCorrectionActiveArraySize坐标系中的像素。

可选 - 在某些设备上,此值可能为 null

也可以看看:

LENS_OPTICAL_STABILIZATION_MODE

Added in API level 21
Key<Integer> LENS_OPTICAL_STABILIZATION_MODE

设置相机设备在拍摄图像时是否使用光学防抖(OIS)。

OIS用于补偿捕捉过程中摄像机微小移动造成的运动模糊。 与数字图像稳定( android.control.videoStabilizationMode )不同,OIS利用机械元件来稳定照相机传感器,从而在照相机震动变得明显之前允许更长的曝光时间。

在不同的光学稳定模式之间切换可能需要几帧来初始化,相机设备将在捕捉结果元数据中报告当前模式。 例如,当请求“ON”模式时,前几个捕捉结果中的光学稳定模式可能仍为“OFF”,初始化完成后它将变为“ON”。

如果相机设备同时支持OIS和数字图像稳定( android.control.videoStabilizationMode ),则打开这两种模式可能会产生不希望的交互作用,因此建议不要同时启用这两种模式。

并非所有设备都支持OIS; 有关可用的控件,请参阅android.lens.info.availableOpticalStabilization

可能的值:

此设备的可用值:
android.lens.info.availableOpticalStabilization

可选 - 在某些设备上,此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

LENS_POSE_ROTATION

Added in API level 23
Key<float[]> LENS_POSE_ROTATION

摄像机相对于传感器坐标系的方向。

四个系数描述从Android传感器坐标系到相机对齐坐标系的四元数旋转,其中X轴与图像传感器的长边对齐,Y轴与图像的短边对齐传感器,并且Z轴与传感器的光轴对齐。

为了从四元数系数 (x,y,z,w)转换成旋转轴 (a_x, a_y, a_z)和旋转量 theta ,可以使用以下公式:

 theta = 2 * acos(w)
 a_x = x / sin(theta/2)
 a_y = y / sin(theta/2)
 a_z = z / sin(theta/2)
 

要创建应用由此四元数定义的旋转的3x3旋转矩阵,可以使用以下矩阵:

R = [ 1 - 2y^2 - 2z^2,       2xy - 2zw,       2xz + 2yw,
            2xy + 2zw, 1 - 2x^2 - 2z^2,       2yz - 2xw,
            2xz - 2yw,       2yz + 2xw, 1 - 2x^2 - 2y^2 ]
 

然后可以使用该矩阵将旋转应用于列向量点

p' = Rp

其中 p位于设备传感器坐标系中,而 p'位于面向相机的坐标系中。

单位 :四元数系数

可选 - 在某些设备上,此值可能为 null

LENS_POSE_TRANSLATION

Added in API level 23
Key<float[]> LENS_POSE_TRANSLATION

相机光学中心的位置。

相机设备的透镜的光学中心的位置,作为三维矢量(x,y,z) ,相对于在相同的方向,因为这相机面向最大相机装置的光学中心,在Android sensor coordinate axes 请注意,只有轴定义与传感器坐标系共享,但不是原点。

如果此设备是具有给定面的最大或唯一相机设备,则此位置将为(0, 0, 0) ; 一个镜头光学中心位于主传感器沿+ X轴(从用户的角度来看,右侧)3厘米的摄像机设备将报告(0.03, 0, 0)

要在面向相同方向的两台摄像机之间转换像素坐标,首先必须校正源摄像机android.lens.radialDistortion 则源相机android.lens.intrinsicCalibration需要由被施加,随后android.lens.poseRotation源照相机的,相对于目的相机源相机的平移,所述android.lens.poseRotation目的地的相机,和最后的逆android.lens.intrinsicCalibration目的地相机。 这在目标相机像素坐标中获得了径向无失真坐标。

为了将其与目标摄像机的实际图像进行比较,目标摄像机图像需要在比较或采样之前对径向失真进行校正。

单位 :米

可选 - 在某些设备上,此值可能为 null

也可以看看:

LENS_RADIAL_DISTORTION

Added in API level 23
Key<float[]> LENS_RADIAL_DISTORTION

校正系数以校正此摄像机设备的径向和切向镜头失真。

四个径向畸变系数 [kappa_0, kappa_1, kappa_2, kappa_3]和两个切向畸变系数 [kappa_4, kappa_5] ,可用于校正镜头的几何失真与映射方程:

 x_c = x_i * ( kappa_0 + kappa_1 * r^2 + kappa_2 * r^4 + kappa_3 * r^6 ) +
        kappa_4 * (2 * x_i * y_i) + kappa_5 * ( r^2 + 2 * x_i^2 )
  y_c = y_i * ( kappa_0 + kappa_1 * r^2 + kappa_2 * r^4 + kappa_3 * r^6 ) +
        kappa_5 * (2 * x_i * y_i) + kappa_4 * ( r^2 + 2 * y_i^2 )
 

这里, [x_c, y_c]是输入图像中与坐标 [x_i, y_i]处的校正图像中的像素值对应的样本的坐标:

 correctedImage(x_i, y_i) = sample_at(x_c, y_c, inputImage)
 

像素坐标在与android.lens.intrinsicCalibration校准字段相关的归一化坐标系中定义。 [x_i, y_i][x_c, y_c]具有(0,0)在镜片的光学中心[c_x, c_y] x和y坐标的最大值在距离光学中心较远的边缘处归一化为1,因此两个尺寸的范围均为-1 <= x <= 1

最后, r表示从光学中心,径向距离 r^2 = x_i^2 + y_i^2 ,其大小是因此不大于 |r| <= sqrt(2)

所使用的失真模型是Brown-Conrady模型。

单位 :无 单位系数。

可选 - 在某些设备上该值可能为 null

也可以看看:

LENS_STATE

Added in API level 21
Key<Integer> LENS_STATE

当前镜头状态。

对于透镜参数android.lens.focalLengthandroid.lens.focusDistanceandroid.lens.filterDensityandroid.lens.aperture ,请求改变时,它们可能需要几个帧以达到所要求的值。 该状态表示镜头参数的当前状态。

当状态为STATIONARY时,镜头参数不变。 这可能是因为参数都是固定的,或者因为镜头有足够的时间来达到最近请求的值。 如果所有这些镜头参数对于相机设备都不可更改,如下所列:

那么这个状态将永远是STATIONARY。

当状态为MOVING时,表示至少有一个镜头参数正在改变。

可能的值:

可选 - 在某些设备上,此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

NOISE_REDUCTION_MODE

Added in API level 21
Key<Integer> NOISE_REDUCTION_MODE

降噪算法的操作模式。

降噪算法试图通过消除捕捉过程中添加的过多噪声来提高图像质量,特别是在黑暗条件下。

OFF表示相机设备不会对RAW和YUV区域应用降噪。

MINIMAL意味着仅启用传感器原始域基本降噪功能,以去除去马赛克或其他处理工件。 对于YUV_REPROCESSING,MINIMAL与OFF相同。 该模式是可选的,可能不被所有设备支持。 应用程序在使用前应检查android.noiseReduction.availableNoiseReductionModes

FAST / HIGH_QUALITY都意味着将应用相机设备确定的噪声过滤。 HIGH_QUALITY模式表示相机设备将使用最高质量的噪音过滤算法,即使它会降低捕捉速度。 FAST意味着相机设备在应用噪声过滤时不会降低捕捉速度。 如果MINIMAL列出,FAST可能与MINIMAL相同,或者如果有任何噪声过滤会减慢捕获速率,则FAST与OFF相同。 每个输出流都会应用相似的增强量。

ZERO_SHUTTER_LAG旨在用于在预览期间保持高分辨率图像的连续循环缓冲区并在用户触发时将来自该缓冲区的图像重新处理为最终采集的应用程序。 在此模式下,摄像机设备将降噪功能应用于低分辨率流(低于最大记录分辨率)以最大化预览质量,但不会将降噪应用于高分辨率流,因为如果需要,以后会对其进行重新处理。

对于YUV_REPROCESSING,这些FAST / HIGH_QUALITY模式都意味着相机设备将分别应用FAST / HIGH_QUALITY YUV域降噪。 如果已设置,则相机设备可根据android.reprocess.effectiveExposureFactor调整降噪参数以获得最佳图像质量。

可能的值:

此设备的可用值:
android.noiseReduction.availableNoiseReductionModes

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

REPROCESS_EFFECTIVE_EXPOSURE_FACTOR

Added in API level 23
Key<Float> REPROCESS_EFFECTIVE_EXPOSURE_FACTOR

在发送用于重新处理之前,由应用程序处理应用于原始输出帧的曝光时间增加因子的数量。

这是可选的,并且如果相机设备支持YUV_REPROCESSING功能( android.request.availableCapabilities包含YUV_REPROCESSING),将会被支持。

对于一些YUV再处理用例,应用程序可以选择过滤原始输出帧,以有效地将噪声降低到与以更长曝光时间捕获的帧相同的水平。 更具体地说,假设以S的灵敏度和T的曝光时间捕获原始捕获的图像,相机设备中的模型是图像中的噪声量将近似于如果原始捕获参数分别是S / effectiveExposureFactor和T * effectiveExposureFactor的曝光时间,而不是S和T的敏感度。 如果捕捉的图像在被发送用于再处理之前由应用程序处理,则应用程序可能已经使用图像处理算法和/或多帧图像融合来减少应用处理的图像(输入图像)中的噪声。 通过使用effectiveExposureFactor控件,应用程序可以向应用程序处理的图像传达相机设备实际噪声级别的改进。 利用这些信息,摄像机设备可以选择合适的降噪和边缘增强参数,以避免将过度的降噪( android.noiseReduction.mode )和不足的边缘增强( android.edge.mode )应用于重新处理的帧。

例如,对于多帧图像融合用例,应用程序可以将多个输出帧融合到一起用于再处理的最终帧。 当N图像融合成1幅图像进行再处理时,曝光时间增加因子可以达到N的平方根(基于简单的光子散粒噪声模型)。 相机设备将相应地调整再处理降噪和边缘增强参数以产生最佳质量的图像。

这是相对因素,1.0表示应用程序未以影响其有效曝光时间的方式处理输入缓冲区。

该控制仅对YUV再处理捕捉请求有效。 对于降噪再处理,仅在android.noiseReduction.mode != OFFandroid.noiseReduction.mode != OFF 同样,对于边缘增强重新处理,它仅在android.edge.mode != OFFandroid.edge.mode != OFF

单位 :相对曝光时间增加系数。

有效值的范围:
> = 1.0

可选 - 在某些设备上该值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有相机设备上都存在

也可以看看:

REQUEST_PIPELINE_DEPTH

Added in API level 21
Key<Byte> REQUEST_PIPELINE_DEPTH

指定框架从暴露到最终完成结果可用于框架时的流水线阶段数。

根据请求中使用的设置以及配置了哪些流,数据可能会经历较少的处理,并且跳过一些流水线阶段。

详情请参阅 android.request.pipelineMaxDepth

有效值的范围:
<= android.request.pipelineMaxDepth

此密钥可在所有设备上使用。

也可以看看:

SCALER_CROP_REGION

Added in API level 21
Key<Rect> SCALER_CROP_REGION

读取该传感器所需的区域以进行捕获。

这个控制可以用来实现数字变焦。

裁剪区域坐标系基于 android.sensor.info.activeArraySize ,其中 (0, 0)是传感器活动阵列的左上角。

输出流使用这个矩形产生它们的输出,如果需要的话裁剪到一个较小的区域,以保持流的纵横比,然后缩放传感器输入以匹配输出的配置分辨率。

裁剪区域在RAW之后应用于其他色彩空间(例如YUV)转换。 由于原始流(例如RAW16)没有转换阶段,因此它们不可裁剪。 作物区域将被原始流忽略。

对于非原始流,将执行任何附加的每个流的裁剪以最大化流的最终像素区域。

例如,如果裁剪区域设置为4:3宽高比,则4:3流将使用确切的裁剪区域。 16:9溪流将进一步垂直耕种(信箱)。

相反,如果裁剪区域设置为16:9,那么4:3输出将水平裁剪(邮筒),16:9码流将完全匹配。 这些额外的作物将集中在作物区域内。

裁剪区域的宽度和高度不能分别设置为小于 floor( activeArraySize.width / android.scaler.availableMaxDigitalZoom )floor( activeArraySize.height / android.scaler.availableMaxDigitalZoom )

相机设备可以调整裁剪区域以考虑到舍入和其他硬件要求; 所使用的最终裁剪区域将包含在输出捕捉结果中。

单位 :相对于 android.sensor.info.activeArraySize像素坐标

此密钥可在所有设备上使用。

也可以看看:

SENSOR_DYNAMIC_BLACK_LEVEL

Added in API level 24
Key<float[]> SENSOR_DYNAMIC_BLACK_LEVEL

每个彩色滤光片排列(CFA)镶嵌通道的每帧动态黑色电平偏移。

相机传感器的黑色水平可能因不同的拍摄设置而发生显着变化(例如android.sensor.sensitivity )。 android.sensor.blackLevelPattern报告的固定黑电平可能太不准确,不能以每帧为单位表示实际值。 摄像机设备内部流水线依靠可靠的黑电平值来适当地处理原始图像。 为了获得最佳图像质量,相机设备可以选择基于光学屏蔽黑色区域( android.sensor.opticalBlackRegions )或其内部模型来估计每帧黑色电平值。

此键报告摄像机设备估计摄像机传感器中每个CFA镶嵌通道的每帧零光源值。 android.sensor.blackLevelPattern只能表示实际黑电平值的粗略近似值。 该值是相机设备内部图像处理流水线中使用的黑色水平,通常比固定黑色水平值更精确。 但是,由于它们是相机设备的估计值,因此它们可能不如从android.sensor.opticalBlackRegions报告的光学黑色像素计算的黑色电平值那么精确。

这些值的顺序与为CFA布局键列出的通道的顺序相同(请参阅 android.sensor.info.colorFilterArrangement ),即给出的第n个值与CFA中列出的第n个颜色通道的黑色电平偏移相对应。

如果 android.sensor.opticalBlackRegions可用或者相机设备通过 getAvailableCaptureResultKeys()此密钥,此密钥将可用。

有效值的范围:
> = 0。

可选 - 在某些设备上,此值可能为 null

也可以看看:

SENSOR_DYNAMIC_WHITE_LEVEL

Added in API level 24
Key<Integer> SENSOR_DYNAMIC_WHITE_LEVEL

传感器为此帧输出的最大原始值。

由于android.sensor.blackLevelPattern可能会因不同的拍摄设置(例如android.sensor.sensitivity )而发生变化,因此白色电平会相应改变。 此键类似于android.sensor.info.whiteLevel ,但指定每个帧的摄像机设备估计的白色电平。

如果 android.sensor.opticalBlackRegions可用或相机设备通过 getAvailableCaptureRequestKeys()此密钥,此密钥将可用。

有效值的范围:
> = 0

可选 - 在某些设备上,此值可能为 null

也可以看看:

SENSOR_EXPOSURE_TIME

Added in API level 21
Key<Long> SENSOR_EXPOSURE_TIME

持续每个像素曝光。

如果传感器无法公开此确切的持续时间,则会缩短暴露于最近可能值的持续时间(而不是长时间暴露)。 最终曝光时间将在输出捕捉结果中可用。

此控件仅在android.control.aeModeandroid.control.mode设置为OFF时有效; 否则自动曝光算法将覆盖此值。

单位 :纳秒

有效值的范围:
android.sensor.info.exposureTimeRange

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

SENSOR_FRAME_DURATION

Added in API level 21
Key<Long> SENSOR_FRAME_DURATION

从帧曝光开始到下一帧曝光开始的持续时间。

相机子系统可以支持的最大帧速率是许多因素的函数:

  • Requested resolutions of output image streams
  • Availability of binning / skipping modes on the imager
  • The bandwidth of the imager interface
  • The bandwidth of the various ISP processing blocks

由于这些因素在不同的ISP和传感器之间可能会有很大的差异,因此摄像机抽象试图用尽可能简单的模型来表示带宽限制。

所呈现的模型具有以下特征:

  • The image sensor is always configured to output the smallest resolution possible given the application's requested output stream sizes. The smallest resolution is defined as being at least as large as the largest requested output stream size; the camera pipeline must never digitally upsample sensor data when the crop region covers the whole sensor. In general, this means that if only small output stream resolutions are configured, the sensor can provide a higher frame rate.
  • Since any request may use any or all the currently configured output streams, the sensor and ISP must be configured to support scaling a single capture to all the streams at the same time. This means the camera pipeline must be ready to produce the largest requested output size without any delay. Therefore, the overall frame rate of a given configured stream set is governed only by the largest requested stream resolution.
  • Using more than one output stream in a request does not affect the frame duration.
  • Certain format-streams may need to do additional background processing before data is consumed/produced by that stream. These processors can run concurrently to the rest of the camera pipeline, but cannot process more than 1 capture at a time.

考虑到上述模型,应用程序的必要信息通过android.scaler.streamConfigurationMap字段使用getOutputMinFrameDuration(int, Size) 这些用于确定给定流配置可能的最大帧速率/最小帧持续时间。

具体来说,应用程序可以使用以下规则来确定它可以从相机设备请求的最小帧持续时间:

  1. Let the set of currently configured input/output streams be called S.
  2. Find the minimum frame durations for each stream in S, by looking it up in android.scaler.streamConfigurationMap using getOutputMinFrameDuration(int, Size) (with its respective size/format). Let this set of frame durations be called F.
  3. For any given request R, the minimum frame duration allowed for R is the maximum out of all values in F. Let the streams used in R be called S_r.

如果S_r中的流没有任何停滞时间(使用其相应的大小/格式在getOutputStallDuration(int, Size)列出),则F的帧持续时间决定应用程序将使用R作为重复请求时将获得的稳态帧速率。 让这种特殊的请求被称为Rsimple

一个重复请求 Rsimple可以通过单个捕获新请求 Rstall (其具有至少一个具有非零延迟时间的使用中的流) 偶尔交错,并且如果 Rstall具有相同的最小帧持续时间,则这不会导致帧如果以前的 Rstall所有缓冲区已经交付, Rstall造成速率损失。

有关拖延的更多详细信息,请参阅 getOutputStallDuration(int, Size)

此控件仅在android.control.aeModeandroid.control.mode设置为OFF时有效; 否则自动曝光算法将覆盖此值。

单位 :纳秒

有效值的范围:
android.sensor.info.maxFrameDurationandroid.scaler.streamConfigurationMap 持续时间限制为max(duration, exposureTime + overhead)

可选 - 在某些设备上该值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

SENSOR_GREEN_SPLIT

Added in API level 21
Key<Float> SENSOR_GREEN_SPLIT

拜耳绿色渠道之间最差的分歧。

此值是传感器彩色滤光片阵列中红色和蓝色行中拜耳绿色通道之间最差情况分割的估计值。

绿色分割计算如下:

  1. A 5x5 pixel (or larger) window W within the active sensor array is chosen. The term 'pixel' here is taken to mean a group of 4 Bayer mosaic channels (R, Gr, Gb, B). The location and size of the window chosen is implementation defined, and should be chosen to provide a green split estimate that is both representative of the entire image for this camera sensor, and can be calculated quickly.
  2. The arithmetic mean of the green channels from the red rows (mean_Gr) within W is computed.
  3. The arithmetic mean of the green channels from the blue rows (mean_Gb) within W is computed.
  4. The maximum ratio R of the two means is computed as follows: R = max((mean_Gr + 1)/(mean_Gb + 1), (mean_Gb + 1)/(mean_Gr + 1))

比率R是针对此属性报告的绿色分裂散度,其表示绿色通道在镶嵌图案中的差异程度。 此值通常用于确定去马赛克时对绿色镶嵌通道的处理情况。

绿色分割值可粗略地解释如下:

  • R < 1.03 is a negligible split (<3% divergence).
  • 1.20 <= R >= 1.03 will require some software correction to avoid demosaic errors (3-20% divergence).
  • R > 1.20 will require strong software correction to produce a usuable image (>20% divergence).

有效值的范围:

> = 0

可选 - 在某些设备上,此值可能为 null

SENSOR_NEUTRAL_COLOR_POINT

Added in API level 21
Key<Rational[]> SENSOR_NEUTRAL_COLOR_POINT

捕捉时本机传感器颜色空间中的相机中性色估计值。

该值给出在本机传感器颜色空间中编码为RGB值的中性色点。 中性色点指示当前估计的场景照明的白点。 在处理原始传感器数据时,它可用于在所提供的颜色变换之间进行插值。

值的顺序是R,G,B; 其中R在最低指数。

可选 - 在某些设备上,此值可能为 null

SENSOR_NOISE_PROFILE

Added in API level 21
Key<Pair[]<DoubleDouble>> SENSOR_NOISE_PROFILE

每个CFA镶嵌通道的噪声模型系数。

该键包含对应于传感器放大(S)和传感器读出噪声(O)的每个CFA通道的两个噪声模型系数。 这些按每个通道的系数对以与为CFA布局键列出的通道相同的顺序给出(请参阅android.sensor.info.colorFilterArrangement )。 这表示为Pair <Double,Double>的阵列,其中索引n处的Pair的第一个成员是S系数,第二个成员是CFA中第n个颜色通道的O系数。

这些系数用于双参数噪声模型,用于描述每个CFA通道图像中存在的噪声量。 这里使用的噪声模型是:

N(x)= sqrt(Sx + O)

其中x表示归一化到范围[0,1]的CFA信道的记录信号,并且S和O是该信道的噪声模型系数。

噪声模型的更详细的描述可以在NoiseProfile标签的Adobe DNG规范中找到。

可选 - 在某些设备上,此值可能为 null

也可以看看:

SENSOR_ROLLING_SHUTTER_SKEW

Added in API level 21
Key<Long> SENSOR_ROLLING_SHUTTER_SKEW

第一行曝光开始和最后一行曝光开始之间的持续时间。

这是第一行和最后一行曝光开始时间之间的曝光时间偏差。 第一行和最后一行是android.sensor.info.activeArraySize的第一行和最后一行。

对于使用卷帘的典型相机传感器,这也相当于帧读取时间。

单位 :纳秒

有效值的范围:
> = 0和< getOutputMinFrameDuration(int, Size)

可选 - 在某些设备上,此值可能为 null

能力有限 - 在 android.info.supportedHardwareLevel密钥中报告至少 HARDWARE_LEVEL_LIMITED设备的所有摄像头设备上都存在

也可以看看:

SENSOR_SENSITIVITY

Added in API level 21
Key<Integer> SENSOR_SENSITIVITY

处理前应用于传感器数据的增益量。

灵敏度是ISO 12232:2006中定义的标准ISO灵敏度值。

灵敏度必须在 android.sensor.info.sensitivityRange之内,如果小于 android.sensor.maxAnalogSensitivity ,相机设备保证仅使用模拟放大来应用增益。

如果相机设备无法应用所请求的确切灵敏度,则会将增益降至最接近的支持值。 最终使用的灵敏度将在输出捕捉结果中可用。

此控件仅在android.control.aeModeandroid.control.mode设置为OFF时有效; 否则自动曝光算法将覆盖此值。

单位 :ISO算术单位

有效值的范围:
android.sensor.info.sensitivityRange

可选 - 在某些设备上该值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

SENSOR_TEST_PATTERN_DATA

Added in API level 21
Key<int[]> SENSOR_TEST_PATTERN_DATA

像素 [R, G_even, G_odd, B]时供给测试图案 android.sensor.testPatternMode是SOLID_COLOR。

每个颜色通道都被视为一个无符号的32位整数。 然后摄像机设备使用与Bayer原始传感器输出中有多少位对应的最高有效X位。

例如,具有RAW10 Bayer输出的传感器将使用来自每个颜色通道的10个最高有效位。

可选 - 在某些设备上,此值可能为 null

也可以看看:

SENSOR_TEST_PATTERN_MODE

Added in API level 21
Key<Integer> SENSOR_TEST_PATTERN_MODE

启用后,传感器将发送测试图案,而不是从相机进行实际曝光。

启用测试模式时,android.sensor。*指定的所有手动传感器控件都将被忽略。 所有其他控件应该可以正常工作。

例如,如果启用了手动闪光灯,则仍会发生闪光灯闪光(并且测试图案保持不变,因为闪光灯实际上不会影响它)。

默认为OFF。

可能的值:

此设备的可用值:
android.sensor.availableTestPatternModes

可选 - 在某些设备上,此值可能为 null

也可以看看:

SENSOR_TIMESTAMP

Added in API level 21
Key<Long> SENSOR_TIMESTAMP

图像传感器有源阵列第一行曝光开始时间,以纳秒为单位。

所有图像缓冲区中都包含时间戳,这些缓冲区是为同一个捕获而生成的,并且在所有输出中都相同。

android.sensor.info.timestampSource == UNKNOWN时,时间戳测量自未指定起点以来的时间,并且是单调递增的。 可以将它们与来自同一相机设备的其他拍摄时间戳进行比较,但不能保证与任何其他时间源相比。

android.sensor.info.timestampSource == REALTIME时,时间戳在与 elapsedRealtimeNanos()相同的时基中测量时间,并且它们可以与其他使用该基的子系统的其他时间戳进行比较。

对于重新处理,时间戳将与输入图像的曝光开始相匹配,即 the timestamp中用于创建重新处理捕获请求的the timestamp

单位 :纳秒

有效值的范围:
> 0

此密钥可在所有设备上使用。

也可以看看:

SHADING_MODE

Added in API level 21
Key<Integer> SHADING_MODE

应用于图像数据的镜头阴影校正质量。

当设置为关闭模式时,相机设备将不会应用镜头阴影校正,如果android.statistics.lensShadingMapMode == ON将提供身份镜头阴影地图数据。 例如,对于尺寸为[ 4, 3 ]镜头着色贴图,此情况下的输出android.statistics.lensShadingCorrectionMap将为如下所示的标识贴图:

[ 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
  1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
  1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
  1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
  1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
  1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0 ]
 

设置为其他模式时,相机设备将应用镜头阴影校正。 应用程序可以通过将android.statistics.lensShadingMapMode设置为ON来请求镜头阴影地图数据,然后相机设备将在android.statistics.lensShadingCorrectionMap提供镜头阴影地图数据; 返回的阴影贴图数据将是相机设备为此捕获请求应用的数据。

阴影贴图数据可能取决于自动曝光(AE)和AWB统计数据,因此地图数据的可靠性可能受到AE和AWB算法的影响。 当AE和AWB处于自动模式( android.control.aeMode != OFF和android.control.awbMode != OFF)时,为获得最佳效果,建议在使用返回的阴影贴图数据之前,应用程序等待AE和AWB收敛。

可能的值:

此设备的可用值:
android.shading.availableModes

可选 - 在某些设备上该值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

STATISTICS_FACES

Added in API level 21
Key<Face[]> STATISTICS_FACES

在此捕获中通过相机脸部检测检测到的脸部列表。

仅在 android.statistics.faceDetectMode != OFF时可用。

此密钥可在所有设备上使用。

也可以看看:

STATISTICS_FACE_DETECT_MODE

Added in API level 21
Key<Integer> STATISTICS_FACE_DETECT_MODE

面部检测器单元的操作模式。

是否启用人脸检测,以及是否只输出基本字段或全部字段。

可能的值:

此设备的可用值:
android.statistics.info.availableFaceDetectModes

此密钥可在所有设备上使用。

也可以看看:

STATISTICS_HOT_PIXEL_MAP

Added in API level 21
Key<Point[]> STATISTICS_HOT_PIXEL_MAP

传感器上热/缺陷像素的 (x, y)坐标列表。

坐标(x, y)必须分别位于(0, 0)(width - 1, height - 1) (含)之间,它们分别是像素阵列的左上角和右下角。 宽度和高度尺寸在android.sensor.info.pixelArraySize中给出。 这可能包括位于android.sensor.info.activeArraySize给出的有效数组边界之外的热像素。

有效值的范围:

n <=传感器上的像素数量。 (x, y)坐标必须以android.sensor.info.pixelArraySize为界。

可选 - 在某些设备上,此值可能为 null

也可以看看:

STATISTICS_HOT_PIXEL_MAP_MODE

Added in API level 21
Key<Boolean> STATISTICS_HOT_PIXEL_MAP_MODE

生成热像素图的操作模式。

如果设置为true ,则会在android.statistics.hotPixelMap返回热像素映射。 如果设置为false ,则不会返回热像素图。

有效值的范围:
android.statistics.info.availableHotPixelMapModes

可选 - 在某些设备上该值可能为 null

也可以看看:

STATISTICS_LENS_SHADING_CORRECTION_MAP

Added in API level 21
Key<LensShadingMap> STATISTICS_LENS_SHADING_CORRECTION_MAP

着色图是一个低分辨率浮点图,列出了用于校正每个拜耳颜色通道的渐晕的系数。

此处提供的地图与摄像机设备用于校正输出非RAW图像的颜色阴影和晕影的地图相同。

当没有对RAW输出图像应用镜头阴影校正( android.sensor.info.lensShadingApplied == false)时,此图是完整的镜头阴影校正图; 如果对RAW输出图像应用了某些镜头阴影校正( android.sensor.info.lensShadingApplied == true),则此图会报告需要应用的其余镜头阴影校正图,以获取与非RAW格式的相机设备输出相匹配的阴影校正图像。

对于完整的阴影校正图,图像中阴影最少的部分的增益因子为1; 所有其他部分的收益均高于1。

android.colorCorrection.mode = TRANSFORM_MATRIX时,地图将考虑colorCorrection设置。

阴影贴图适用于整个活动像素阵列,并且不受请求中指定的裁剪区域的影响。 每个阴影贴图条目都是传感器上特定像素上的阴影补偿贴图的值。 具体来说,使用(N×M)分辨率阴影图和有效像素数组大小(W×H),阴影映射项(x,y)φ(0 ... N-1,0 ... M-1 )是四个颜色通道在像素(((W-1)/(N-1))* x,((H-1)/(M-1))* y处的着色图的值。 该图被假定为在采样点之间双线性插值。

通道顺序是[R,Geven,Godd,B],其中Geven是拜耳模式偶数行的绿色通道,Godd是奇数行。 着色图以完全交错的格式存储。

阴影贴图通常具有30-40行和列的顺序,并且将小于64x64。

作为一个例子,给定一个非常小的地图定义为:

width,height = [ 4, 3 ]
 values =
 [ 1.3, 1.2, 1.15, 1.2,  1.2, 1.2, 1.15, 1.2,
     1.1, 1.2, 1.2, 1.2,  1.3, 1.2, 1.3, 1.3,
   1.2, 1.2, 1.25, 1.1,  1.1, 1.1, 1.1, 1.0,
     1.0, 1.0, 1.0, 1.0,  1.2, 1.3, 1.25, 1.2,
   1.3, 1.2, 1.2, 1.3,   1.2, 1.15, 1.1, 1.2,
     1.2, 1.1, 1.0, 1.2,  1.3, 1.15, 1.2, 1.3 ]
 

每个通道的低分辨率缩放地图图像(使用最近邻插值显示):

仅作为可视化,反转全色地图以恢复传感器捕获的灰墙图像(使用双三次插值以获得视觉质量),可以:

有效值的范围:
每个增益因子> = 1

可选 - 在某些设备上,此值可能为 null

完整功能 - 在 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上存在

也可以看看:

STATISTICS_LENS_SHADING_MAP_MODE

Added in API level 21
Key<Integer> STATISTICS_LENS_SHADING_MAP_MODE

相机设备是否将在输出结果元数据中输出镜头阴影贴图。

设置为ON时,将在输出结果元数据中提供android.statistics.lensShadingMap。

ON始终支持具有RAW功能的设备。

可能的值:

此设备的可用值:
android.statistics.info.availableLensShadingMapModes

可选 - 在某些设备上该值可能为 null

完整功能 - 在 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上都存在

也可以看看:

STATISTICS_SCENE_FLICKER

Added in API level 21
Key<Integer> STATISTICS_SCENE_FLICKER

摄像机设备估计场景照明照明频率。

许多光源,如大多数荧光灯,闪烁的速度取决于当地的公用电力标准。 这种闪烁必须通过自动曝光程序来解决,以避免捕获图像中的伪像。 相机设备使用此条目来告诉应用程序场景光源频率是什么。

当启用手动曝光控制( android.control.aeMode == OFFandroid.control.mode == OFF )时, android.control.aeAntibandingMode不会执行抗划分,并且应用程序可以通过查看此元数据字段来确保选择不会导致分段问题的曝光时间。 详情请参阅android.control.aeAntibandingMode

如果没有出现闪烁照明,则报告NONE。

可能的值:

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

TONEMAP_CURVE

Added in API level 21
Key<TonemapCurve> TONEMAP_CURVE

android.tonemap.mode为CONTRAST_CURVE时使用的色调映射/对比度/伽马曲线。

tonemapCurve分别由红色,绿色和蓝色通道的三条曲线组成。 以下示例使用红色通道作为示例。 相同的逻辑适用于绿色和蓝色通道。 每个通道的曲线由一系列控制点定义:

curveRed =
   [ P0(in, out), P1(in, out), P2(in, out), P3(in, out), ..., PN(in, out) ]
 2 <= N <= android.tonemap.maxCurvePoints

这些按顺序增加Pin ; 总是保证输入值0.0和1.0包含在列表中以定义完整的映射。 对于控制点之间的输入值,摄像机设备必须在控制点之间进行线性插值。

每条曲线可以有独立的点数,并且点数可以小于最大值(也就是说,请求不必始终提供点数等于 android.tonemap.maxCurvePoints的曲线)。

一些示例及其相应的图形映射; 这些只是指定了红色通道,并且为了简明起见,精度限制为4位数。

线性映射:

curveRed = [ (0, 0), (1.0, 1.0) ]
 

反转映射:

curveRed = [ (0, 1.0), (1.0, 0) ]
 

Gamma 1 / 2.2映射,16个控制点:

curveRed = [
   (0.0000, 0.0000), (0.0667, 0.2920), (0.1333, 0.4002), (0.2000, 0.4812),
   (0.2667, 0.5484), (0.3333, 0.6069), (0.4000, 0.6594), (0.4667, 0.7072),
   (0.5333, 0.7515), (0.6000, 0.7928), (0.6667, 0.8317), (0.7333, 0.8685),
   (0.8000, 0.9035), (0.8667, 0.9370), (0.9333, 0.9691), (1.0000, 1.0000) ]
 

标准sRGB伽玛映射,根据IEC 61966-2-1:1999,有16个控制点:

curveRed = [
   (0.0000, 0.0000), (0.0667, 0.2864), (0.1333, 0.4007), (0.2000, 0.4845),
   (0.2667, 0.5532), (0.3333, 0.6125), (0.4000, 0.6652), (0.4667, 0.7130),
   (0.5333, 0.7569), (0.6000, 0.7977), (0.6667, 0.8360), (0.7333, 0.8721),
   (0.8000, 0.9063), (0.8667, 0.9389), (0.9333, 0.9701), (1.0000, 1.0000) ]
 

可选 - 在某些设备上,此值可能为 null

完整功能 - 在 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上存在

也可以看看:

TONEMAP_GAMMA

Added in API level 23
Key<Float> TONEMAP_GAMMA

android.tonemap.mode为GAMMA_VALUE时使用的 android.tonemap.mode映射曲线

色调映射曲线将被定义为以下公式:* OUT = pow(IN,1.0 / gamma)其中IN和OUT是缩放到范围[0.0,1.0]的输入像素值,pow是功率函数,而gamma是伽玛值由此键指定。

相同的曲线将应用于所有颜色通道。 相机设备可以将输入伽马值剪切到其支持的范围。 实际应用值将在捕获结果中返回。

伽玛值的有效范围在不同设备上有所不同,但保证[1.0,5.0]内的值不被剪切。

可选 - 在某些设备上此值可能为 null

也可以看看:

TONEMAP_MODE

Added in API level 21
Key<Integer> TONEMAP_MODE

高级全局对比度/伽马/色调映射控制。

当通过将android.tonemap.mode设置为CONTRAST_CURVE切换到应用程序定义的对比曲线时,将使用一组(in, out)点为每个通道定义曲线,该点指定从输入高位深度像素值到输出低位深度值的映射。 由于输入和输出的实际像素范围可能会根据摄像机流水线而发生变化,所以这些值由归一化的浮点数指定。

android.tonemap.mode为CONTRAST_CURVE时,更复杂的颜色映射操作(如3D颜色查找表,选择性色度增强或其他非线性颜色变换)将被禁用。

当使用FAST或HIGH_QUALITY时,相机设备将在android.tonemap.curve发出自己的色调映射曲线。 这些值始终可用,并尽可能接近实际使用的非线性/非全局变换。

如果使用CONTRAST_CURVE发送请求并且摄像机设备提供的曲线为FAST或HIGH_QUALITY,则图像的色调图将大致相同。

可能的值:

此设备的可用值:
android.tonemap.availableToneMapModes

可选 - 在某些设备上,此值可能为 null

完整功能 - 存在于 android.info.supportedHardwareLevel密钥中报告为 HARDWARE_LEVEL_FULL设备的所有相机设备上

也可以看看:

TONEMAP_PRESET_CURVE

Added in API level 23
Key<Integer> TONEMAP_PRESET_CURVE

android.tonemap.mode为PRESET_CURVE时使用的 android.tonemap.mode映射曲线

色调映射曲线将由指定的标准定义。

sRGB(接近16个控制点):

建议 709(近似于16个控制点):

请注意,上图显示了预设曲线的16个控制点近似值。 相机设备可以对曲线应用不同的近似值。

可能的值:

可选 - 在某些设备上,此值可能为 null

也可以看看:

Public methods

get

Added in API level 21
T get (Key<T> key)

获取捕获结果字段值。

字段定义可以在 CaptureResult找到。

多次查询同一个键的值将返回一个等于先前查询值的值。

Parameters
key Key: The result field to read.
Returns
T The value of that key, or null if the field is not set.
Throws
IllegalArgumentException if the key was not valid

getFrameNumber

Added in API level 21
long getFrameNumber ()

获取与此结果关联的帧号。

无论何时处理请求,无论失败或成功,它都会获得一个指定给其未来结果/失败的唯一帧号。

对于相同类型的请求(从相机设备捕获或重新处理),此值从0开始单调递增,对于每个新结果或故障,范围是CameraDevice的寿命。 在不同类型的请求之间,帧号可能不会单调递增。 例如,较新的重新处理结果的帧号可能小于捕获来自摄像机装置的新图像的较旧结果的帧号,但较新的重新处理结果的帧号永远不会小于较旧的重新处理结果。

Returns
long The frame number

也可以看看:

getKeys

Added in API level 21
List<Key<?>> getKeys ()

返回此映射中包含的键的列表。

返回的列表是不可修改的,所以任何修改它的尝试都会抛出 UnsupportedOperationException

通过#get此列表中的密钥检索的所有值都保证为非null 每个键只在列表中列出一次。 密钥的顺序是未定义的。

Returns
List<Key<?>> List of the keys contained in this map.

getRequest

Added in API level 21
CaptureRequest getRequest ()

获取与此结果关联的请求。

只要有请求已经被完全或部分地捕获,与 onCaptureCompleted(CameraCaptureSession, CaptureRequest, TotalCaptureResult)或者 onCaptureProgressed(CameraCaptureSession, CaptureRequest, CaptureResult) ,该 resultgetRequest()将返回 request

例如,

cameraDevice.capture(someRequest, new CaptureCallback() {
     @Override
     void onCaptureCompleted(CaptureRequest myRequest, CaptureResult myResult) {
         assert(myResult.getRequest.equals(myRequest) == true);
     }
 }, null);
 

Returns
CaptureRequest The request associated with this result. Never null.

getSequenceId

Added in API level 21
int getSequenceId ()

capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)系列函数返回的此故障的序列号。

序列ID是一个从0开始的唯一单调增加的值,每次向CameraDevice提交一组新请求时递增。

Returns
int int The ID for the sequence of requests that this capture result is a part of

也可以看看:

Hooray!