public final class CaptureRequest
extends CameraMetadata<Key<?>>
implements Parcelable
java.lang.Object | ||
↳ | android.hardware.camera2.CameraMetadata<android.hardware.camera2.CaptureRequest.Key<?>> | |
↳ | android.hardware.camera2.CaptureRequest |
从摄像头设备捕捉单个图像所需的一整套设置和输出。
包含捕获硬件(传感器,镜头,闪存),处理管道,控制算法和输出缓冲区的配置。 还包含发送图像数据以进行捕获的目标曲面列表。
CaptureRequests可以通过使用 CaptureRequest.Builder
实例创建,通过调用 createCaptureRequest(int)
获得
CaptureRequests被分配给 capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)
或 setRepeatingRequest(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)
从相机捕获图像。
每个请求都可以指定目标曲面的不同子集,供摄像机发送捕捉的数据。 当请求被提交给会话时,请求中使用的所有曲面必须是最后一次调用createCaptureSession(List
的表面列表的一部分。
例如,用于重复预览的请求可能只包括用于预览SurfaceView或SurfaceTexture的Surface,而高分辨率静止图像捕获还包括配置用于高分辨率JPEG图像的ImageReader的Surface。
重新处理捕捉请求允许将来自相机设备的先前捕捉的图像发送回设备以进行进一步处理。 它可以使用createReprocessCaptureRequest(TotalCaptureResult)
创建,并与使用createReprocessCaptureRequest(TotalCaptureResult)
创建的可重新处理捕获会话一起createReprocessableCaptureSession(InputConfiguration, List
。
也可以看看:
capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)
setRepeatingRequest(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)
captureBurst(List
, CameraCaptureSession.CaptureCallback, Handler)
setRepeatingBurst(List
, CameraCaptureSession.CaptureCallback, Handler)
createCaptureRequest(int)
createReprocessCaptureRequest(TotalCaptureResult)
Nested classes |
|
---|---|
class |
CaptureRequest.Builder 捕获请求的构建器。 |
class |
CaptureRequest.Key<T> 甲 |
Inherited constants |
---|
From class android.hardware.camera2.CameraMetadata
|
From interface android.os.Parcelable
|
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<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 自动白平衡(AWB)当前是否锁定到其最新的计算值。 |
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的信息(自动曝光,自动对焦,自动白平衡)关于此拍摄目的的例程,以帮助相机设备决定最佳的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 Creator<CaptureRequest> |
CREATOR |
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 像素 |
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<TonemapCurve> |
TONEMAP_CURVE 当 |
public static final Key<Float> |
TONEMAP_GAMMA
色调映射曲线将被定义为以下公式:* 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
色调映射曲线将由指定的标准定义。 |
Public methods |
|
---|---|
int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
boolean |
equals(Object other) 确定此CaptureRequest是否等于另一个CaptureRequest。 |
<T> T |
get(Key<T> key) 获取捕获请求字段值。 |
List<Key<?>> |
getKeys() 返回此映射中包含的键的列表。 |
Object |
getTag() 检索此请求的标记(如果有)。 |
int |
hashCode() 返回对象的哈希码值。 |
boolean |
isReprocess() 确定这是否是重新处理捕获请求。 |
void |
writeToParcel(Parcel dest, int flags) 将此对象平铺到一个包裹中。 |
Inherited methods |
|
---|---|
From class android.hardware.camera2.CameraMetadata
|
|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
Key<Boolean> BLACK_LEVEL_LOCK
黑电平补偿是否锁定到其当前值,或者可以自由变化。
设置为 true
(开)时,用于黑电平补偿的值将不会改变,直到锁定设置为 false
(OFF)。
由于某些拍摄参数(如曝光时间)的更改可能需要重置黑色电平补偿,因此相机设备必须报告设置黑色电平锁定是否在输出结果元数据中成功。
例如,如果一系列请求如下所示:
并且请求4中的曝光更改要求相机设备重置黑色电平偏移,则输出结果元数据预期为:
这向应用程序指出,在第4帧,由于曝光值变化,黑色电平被重置,并且像素值可能在整个捕捉过程中不一致。
摄像机设备将尽可能保持锁定状态,当其他请求参数的更改需要进行黑色电平重新计算或重置时,仅将锁定设置为关闭。
可选 - 在某些设备上,此值可能为 null
。
完整功能 - 在 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上都存在
Key<Integer> COLOR_CORRECTION_ABERRATION_MODE
色差校正算法的操作模式。
色差(色差)是由于不同波长的光在离开镜头后不能聚焦在同一点上。 该元数据定义了色差校正算法的高级控制,其目的是最小化可能沿着图像中的对象边界发生的色差伪像。
FAST / HIGH_QUALITY都意味着将应用相机设备确定的像差校正。 HIGH_QUALITY模式表示相机设备将使用最高质量的像差校正算法,即使它会降低捕捉速率。 FAST意味着相机设备在应用像差校正时不会降低拍摄速度。
LEGACY设备将始终处于FAST模式。
可能的值:
此设备的可用值:
android.colorCorrection.availableAberrationModes
此密钥可在所有设备上使用。
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
设备的所有相机设备上
Key<Integer> COLOR_CORRECTION_MODE
模式控制选择图像数据如何从传感器的本地颜色转换为线性sRGB颜色。
当使用android.control.awbMode
启用自动白平衡(AWB)时,AWB例程将覆盖此控件。 当禁用AWB时,应用程序将控制颜色映射的执行方式。
我们在下面定义了预期的处理流程。 为了保持设备之间的一致性,TRANSFORM_MATRIX始终是这种情况。
当使用FULL或HIGH_QUALITY时,相机设备可能会执行额外的处理,但 android.colorCorrection.gains
和 android.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_even
写G_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
设备的所有相机设备上 android.info.supportedHardwareLevel
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
设备的所有相机设备上
Key<Integer> CONTROL_AE_ANTIBANDING_MODE
相机设备的自动曝光算法的抗污染补偿所需的设置。
某些类型的照明灯具,如某些荧光灯,以电源频率(60Hz或50Hz,取决于国家)的频率闪烁。 虽然这通常对个人来说不明显,但是摄像机设备可以看到它。 如果相机将其曝光时间设置为错误值,则闪烁可能会在取景器中以闪烁或最终拍摄的图像的形式出现,如图像上的一组可变亮度带。
因此,相机设备的自动曝光程序包括抗染色程序,以确保所选择的曝光值不会导致此类条纹。 曝光时间的选择取决于相机设备可以自动检测到的闪烁速率,或者应用程序使用此控件可以选择预期速率。
给定的相机设备可能不支持抗混模式的所有可能选项。 android.control.aeAvailableAntibandingModes
键包含给定摄像头设备的可用模式。
如果在给定的相机设备上可用,则AUTO模式是默认模式。 当AUTO模式不可用时,默认值为50HZ或60HZ,50HZ和60HZ都可用。
如果启用手动曝光控制(通过将android.control.aeMode
或android.control.mode
设置为OFF),则此设置无效,应用程序必须确保选择不会导致条带问题的曝光时间。 android.statistics.sceneFlicker
密钥可以帮助此应用程序。
可能的值:
此设备的可用值:
android.control.aeAvailableAntibandingModes
此密钥可在所有设备上使用。
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
此密钥可在所有设备上使用。
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更新结果被送出。 如果应用程序在自动和手动控制之间切换,并希望在切换过程中消除闪烁,建议执行以下步骤:
有关AE锁相关状态转换的详细信息,请参阅 android.control.aeState
。
此密钥可在所有设备上使用。
Key<Integer> CONTROL_AE_MODE
相机设备自动曝光程序的所需模式。
此控件仅在 android.control.mode
为AUTO时有效。
当设置为任何的ON模式,相机设备的自动曝光程序被使能,重写应用程序的选择的曝光时间,传感器的灵敏度,和帧持续时间( android.sensor.exposureTime
, android.sensor.sensitivity
,和android.sensor.frameDuration
)。 如果选择了其中一种闪光灯模式,则照相机设备的闪光灯控制装置也将被覆盖。
仅当相机设备具有闪光灯组件时,闪光灯模式才可用( android.flash.info.available
为 true
)。
如果需要闪光灯TORCH模式,则此字段必须设置为ON或OFF,并且 android.flash.mode
设置为TORCH。
当设置为任何ON模式时,相机设备自动曝光程序为给定捕捉的重写字段选择的值将在CaptureResult中提供。
可能的值:
此设备的可用值:
android.control.aeAvailableModes
此密钥可在所有设备上使用。
Key<Integer> CONTROL_AE_PRECAPTURE_TRIGGER
相机设备在处理该请求时是否会触发预捕获计量序列。
该条目通常设置为IDLE,或根本不包含在请求设置中。 当包含并设置为开始时,相机设备将触发自动曝光(AE)预捕测量序列。
当设置为取消时,相机设备将取消任何激活的预捕测量触发,并返回到其初始AE状态。 如果预捕获测光序列已经完成,并且相机设备已隐式锁定了AE以便随后进行静态捕捉,则CANCEL触发器将解锁AE并返回其初始AE状态。
在启动高质量静态捕捉以进行最终测光决定之前,应该触发预捕获序列,并且在启用闪光灯时启动预捕捉闪光脉冲以估计场景亮度并要求最终捕捉闪光灯功率。
通常情况下,只有一个请求才会将此条目设置为START,并且应用程序应该等到序列完成后才能开始新的请求。
当预捕测量序列完成时,相机设备可以在内部锁定自动曝光程序,以便能够准确曝光后续的静态捕捉图像(
)。 对于这种情况,如果未提交后续静态捕捉,AE可能无法恢复正常扫描。 为确保AE例程重新开始正常扫描,如果应用程序在precapture序列完成后决定不提交静态捕获请求,则应用程序应提交android.control.captureIntent
== STILL_CAPTURE
的请求,然后请求android.control.aeLock
== true
。 或者,对于API级别23或更新的设备,如果应用程序在AE预捕获触发后未提交静态捕获请求,则可以使用CANCEL来解锁相机设备内部锁定的AE。 请注意,CANCEL已添加到API级别23中,并且不得用于具有较早API级别的设备。android.control.aeLock
== false
自动曝光(AE)预捕获触发的确切效果取决于当前AE模式和状态; 有关AE预捕获状态转换细节,请参阅android.control.aeState
。
在LEGACY级别的设备上,预捕获触发器不受支持; 捕获高分辨率JPEG图像将在高分辨率捕捉之前自动触发预捕获序列,包括可能触发预捕获闪光。
允许同时使用预捕获触发器和自动对焦触发器android.control.afTrigger
。 然而,由于这些触发器经常需要自动对焦和自动曝光例程之间的协作(例如,可能需要启用焦点扫描),所以摄像机设备可以延迟作用于稍后的触发,直到先前的触发已经被完全处理。 例如,这可能导致触发和更改为android.control.aeState
之间的间隔变长, android.control.aeState
指示预捕获序列的开始。
如果预取和自动对焦触发都在相同请求中激活,则摄像机设备将按照该设备的最佳顺序完成它们。
可能的值:
可选 - 在某些设备上,此值可能为 null
。
能力有限 - 在 android.info.supportedHardwareLevel
密钥中报告至少 HARDWARE_LEVEL_LIMITED
设备的所有相机设备上都存在
Key<MeteringRectangle[]> CONTROL_AE_REGIONS
用于自动曝光调整的测光区域列表。
如果 android.control.maxRegionsAe
为0, android.control.maxRegionsAe
可用。否则将始终存在。
设备支持的最大区域数由值 android.control.maxRegionsAe
。
的坐标系是基于有源像素阵列上,以(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
。
Key<Range<Integer>> CONTROL_AE_TARGET_FPS_RANGE
自动曝光程序可以调整捕捉帧率以保持良好曝光的范围。
只限制自动曝光(AE)算法,而不是手动控制 android.sensor.exposureTime
和 android.sensor.frameDuration
。
单位 :每秒帧数(FPS)
有效值的范围:
android.control.aeAvailableTargetFpsRanges
任何条目
此密钥可在所有设备上使用。
Key<Integer> CONTROL_AF_MODE
是否启用自动对焦(AF),以及设置为何种模式。
仅当android.control.mode
= AUTO并且镜头不是固定焦点(即
)时才有效。 另请注意,当android.lens.info.minimumFocusDistance
> 0android.control.aeMode
关闭状态时,AF的行为取决于设备。 建议在将android.control.aeMode
设置为OFF之前使用android.control.afTrigger
来锁定AF,或者在AE关闭时将AF模式设置为OFF。
如果镜头由相机设备自动对焦算法控制,则相机设备将在结果元数据中报告 android.control.afState
中的当前AF状态。
可能的值:
此设备的可用值:
android.control.afAvailableModes
此密钥可在所有设备上使用。
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
。
Key<Integer> CONTROL_AF_TRIGGER
相机设备是否会为此请求触发自动对焦。
该条目通常设置为IDLE,或根本不包含在请求设置中。
当包含并设置为START时,相机设备将触发自动对焦算法。 如果禁用了自动对焦,则此触发器不起作用。
设置为取消时,相机设备将取消任何激活的触发,并返回其初始AF状态。
通常,应用程序应将此条目设置为START或CANCEL,以便仅进行一次捕获,然后将其返回到IDLE(或根本不设置)。 指定连续多次捕捉的开始意味着反复重新开始AF操作。
有关每种自动对焦模式的触发方式,请参阅 android.control.afState
。
允许同时使用自动对焦触发器和预捕获触发器android.control.aePrecaptureTrigger
。 然而,由于这些触发器经常需要自动对焦和自动曝光例程之间的协作(例如,可能需要启用焦点扫描),所以摄像机设备可以延迟作用于稍后的触发,直到先前的触发已经被完全处理。 例如,这可能会导致触发器和android.control.afState
更改之间的间隔变android.control.afState
。
可能的值:
此密钥可在所有设备上使用。
Key<Boolean> CONTROL_AWB_LOCK
自动白平衡(AWB)当前是否锁定到其最新的计算值。
设置为 true
(ON)时,AWB算法将锁定到其最新参数,并且不会更改色彩平衡设置,直到锁定设置为 false
(OFF)。
由于相机设备具有流水线中的请求,因此锁定的设置不一定对应于从相机设备接收到的最新捕捉结果中存在的设置,因为甚至可能之前发生了附加捕捉和AWB更新结果被送出。 如果应用程序在自动和手动控制之间切换,并希望在切换过程中消除闪烁,建议执行以下步骤:
请注意,AWB锁仅在android.control.awbMode
处于AUTO模式时有意义; 在其他模式下,AWB已经被固定为特定设置。
一些LEGACY设备可能不支持ON; 该值将被覆盖为OFF。
此密钥可在所有设备上使用。
也可以看看:
Key<Integer> CONTROL_AWB_MODE
自动白平衡(AWB)是否正在设置色彩转换字段以及其照明目标是什么。
此控件仅在 android.control.mode
为AUTO时有效。
当设置为ON模式下,相机设备的自动白平衡程序启用,重写应用程序的选择android.colorCorrection.transform
, android.colorCorrection.gains
和android.colorCorrection.mode
。 请注意,当android.control.aeMode
为OFF时,AWB的行为取决于设备。 在将AE模式设置为OFF之前,建议使用android.control.awbLock
将AWB模式设置为OFF或锁定AWB。
当设置为关闭模式时,相机设备的自动白平衡例程被禁用。 应用手动控制由白平衡android.colorCorrection.transform
, android.colorCorrection.gains
和android.colorCorrection.mode
。
设置为其他模式时,相机设备的自动白平衡例程将被禁用。 相机设备使用每个特定的照明目标进行白平衡调整。 该应用程序对价值android.colorCorrection.transform
, android.colorCorrection.gains
和android.colorCorrection.mode
被忽略。
可能的值:
此设备的可用值:
android.control.awbAvailableModes
此密钥可在所有设备上使用。
也可以看看:
COLOR_CORRECTION_GAINS
COLOR_CORRECTION_MODE
COLOR_CORRECTION_TRANSFORM
CONTROL_AE_MODE
CONTROL_AWB_AVAILABLE_MODES
CONTROL_AWB_LOCK
CONTROL_MODE
CONTROL_AWB_MODE_OFF
CONTROL_AWB_MODE_AUTO
CONTROL_AWB_MODE_INCANDESCENT
CONTROL_AWB_MODE_FLUORESCENT
CONTROL_AWB_MODE_WARM_FLUORESCENT
CONTROL_AWB_MODE_DAYLIGHT
CONTROL_AWB_MODE_CLOUDY_DAYLIGHT
CONTROL_AWB_MODE_TWILIGHT
CONTROL_AWB_MODE_SHADE
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
。
Key<Integer> CONTROL_CAPTURE_INTENT
相机设备3A的信息(自动曝光,自动对焦,自动白平衡)关于此拍摄目的的例程,以帮助相机设备决定最佳的3A策略。
该控制(MANUAL除外)仅在
和任何3A例程处于活动状态时才有效。android.control.mode
!= OFF
如果android.request.availableCapabilities
包含PRIVATE_REPROCESSING或YUV_REPROCESSING,将支持ZERO_SHUTTER_LAG。 如果android.request.availableCapabilities
包含MANUAL_SENSOR,手册将被支持。 其他意图值始终受支持。
可能的值:
此密钥可在所有设备上使用。
Key<Integer> CONTROL_EFFECT_MODE
要应用的特殊颜色效果。
设置此模式时,相机设备生成的图像将应用颜色效果。 这些色彩效果的解释和实现留给相机设备的实现者,并且不应该依赖于在所有设备中一致(或存在)。
可能的值:
此设备的可用值:
android.control.availableEffects
此密钥可在所有设备上使用。
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
此密钥可在所有设备上使用。
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
/ 100android.sensor.sensitivity
此控件仅在android.control.aeMode
或android.control.mode
设置为OFF时有效; 否则自动曝光算法将覆盖此值。
单位 :ISO算术单位,与 android.sensor.sensitivity
相同
有效值的范围:
android.control.postRawSensitivityBoostRange
可选 - 某些设备上的此值可能为 null
。
Key<Integer> CONTROL_SCENE_MODE
控制哪种场景模式当前处于活动状态。
场景模式是针对特定条件和拍摄设置进行优化的自定义相机模式。
这是
时激活的模式。 除了FACE_PRIORITY,这些模式将禁用android.control.mode
== USE_SCENE_MODEandroid.control.aeMode
, android.control.awbMode
,并android.control.afMode
,同时在使用。
这些场景模式的解释和实现留给相机设备的实现者。 他们的行为在所有设备上都不一致,并且任何给定的设备可能只实现这些模式的一个子集。
可能的值:
DISABLED
FACE_PRIORITY
ACTION
PORTRAIT
LANDSCAPE
NIGHT
NIGHT_PORTRAIT
THEATRE
BEACH
SNOW
SUNSET
STEADYPHOTO
FIREWORKS
SPORTS
PARTY
CANDLELIGHT
BARCODE
HIGH_SPEED_VIDEO
HDR
此设备的可用值:
android.control.availableSceneModes
此密钥可在所有设备上使用。
也可以看看:
CONTROL_AE_MODE
CONTROL_AF_MODE
CONTROL_AVAILABLE_SCENE_MODES
CONTROL_AWB_MODE
CONTROL_MODE
CONTROL_SCENE_MODE_DISABLED
CONTROL_SCENE_MODE_FACE_PRIORITY
CONTROL_SCENE_MODE_ACTION
CONTROL_SCENE_MODE_PORTRAIT
CONTROL_SCENE_MODE_LANDSCAPE
CONTROL_SCENE_MODE_NIGHT
CONTROL_SCENE_MODE_NIGHT_PORTRAIT
CONTROL_SCENE_MODE_THEATRE
CONTROL_SCENE_MODE_BEACH
CONTROL_SCENE_MODE_SNOW
CONTROL_SCENE_MODE_SUNSET
CONTROL_SCENE_MODE_STEADYPHOTO
CONTROL_SCENE_MODE_FIREWORKS
CONTROL_SCENE_MODE_SPORTS
CONTROL_SCENE_MODE_PARTY
CONTROL_SCENE_MODE_CANDLELIGHT
CONTROL_SCENE_MODE_BARCODE
CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO
CONTROL_SCENE_MODE_HDR
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
),则打开这两个模式可能会产生不希望的交互,因此建议不要同时启用这两种模式。
可能的值:
此密钥可在所有设备上使用。
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
设备的所有相机设备上
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
报告。
可能的值:
此密钥可在所有设备上使用。
Key<Integer> HOT_PIXEL_MODE
热像素校正的操作模式。
热像素校正插值出或去除不能准确测量入射光的像素(例如,粘在任意值或过度敏感的像素)。
可能的值:
此设备的可用值:
android.hotPixel.availableHotPixelModes
可选 - 在某些设备上该值可能为 null
。
Key<Location> JPEG_GPS_LOCATION
生成图像GPS元数据时使用的位置对象。
在请求中设置位置对象将把位置的GPS坐标包括在根据请求捕获的任何JPEG图像中。 任何接收JPEG图像的人都可以查看这些坐标。
此密钥可在所有设备上使用。
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
此密钥可在所有设备上使用。
也可以看看:
Key<Byte> JPEG_QUALITY
最终JPEG图像的压缩质量。
85-95是典型的使用范围。
有效值的范围:
1-100; 质量越高,质量越好
此密钥可在所有设备上使用。
Key<Byte> JPEG_THUMBNAIL_QUALITY
JPEG缩略图的压缩质量。
有效值的范围:
1-100; 质量越高,质量越好
此密钥可在所有设备上使用。
Key<Size> JPEG_THUMBNAIL_SIZE
嵌入式JPEG缩略图的分辨率。
设置为(0,0)值时,JPEG EXIF将不包含缩略图,但捕获的JPEG仍然是有效的图像。
为获得最佳效果,在发出JPEG图像请求时,所选缩略图大小应与主JPEG输出具有相同的纵横比。
如果缩略图图像宽高比与JPEG主图像宽高比不同,则相机设备通过从主图像裁剪缩略图来创建缩略图。 例如,如果主图像的宽高比为4:3,则缩略图图像的宽高比为16:9,主图像将垂直裁剪(信箱)以生成缩略图图像。 纵横比不同时,缩略图图像始终比主图像具有更小的视场(FOV)。
当请求非零度的 android.jpeg.orientation
时,相机设备将通过以下方式之一处理缩略图旋转:
EXIF orientation flag
and keep jpeg and thumbnail image data unrotated.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
此密钥可在所有设备上使用。
Key<Float> LENS_APERTURE
所需的镜头光圈尺寸,作为镜头焦距与有效光圈直径的比率。
仅在具有可变光圈镜头的相机设备上支持设置此值。
当这种支撑和 android.control.aeMode
为OFF时,这可被设置连同 android.sensor.exposureTime
, android.sensor.sensitivity
和 android.sensor.frameDuration
实现手动曝光控制。
要求的光圈值可能需要几帧才能达到要求的值; 相机设备将在光圈变化时报告捕捉结果元数据中的当前(中间)光圈大小。 当光圈仍在变化时, android.lens.state
将被设置为MOVING。
当这被支持并且 android.control.aeMode
是开启模式之一时,这将被相机设备自动曝光算法覆盖,然后在相应的结果中将重写的值提供给用户。
单位 :f数(f / N)
有效值的范围:
android.lens.info.availableApertures
可选 - 在某些设备上该值可能为 null
。
完整功能 - 存在于 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上
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
设备的所有相机设备上
Key<Float> LENS_FOCAL_LENGTH
所需的镜头焦距; 用于光学变焦。
此设置控制相机设备镜头的物理焦距。 改变焦距会改变相机设备的视野,并且通常用于光学变焦。
与android.lens.focusDistance
和android.lens.aperture
,此设置不会立即应用,并且在镜头变为所需焦距之前可能需要几个帧。 虽然焦距仍在变化,但android.lens.state
将设置为MOVING。
大多数设备不支持光学变焦。
单位 :毫米
有效值的范围:
android.lens.info.availableFocalLengths
此密钥可在所有设备上使用。
Key<Float> LENS_FOCUS_DISTANCE
从镜头最前表面测量的最清晰焦距平面的所需距离。
此控件可用于设置手动对焦,支持MANUAL_SENSOR功能并具有变焦镜头的设备(请参阅 android.lens.info.minimumFocusDistance
)。
值为0.0f
意味着无限的焦点。 该值将被限制为[0.0f,
。android.lens.info.minimumFocusDistance
]
与android.lens.focalLength
,此设置不会立即应用,并且可能需要几帧才能将镜头移动到所需的焦距。 当镜头仍在移动时, android.lens.state
将被设置为MOVING。
LEGACY设备最多支持将其设置为 0.0f
以获得无限的焦点。
单位 :详情请参阅 android.lens.info.focusDistanceCalibration
有效值的范围:
> = 0
可选 - 某些设备上的此值可能为 null
。
完整功能 - 存在于 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上
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
设备的所有相机设备上都存在
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
设备的所有相机设备上
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
!= OFF
。 同样,对于边缘增强重新处理,它仅在android.noiseReduction.mode
!= OFF
时android.edge.mode
!= OFF
。android.edge.mode
!= OFF
单位 :相对曝光时间增加系数。
有效值的范围:
> = 1.0
可选 - 在某些设备上该值可能为 null
。
能力有限 - 在 android.info.supportedHardwareLevel
密钥中报告至少 HARDWARE_LEVEL_LIMITED
设备的所有相机设备上都存在
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
像素坐标
此密钥可在所有设备上使用。
Key<Long> SENSOR_EXPOSURE_TIME
持续每个像素曝光。
如果传感器无法公开此确切的持续时间,则会缩短暴露于最近可能值的持续时间(而不是长时间暴露)。 最终曝光时间将在输出捕捉结果中可用。
此控件仅在android.control.aeMode
或android.control.mode
设置为OFF时有效; 否则自动曝光算法将覆盖此值。
单位 :纳秒
有效值的范围:
android.sensor.info.exposureTimeRange
可选 - 在某些设备上该值可能为 null
。
完整功能 - 存在于 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上
Key<Long> SENSOR_FRAME_DURATION
从帧曝光开始到下一帧曝光开始的持续时间。
相机子系统可以支持的最大帧速率是许多因素的函数:
由于这些因素在不同的ISP和传感器之间可能会有很大的差异,因此摄像机抽象试图用尽可能简单的模型来表示带宽限制。
所呈现的模型具有以下特征:
考虑到上述模型,应用程序的必要信息通过android.scaler.streamConfigurationMap
字段使用getOutputMinFrameDuration(int, Size)
。 这些用于确定给定流配置可能的最大帧速率/最小帧持续时间。
具体来说,应用程序可以使用以下规则来确定它可以从相机设备请求的最小帧持续时间:
S
.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
.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.aeMode
或android.control.mode
设置为OFF时有效; 否则自动曝光算法将覆盖此值。
单位 :纳秒
有效值的范围:
见android.sensor.info.maxFrameDuration
, android.scaler.streamConfigurationMap
。 持续时间限制为max(duration, exposureTime + overhead)
。
可选 - 在某些设备上,此值可能为 null
。
完整功能 - 存在于 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上
Key<Integer> SENSOR_SENSITIVITY
处理前应用于传感器数据的增益量。
灵敏度是ISO 12232:2006中定义的标准ISO灵敏度值。
灵敏度必须在 android.sensor.info.sensitivityRange
之内,如果小于 android.sensor.maxAnalogSensitivity
,则相机设备保证仅使用模拟放大来应用增益。
如果相机设备无法应用所请求的确切灵敏度,则会将增益降至最接近的支持值。 最终使用的灵敏度将在输出捕捉结果中可用。
此控件仅在android.control.aeMode
或android.control.mode
设置为OFF时有效; 否则自动曝光算法将覆盖此值。
单位 :ISO算术单位
有效值的范围:
android.sensor.info.sensitivityRange
可选 - 在某些设备上,此值可能为 null
。
完整功能 - 存在于 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上
Key<int[]> SENSOR_TEST_PATTERN_DATA
像素 [R, G_even, G_odd, B]
时供给测试图案 android.sensor.testPatternMode
是SOLID_COLOR。
每个颜色通道都被视为一个无符号的32位整数。 然后摄像机设备使用与Bayer原始传感器输出中有多少位对应的最高有效X位。
例如,具有RAW10 Bayer输出的传感器将使用来自每个颜色通道的10个最高有效位。
可选 - 在某些设备上,此值可能为 null
。
也可以看看:
Key<Integer> SENSOR_TEST_PATTERN_MODE
启用后,传感器将发送测试图案,而不是从相机进行实际曝光。
启用测试模式时,android.sensor。*指定的所有手动传感器控件都将被忽略。 所有其他控件应该可以正常工作。
例如,如果启用了手动闪光灯,则仍会发生闪光灯闪光(并且测试图案保持不变,因为闪光灯实际上不会影响它)。
默认为OFF。
可能的值:
此设备的可用值:
android.sensor.availableTestPatternModes
可选 - 在某些设备上,此值可能为 null
。
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
设备的所有相机设备上
Key<Integer> STATISTICS_FACE_DETECT_MODE
面部检测器单元的操作模式。
是否启用人脸检测,以及是否只输出基本字段或全部字段。
可能的值:
此设备的可用值:
android.statistics.info.availableFaceDetectModes
此密钥可在所有设备上使用。
Key<Boolean> STATISTICS_HOT_PIXEL_MAP_MODE
生成热像素图的操作模式。
如果设置为true
,则会在android.statistics.hotPixelMap
返回热像素映射。 如果设置为false
,则不会返回热像素图。
有效值的范围:
android.statistics.info.availableHotPixelMapModes
可选 - 在某些设备上,此值可能为 null
。
Key<Integer> STATISTICS_LENS_SHADING_MAP_MODE
相机设备是否将在输出结果元数据中输出镜头阴影贴图。
设置为ON时,将在输出结果元数据中提供android.statistics.lensShadingMap。
ON始终支持具有RAW功能的设备。
可能的值:
此设备的可用值:
android.statistics.info.availableLensShadingMapModes
可选 - 在某些设备上,此值可能为 null
。
完整功能 - 存在于 android.info.supportedHardwareLevel
密钥中报告为 HARDWARE_LEVEL_FULL
设备的所有相机设备上
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
设备的所有相机设备上
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
。
也可以看看:
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
设备的所有相机设备上 android.info.supportedHardwareLevel
Key<Integer> TONEMAP_PRESET_CURVE
android.tonemap.mode
为PRESET_CURVE时使用的 android.tonemap.mode
映射曲线
色调映射曲线将由指定的标准定义。
sRGB(接近16个控制点):
建议 709(近似于16个控制点):
请注意,上图显示了预设曲线的16个控制点近似值。 相机设备可以对曲线应用不同的近似值。
可能的值:
可选 - 在某些设备上,此值可能为 null
。
int describeContents ()
描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象在writeToParcel(Parcel, int)
的输出中包含writeToParcel(Parcel, int)
,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR
位。
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
boolean equals (Object other)
确定此CaptureRequest是否等于另一个CaptureRequest。
一个请求被认为与另一个请求相等,如果它的一组键/值相等,则它的输出表面列表相等,用户标记相等,并且isReprocess()的返回值相等。
Parameters | |
---|---|
other |
Object : Another instance of CaptureRequest. |
Returns | |
---|---|
boolean |
True if the requests are the same, false otherwise. |
T get (Key<T> key)
获取捕获请求字段值。
该字段的定义可以在 CaptureRequest
找到。
多次查询同一个键的值将返回一个等于先前查询值的值。
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 |
List<Key<?>> getKeys ()
返回此映射中包含的键的列表。
返回的列表是不可修改的,所以任何修改它的尝试都会抛出 UnsupportedOperationException
。
所有由#get
列表中的密钥检索的值都保证为非null
。 每个键只在列表中列出一次。 密钥的顺序是未定义的。
Returns | |
---|---|
List<Key<?>> |
List of the keys contained in this map. |
Object getTag ()
检索此请求的标记(如果有)。
相机设备不使用此标签,但可由应用程序使用,以便在由 CaptureCallback.onCaptureCompleted
返回的情况下轻松识别 CaptureCallback.onCaptureCompleted
Returns | |
---|---|
Object |
the last tag Object set on this request, or null if no tag has been set. |
也可以看看:
int hashCode ()
返回对象的哈希码值。 为了散列表的好处而支持此方法,例如由HashMap
提供的HashMap
。
一般合同 hashCode
是:
hashCode
method must consistently return the same integer, provided no information used in equals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. equals(Object)
method, then calling the hashCode
method on each of the two objects must produce the same integer result. equals(java.lang.Object)
method, then calling the hashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. 尽可能合理实用,类Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)
Returns | |
---|---|
int |
a hash code value for this object. |
boolean isReprocess ()
确定这是否是重新处理捕获请求。
重新处理捕捉请求从CameraCaptureSession
的输入Surface
的输入缓冲区中产生输出图像。 重新处理捕获请求可由createReprocessCaptureRequest(TotalCaptureResult)
创建。
Returns | |
---|---|
boolean |
true if this is a reprocess capture request. false if this is not a reprocess capture request. |
void writeToParcel (Parcel dest, int flags)
将此对象平铺到一个包裹中。
Parameters | |
---|---|
dest |
Parcel : The Parcel in which the object should be written. |
flags |
int : Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . |