diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index 55ca4865b409e..fb3eaffe339be 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -310,14 +310,18 @@ public final class CameraCharacteristics extends CameraMetadata
This metadata lists the valid modes for {@link CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE android.colorCorrection.aberrationMode}. - * If no aberration correction modes are available for a device, this list will solely include + *
List of aberration correction modes for {@link CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE android.colorCorrection.aberrationMode} that are + * supported by this camera device.
+ *This key lists the valid modes for {@link CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE android.colorCorrection.aberrationMode}. If no + * aberration correction modes are available for a device, this list will solely include * OFF mode.
- *For FULL capability device ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL), OFF must be
- * included.
For FULL capability device ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL), OFF is
+ * always included.
LEGACY devices will always only support FAST mode.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE android.colorCorrection.aberrationMode}
This key is available on all devices.
* * @see CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL @@ -327,30 +331,42 @@ public final class CameraCharacteristics extends CameraMetadataThe set of auto-exposure antibanding modes that are + *
List of auto-exposure antibanding modes for {@link CaptureRequest#CONTROL_AE_ANTIBANDING_MODE android.control.aeAntibandingMode} that are * supported by this camera device.
*Not all of the auto-exposure anti-banding modes may be * supported by a given camera device. This field lists the * valid anti-banding modes that the application may request - * for this camera device; they must include AUTO.
+ * for this camera device with the + * {@link CaptureRequest#CONTROL_AE_ANTIBANDING_MODE android.control.aeAntibandingMode} control. This list + * always includes AUTO. + *Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_AE_ANTIBANDING_MODE android.control.aeAntibandingMode}
This key is available on all devices.
+ * + * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE */ @PublicKey public static final KeyThe set of auto-exposure modes that are supported by this - * camera device.
+ *List of auto-exposure modes for {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} that are supported by this camera + * device.
*Not all the auto-exposure modes may be supported by a * given camera device, especially if no flash unit is * available. This entry lists the valid modes for * {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} for this camera device.
- *All camera devices support ON, and all camera devices with - * flash units support ON_AUTO_FLASH and - * ON_ALWAYS_FLASH.
+ *All camera devices support ON, and all camera devices with flash + * units support ON_AUTO_FLASH and ON_ALWAYS_FLASH.
*FULL mode camera devices always support OFF mode, * which enables application control of camera exposure time, * sensitivity, and frame duration.
+ *LEGACY mode camera devices never support OFF mode. + * LIMITED mode devices support OFF if they support the MANUAL_SENSOR + * capability.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode}
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_MODE */ @@ -359,43 +375,70 @@ public final class CameraCharacteristics extends CameraMetadataList of frame rate ranges supported by the - * auto-exposure (AE) algorithm/hardware
+ *List of frame rate ranges for {@link CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE android.control.aeTargetFpsRange} supported by + * this camera device.
+ *For devices at the LIMITED level or above, this list will include at least (30, 30) for + * constant-framerate recording.
+ *Units: Frames per second (FPS)
+ *This key is available on all devices.
+ * + * @see CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE */ @PublicKey public static final KeyMaximum and minimum exposure compensation - * setting, in counts of - * {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP android.control.aeCompensationStep}.
+ *Maximum and minimum exposure compensation values for + * {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION android.control.aeExposureCompensation}, in counts of {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP android.control.aeCompensationStep}, + * that are supported by this camera device.
+ *Range of valid values:
Min.exposure compensation * {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP android.control.aeCompensationStep} <= -2 EV
Max.exposure compensation * {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP android.control.aeCompensationStep} >= 2 EV
This key is available on all devices.
* * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP + * @see CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION */ @PublicKey public static final KeySmallest step by which exposure compensation - * can be changed
+ *Smallest step by which the exposure compensation + * can be changed.
+ *This is the unit for {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION android.control.aeExposureCompensation}. For example, if this key has
+ * a value of 1/2, then a setting of -2 for {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION android.control.aeExposureCompensation} means
+ * that the target EV offset for the auto-exposure routine is -1 EV.
One unit of EV compensation changes the brightness of the captured image by a factor + * of two. +1 EV doubles the image brightness, while -1 EV halves the image brightness.
+ *Units: Exposure Value (EV)
+ *This key is available on all devices.
+ * + * @see CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION */ @PublicKey public static final KeyList of auto-focus (AF) modes that can be - * selected with {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode}.
+ *List of auto-focus (AF) modes for {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} that are + * supported by this camera device.
*Not all the auto-focus modes may be supported by a * given camera device. This entry lists the valid modes for * {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} for this camera device.
*All LIMITED and FULL mode camera devices will support OFF mode, and all
* camera devices with adjustable focuser units
* ({@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance} > 0) will support AUTO mode.
LEGACY devices will support OFF mode only if they support
+ * focusing to infinity (by also setting {@link CaptureRequest#LENS_FOCUS_DISTANCE android.lens.focusDistance} to
+ * 0.0f).
Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode}
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AF_MODE + * @see CaptureRequest#LENS_FOCUS_DISTANCE * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE */ @PublicKey @@ -403,17 +446,20 @@ public final class CameraCharacteristics extends CameraMetadataList containing the subset of color effects - * specified in {@link CaptureRequest#CONTROL_EFFECT_MODE android.control.effectMode} that is supported by - * this device.
+ *List of color effects for {@link CaptureRequest#CONTROL_EFFECT_MODE android.control.effectMode} that are supported by this camera + * device.
*This list contains the color effect modes that can be applied to - * images produced by the camera device. Only modes that have - * been fully implemented for the current device may be included here. + * images produced by the camera device. * Implementations are not expected to be consistent across all devices. - * If no color effect modes are available for a device, this should - * simply be set to OFF.
+ * If no color effect modes are available for a device, this will only list + * OFF. *A color effect will only be applied if - * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF.
+ * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF. OFF is always included in this list. + *This control has no effect on the operation of other control routines such + * as auto-exposure, white balance, or focus.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_EFFECT_MODE android.control.effectMode}
This key is available on all devices.
* * @see CaptureRequest#CONTROL_EFFECT_MODE * @see CaptureRequest#CONTROL_MODE @@ -423,38 +469,56 @@ public final class CameraCharacteristics extends CameraMetadataList containing a subset of scene modes - * specified in {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode}.
+ *List of scene modes for {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode} that are supported by this camera + * device.
*This list contains scene modes that can be set for the camera device.
* Only scene modes that have been fully implemented for the
* camera device may be included here. Implementations are not expected
- * to be consistent across all devices. If no scene modes are supported
- * by the camera device, this will be set to [DISABLED].
If no scene modes are supported by the camera device, this + * will be set to DISABLED. Otherwise DISABLED will not be listed.
+ *FACE_PRIORITY is always listed if face detection is
+ * supported (i.e.{@link CameraCharacteristics#STATISTICS_INFO_MAX_FACE_COUNT android.statistics.info.maxFaceCount} >
+ * 0).
Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode}
This key is available on all devices.
* * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#STATISTICS_INFO_MAX_FACE_COUNT */ @PublicKey public static final KeyList of video stabilization modes that can - * be supported
+ *List of video stabilization modes for {@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE android.control.videoStabilizationMode} + * that are supported by this camera device.
+ *OFF will always be listed.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE android.control.videoStabilizationMode}
This key is available on all devices.
+ * + * @see CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE */ @PublicKey public static final KeyThe set of auto-white-balance modes ({@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode}) - * that are supported by this camera device.
+ *List of auto-white-balance modes for {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} that are supported by this + * camera device.
*Not all the auto-white-balance modes may be supported by a * given camera device. This entry lists the valid modes for * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} for this camera device.
*All camera devices will support ON mode.
- *FULL mode camera devices will always support OFF mode, - * which enables application control of white balance, by using - * {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform} and {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains}({@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} must be set to TRANSFORM_MATRIX).
+ *Camera devices that support the MANUAL_POST_PROCESSING capability will always support OFF + * mode, which enables application control of white balance, by using + * {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform} and {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains}({@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} must be set to TRANSFORM_MATRIX). This includes all FULL + * mode camera devices.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode}
This key is available on all devices.
* * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_MODE @@ -471,6 +535,11 @@ public final class CameraCharacteristics extends CameraMetadataRange of valid values:
Value must be >= 0 for each element. For full-capability devices
+ * this value must be >= 1 for AE and AF. The order of the elements is:
+ * (AE, AWB, AF).
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_REGIONS * @see CaptureRequest#CONTROL_AF_REGIONS @@ -481,10 +550,14 @@ public final class CameraCharacteristics extends CameraMetadataList of the maximum number of regions that can be used for metering in - * auto-exposure (AE); - * this corresponds to the the maximum number of elements in + *
The maximum number of metering regions that can be used by the auto-exposure (AE) + * routine.
+ *This corresponds to the the maximum allowed number of elements in * {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions}.
+ *Range of valid values:
+ * Value will be >= 0. For FULL-capability devices, this
+ * value will be >= 1.
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_REGIONS */ @@ -494,10 +567,13 @@ public final class CameraCharacteristics extends CameraMetadataList of the maximum number of regions that can be used for metering in - * auto-white balance (AWB); - * this corresponds to the the maximum number of elements in + *
The maximum number of metering regions that can be used by the auto-white balance (AWB) + * routine.
+ *This corresponds to the the maximum allowed number of elements in * {@link CaptureRequest#CONTROL_AWB_REGIONS android.control.awbRegions}.
+ *Range of valid values:
+ * Value will be >= 0.
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AWB_REGIONS */ @@ -507,10 +583,13 @@ public final class CameraCharacteristics extends CameraMetadataList of the maximum number of regions that can be used for metering in - * auto-focus (AF); - * this corresponds to the the maximum number of elements in + *
The maximum number of metering regions that can be used by the auto-focus (AF) routine.
+ *This corresponds to the the maximum allowed number of elements in * {@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}.
+ *Range of valid values:
+ * Value will be >= 0. For FULL-capability devices, this
+ * value will be >= 1.
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AF_REGIONS */ @@ -541,20 +620,34 @@ public final class CameraCharacteristics extends CameraMetadataRange of valid values:
For each configuration, the fps_max >= 60fps.
+ *Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CameraCharacteristics#CONTROL_AVAILABLE_SCENE_MODES * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final KeyThe set of edge enhancement modes supported by this camera device.
- *This tag lists the valid modes for {@link CaptureRequest#EDGE_MODE android.edge.mode}.
- *Full-capability camera devices must always support OFF and FAST.
+ *List of edge enhancement modes for {@link CaptureRequest#EDGE_MODE android.edge.mode} that are supported by this camera + * device.
+ *Full-capability camera devices must always support OFF; all devices will list FAST.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#EDGE_MODE android.edge.mode}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#EDGE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final KeyIf no flash, none of the flash controls do - * anything. All other metadata should return 0.
+ * flash unit. + *Will be false if no flash is available.
If there is no flash unit, none of the flash controls do + * anything. + * This key is available on all devices.
*/ @PublicKey public static final KeyThe set of hot pixel correction modes that are supported by this + *
List of hot pixel correction modes for {@link CaptureRequest#HOT_PIXEL_MODE android.hotPixel.mode} that are supported by this * camera device.
- *This tag lists valid modes for {@link CaptureRequest#HOT_PIXEL_MODE android.hotPixel.mode}.
*FULL mode camera devices will always support FAST.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#HOT_PIXEL_MODE android.hotPixel.mode}
Optional - This value may be {@code null} on some devices.
* * @see CaptureRequest#HOT_PIXEL_MODE */ @@ -583,7 +680,10 @@ public final class CameraCharacteristics extends CameraMetadataSupported resolutions for the JPEG thumbnail.
+ *List of JPEG thumbnail sizes for {@link CaptureRequest#JPEG_THUMBNAIL_SIZE android.jpeg.thumbnailSize} supported by this + * camera device.
+ *This list will include at least one non-zero resolution, plus (0,0) for indicating no
+ * thumbnail should be generated.
Below condiditions will be satisfied for this size list:
*(0, 0) sizes will have non-zero widths and heights.
+ * This key is available on all devices.List of supported aperture - * values.
- *If the camera device doesn't support variable apertures, - * listed value will be the fixed aperture.
- *If the camera device supports variable apertures, the aperture value + *
List of aperture size values for {@link CaptureRequest#LENS_APERTURE android.lens.aperture} that are + * supported by this camera device.
+ *If the camera device doesn't support a variable lens aperture, + * this list will contain only one value, which is the fixed aperture size.
+ *If the camera device supports a variable aperture, the aperture values * in this list will be sorted in ascending order.
+ *Units: The aperture f-number
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL + * @see CaptureRequest#LENS_APERTURE */ @PublicKey public static final KeyList of supported neutral density filter values for - * {@link CaptureRequest#LENS_FILTER_DENSITY android.lens.filterDensity}.
- *If changing {@link CaptureRequest#LENS_FILTER_DENSITY android.lens.filterDensity} is not supported, - * availableFilterDensities must contain only 0. Otherwise, this - * list contains only the exact filter density values available on - * this camera device.
+ *List of neutral density filter values for + * {@link CaptureRequest#LENS_FILTER_DENSITY android.lens.filterDensity} that are supported by this camera device.
+ *If a neutral density filter is not supported by this camera device, + * this list will contain only 0. Otherwise, this list will include every + * filter density supported by the camera device, in ascending order.
+ *Units: Exposure value (EV)
+ *Range of valid values:
Values are >= 0
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_FILTER_DENSITY */ @PublicKey @@ -629,12 +747,16 @@ public final class CameraCharacteristics extends CameraMetadataThe available focal lengths for this device for use with - * {@link CaptureRequest#LENS_FOCAL_LENGTH android.lens.focalLength}.
- *If optical zoom is not supported, this will only report - * a single value corresponding to the static focal length of the - * device. Otherwise, this will report every focal length supported - * by the device.
+ *List of focal lengths for {@link CaptureRequest#LENS_FOCAL_LENGTH android.lens.focalLength} that are supported by this camera + * device.
+ *If optical zoom is not supported, this list will only contain + * a single value corresponding to the fixed focal length of the + * device. Otherwise, this list will include every focal length supported + * by the camera device, in ascending order.
+ *Units: Millimeters
+ *Range of valid values:
Values are > 0
+ *This key is available on all devices.
* * @see CaptureRequest#LENS_FOCAL_LENGTH */ @@ -643,12 +765,18 @@ public final class CameraCharacteristics extends CameraMetadataList containing a subset of the optical image - * stabilization (OIS) modes specified in - * {@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}.
- *If OIS is not implemented for a given camera device, this will + *
List of optical image stabilization (OIS) modes for + * {@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode} that are supported by this camera device.
+ *If OIS is not supported by a given camera device, this list will * contain only OFF.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE */ @PublicKey @@ -656,12 +784,21 @@ public final class CameraCharacteristics extends CameraMetadataOptional. Hyperfocal distance for this lens.
+ *Hyperfocal distance for this lens.
*If the lens is not fixed focus, the camera device will report this * field when {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} is APPROXIMATE or CALIBRATED.
+ *Units: See {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} for details
+ *Range of valid values:
+ * If lens is fixed focus, >= 0. If lens has focuser unit, the value is
+ * within (0.0f, {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}]
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION + * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE */ @PublicKey public static final KeyIf the lens is fixed-focus, this should be + * of the lens that can be brought into sharp focus.
+ *If the lens is fixed-focus, this will be * 0.
+ *Units: See {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} for details
+ *Range of valid values:
+ * >= 0
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL + * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION */ @PublicKey public static final KeyThe map should be on the order of 30-40 rows and columns, and * must be smaller than 64x64.
+ *Range of valid values:
+ * Both values >= 1
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final KeyAPPROXIMATE and CALIBRATED devices report the focus metadata in
+ * units of diopters (1/meter), so 0.0f represents focusing at infinity,
+ * and increasing positive numbers represent focusing closer and closer
+ * to the camera device. The focus distance control also uses diopters
+ * on these devices.
UNCALIBRATED devices do not use units that are directly comparable
+ * to any real physical measurement, but 0.0f still represents farthest
+ * focus, and {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance} represents the
+ * nearest focus the device can achieve.
Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_FOCUS_DISTANCE * @see CaptureResult#LENS_FOCUS_RANGE * @see CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE @@ -709,6 +883,12 @@ public final class CameraCharacteristics extends CameraMetadataPossible values: + *
This key is available on all devices.
* @see #LENS_FACING_FRONT * @see #LENS_FACING_BACK */ @@ -717,10 +897,18 @@ public final class CameraCharacteristics extends CameraMetadataThe set of noise reduction modes supported by this camera device.
- *This tag lists the valid modes for {@link CaptureRequest#NOISE_REDUCTION_MODE android.noiseReduction.mode}.
- *Full-capability camera devices must always support OFF and FAST.
+ *List of noise reduction modes for {@link CaptureRequest#NOISE_REDUCTION_MODE android.noiseReduction.mode} that are supported + * by this camera device.
+ *Full-capability camera devices will always support OFF and FAST.
+ *Legacy-capability camera devices will only support FAST mode.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#NOISE_REDUCTION_MODE android.noiseReduction.mode}
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#NOISE_REDUCTION_MODE */ @PublicKey @@ -765,6 +953,15 @@ public final class CameraCharacteristics extends CameraMetadataRange of valid values:
For processed (and stalling) format streams, >= 1.
+ *For Raw format (either stalling or non-stalling) streams, >= 0.
+ *For processed (but not stalling) format streams, >= 3
+ * for FULL mode devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL);
+ * >= 2 for LIMITED mode devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == LIMITED).
This key is available on all devices.
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final KeyRAWLEGACY mode devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == LEGACY)
+ * never support raw streams.
Range of valid values:
>= 0
+ *This key is available on all devices.
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @PublicKey @@ -814,7 +1017,14 @@ public final class CameraCharacteristics extends CameraMetadataFor full guarantees, query StreamConfigurationMap#getOutputStallDuration with * a processed format -- it will return 0 for a non-stalling stream.
+ *LEGACY devices will support at least 2 processing/non-stalling streams.
+ *Range of valid values:
>= 3
+ * for FULL mode devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL);
+ * >= 2 for LIMITED mode devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == LIMITED).
This key is available on all devices.
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @PublicKey @@ -833,9 +1043,13 @@ public final class CameraCharacteristics extends CameraMetadataA processed and stalling format is defined as any non-RAW format with a stallDurations > 0.
- * Typically only the JPEG format (ImageFormat#JPEG)
JPEG format (ImageFormat#JPEG) is a stalling format.
* For full guarantees, query StreamConfigurationMap#getOutputStallDuration with * a processed format -- it will return a non-0 value for a stalling stream.
+ *LEGACY devices will support up to 1 processing/stalling stream.
+ *Range of valid values:
>= 1
+ *This key is available on all devices.
* * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @@ -856,6 +1070,14 @@ public final class CameraCharacteristics extends CameraMetadataRange of valid values:
0 or 1.
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final KeyThis value will be 8 or less.
+ *This key is available on all devices.
* * @see CaptureResult#REQUEST_PIPELINE_DEPTH */ @@ -898,6 +1121,8 @@ public final class CameraCharacteristics extends CameraMetadataRange of valid values:
+ * >= 1
Optional - This value may be {@code null} on some devices.
*/ @PublicKey @@ -905,7 +1130,7 @@ public final class CameraCharacteristics extends CameraMetadataList of capabilities that the camera device + *
List of capabilities that this camera device * advertises as fully supporting.
*A capability is a contract that the camera device makes in order * to be able to satisfy one or more use cases.
@@ -923,7 +1148,15 @@ public final class CameraCharacteristics extends CameraMetadataOther capabilities may be available on either FULL or LIMITED - * devices, but the application should query this field to be sure.
+ * devices, but the application should query this key to be sure. + *Possible values: + *
This key is available on all devices.
* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE @@ -945,6 +1178,7 @@ public final class CameraCharacteristics extends CameraMetadataThis key is available on all devices.
* * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @hide @@ -957,18 +1191,19 @@ public final class CameraCharacteristics extends CameraMetadataAttempting to get a key from a CaptureResult that is not
* listed here will always return a null value. Getting a key from
- * a CaptureResult that is listed here must never return a null
+ * a CaptureResult that is listed here will generally never return a null
* value.
The following keys may return null unless they are enabled:
(Those sometimes-null keys should nevertheless be listed here + *
(Those sometimes-null keys will nevertheless be listed here * if they are available.)
*This field can be used to query the feature set of a camera device * at a more granular level than capabilities. This is especially * important for optional keys that are not listed under any capability * in {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities}.
+ *This key is available on all devices.
* * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE @@ -984,6 +1219,7 @@ public final class CameraCharacteristics extends CameraMetadataThis key is available on all devices.
* @hide */ public static final KeyAll camera devices will support JPEG and YUV_420_888 formats.
*When set to YUV_420_888, application can access the YUV420 data directly.
+ *Optional - This value may be {@code null} on some devices.
* @deprecated * @hide */ @@ -1010,6 +1247,10 @@ public final class CameraCharacteristics extends CameraMetadataUnits: Nanoseconds
+ *Range of valid values:
+ * TODO: Remove property.
Optional - This value may be {@code null} on some devices.
* @deprecated * @hide */ @@ -1021,6 +1262,9 @@ public final class CameraCharacteristics extends CameraMetadataThe resolutions are listed as (width, height) pairs. All camera devices will support
* sensor maximum resolution (defined by {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}).
Range of valid values:
+ * TODO: Remove property.
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE * @deprecated @@ -1033,13 +1277,19 @@ public final class CameraCharacteristics extends CameraMetadataThis represents the maximum amount of zooming possible by * the camera device, or equivalently, the minimum cropping * window size.
*Crop regions that have a width or height that is smaller * than this ratio allows will be rounded up to the minimum * allowed size by the camera device.
+ *Units: Zoom scale factor
+ *Range of valid values:
+ * >=1
This key is available on all devices.
+ * + * @see CaptureRequest#SCALER_CROP_REGION */ @PublicKey public static final KeyWhen multiple streams are configured, the minimum frame duration will * be >= max(individual stream min durations).
+ *Units: Nanoseconds
+ *Optional - This value may be {@code null} on some devices.
* @deprecated * @hide */ @@ -1075,6 +1327,7 @@ public final class CameraCharacteristics extends CameraMetadataPlease reference the documentation for the image data destination to * check if it limits the maximum size for image data.
+ *Optional - This value may be {@code null} on some devices.
* @deprecated * @hide */ @@ -1133,6 +1386,12 @@ public final class CameraCharacteristics extends CameraMetadataTODO: typedef to ReprocessFormatMap
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final KeyRefer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} for additional * mandatory stream configurations on a per-capability basis.
+ *This key is available on all devices.
* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -1244,6 +1504,8 @@ public final class CameraCharacteristics extends CameraMetadata(Keep in sync with * StreamConfigurationMap#getOutputMinFrameDuration)
+ *Units: (format, width, height, ns) x n
+ *This key is available on all devices.
* * @see CaptureRequest#SENSOR_FRAME_DURATION * @hide @@ -1309,6 +1571,8 @@ public final class CameraCharacteristics extends CameraMetadata(Keep up to date with * StreamConfigurationMap#getOutputStallDuration(int, Size) )
+ *Units: (format, width, height, ns) x n
+ *This key is available on all devices.
* * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @see CaptureRequest#SENSOR_FRAME_DURATION @@ -1396,6 +1660,7 @@ public final class CameraCharacteristics extends CameraMetadataRefer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} for additional * mandatory stream configurations on a per-capability basis.
+ *This key is available on all devices.
* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -1417,7 +1682,13 @@ public final class CameraCharacteristics extends CameraMetadataFULL capability devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL) will support
- * FREEFORM cropping.
Possible values: + *
This key is available on all devices.
* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SCALER_CROP_REGION @@ -1430,22 +1701,41 @@ public final class CameraCharacteristics extends CameraMetadataArea of raw data which corresponds to only + *
The area of the image sensor which corresponds to * active pixels.
- *It is smaller or equal to - * sensor full pixel array, which could include the black calibration pixels.
+ *This is the region of the sensor that actually receives light from the scene. + * Therefore, the size of this region determines the maximum field of view and the maximum + * number of pixels that an image from this sensor can contain.
+ *The rectangle is defined in terms of the full pixel array; (0,0) is the top-left of the + * full pixel array, and the size of the full pixel array is given by + * {@link CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE android.sensor.info.pixelArraySize}.
+ *Most other keys listing pixel coordinates have their coordinate systems based on the
+ * active array, with (0, 0) being the top-left of the active array rectangle.
The active array may be smaller than the full pixel array, since the full array may + * include black calibration pixels or other inactive regions.
+ *Units: Pixel coordinates on the image sensor
+ *Range of valid values:
This key is available on all devices.
+ * + * @see CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE */ @PublicKey public static final KeyRange of valid sensitivities.
- *The minimum and maximum valid values for the - * {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity} control.
+ *Range of sensitivities for {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity} supported by this + * camera device.
*The values are the standard ISO sensitivity values, * as defined in ISO 12232:2006.
+ *Range of valid values:
+ * Min <= 100, Max >= 800
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SENSOR_SENSITIVITY */ @PublicKey @@ -1456,6 +1746,20 @@ public final class CameraCharacteristics extends CameraMetadataPossible values: + *
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB * @see #SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG * @see #SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG @@ -1467,11 +1771,17 @@ public final class CameraCharacteristics extends CameraMetadataRange of valid exposure - * times used by {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}.
- *The min value will be <= 100e3 (100 us). For FULL + *
The range of image exposure times for {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} supported + * by this camera device.
+ *Units: Nanoseconds
+ *Range of valid values:
+ * The minimum exposure time will be less than 100 us. For FULL
* capability devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL),
- * max will be >= 100e6 (100ms)
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SENSOR_EXPOSURE_TIME @@ -1481,18 +1791,21 @@ public final class CameraCharacteristics extends CameraMetadataMaximum possible frame duration (minimum frame - * rate).
- *The largest possible {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration} - * that will be accepted by the camera device. Attempting to use - * frame durations beyond the maximum will result in the frame duration - * being clipped to the maximum. See that control - * for a full definition of frame durations.
- *Refer to - * StreamConfigurationMap#getOutputMinFrameDuration(int,Size) - * for the minimum frame duration values.
- *For FULL capability devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL), - * max will be >= 100e6 (100ms).
+ *The maximum possible frame duration (minimum frame rate) for + * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration} that is supported this camera device.
+ *Attempting to use frame durations beyond the maximum will result in the frame + * duration being clipped to the maximum. See that control for a full definition of frame + * durations.
+ *Refer to StreamConfigurationMap#getOutputMinFrameDuration(int,Size) for the minimum + * frame duration values.
+ *Units: Nanoseconds
+ *Range of valid values:
+ * For FULL capability devices
+ * ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL), at least 100ms.
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SENSOR_FRAME_DURATION @@ -1506,6 +1819,8 @@ public final class CameraCharacteristics extends CameraMetadataThis is the physical size of the sensor pixel * array defined by {@link CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE android.sensor.info.pixelArraySize}.
+ *Units: Millimeters
+ *This key is available on all devices.
* * @see CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE */ @@ -1514,7 +1829,7 @@ public final class CameraCharacteristics extends CameraMetadataDimensions of full pixel array, possibly + *
Dimensions of the full pixel array, possibly * including black calibration pixels.
*The pixel count of the full pixel array, * which covers {@link CameraCharacteristics#SENSOR_INFO_PHYSICAL_SIZE android.sensor.info.physicalSize} area.
@@ -1523,6 +1838,11 @@ public final class CameraCharacteristics extends CameraMetadataSome parts of the full pixel array may not receive light from the scene, + * or are otherwise inactive. The {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} key + * defines the rectangle of active pixels that actually forms an image.
+ *Units: Pixels
+ *This key is available on all devices.
* * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE @@ -1538,11 +1858,14 @@ public final class CameraCharacteristics extends CameraMetadataThe white level is typically determined either by sensor bit depth * (8-14 bits is expected), or by the point where the sensor response * becomes too non-linear to be useful. The default value for this is * maximum representable value for a 16-bit raw sample (2^16 - 1).
+ *Range of valid values:
+ * > 255 (8-bit output)
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN */ @@ -1556,6 +1879,12 @@ public final class CameraCharacteristics extends CameraMetadataThis characteristic defines the source for the timestamps, and therefore whether they * can be compared against other system time sources/timestamps.
+ *Possible values: + *
This key is available on all devices.
* @see #SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN * @see #SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME */ @@ -1568,15 +1897,38 @@ public final class CameraCharacteristics extends CameraMetadataThe values in this tag correspond to the values defined for the + *
The values in this key correspond to the values defined for the * EXIF LightSource tag. These illuminants are standard light sources * that are often used calibrating camera devices.
- *If this tag is present, then {@link CameraCharacteristics#SENSOR_COLOR_TRANSFORM1 android.sensor.colorTransform1}, + *
If this key is present, then {@link CameraCharacteristics#SENSOR_COLOR_TRANSFORM1 android.sensor.colorTransform1}, * {@link CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM1 android.sensor.calibrationTransform1}, and * {@link CameraCharacteristics#SENSOR_FORWARD_MATRIX1 android.sensor.forwardMatrix1} will also be present.
*Some devices may choose to provide a second set of calibration * information for improved quality, including * {@link CameraCharacteristics#SENSOR_REFERENCE_ILLUMINANT2 android.sensor.referenceIlluminant2} and its corresponding matrices.
+ *Possible values: + *
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM1 * @see CameraCharacteristics#SENSOR_COLOR_TRANSFORM1 @@ -1611,12 +1963,13 @@ public final class CameraCharacteristics extends CameraMetadataSee {@link CameraCharacteristics#SENSOR_REFERENCE_ILLUMINANT1 android.sensor.referenceIlluminant1} for more details. - * Valid values for this are the same as those given for the first - * reference illuminant.
- *If this tag is present, then {@link CameraCharacteristics#SENSOR_COLOR_TRANSFORM2 android.sensor.colorTransform2}, + *
See {@link CameraCharacteristics#SENSOR_REFERENCE_ILLUMINANT1 android.sensor.referenceIlluminant1} for more details.
+ *If this key is present, then {@link CameraCharacteristics#SENSOR_COLOR_TRANSFORM2 android.sensor.colorTransform2}, * {@link CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM2 android.sensor.calibrationTransform2}, and * {@link CameraCharacteristics#SENSOR_FORWARD_MATRIX2 android.sensor.forwardMatrix2} will also be present.
+ *Range of valid values:
+ * Any value listed in {@link CameraCharacteristics#SENSOR_REFERENCE_ILLUMINANT1 android.sensor.referenceIlluminant1}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM2 * @see CameraCharacteristics#SENSOR_COLOR_TRANSFORM2 @@ -1763,13 +2116,15 @@ public final class CameraCharacteristics extends CameraMetadataThis tag specifies the zero light value for each of the CFA mosaic + *
This key specifies the zero light value for each of the CFA mosaic * channels in the camera sensor. The maximal value output by the * sensor is represented by the value in {@link CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL android.sensor.info.whiteLevel}.
*The values are given in the same order as channels listed for the CFA - * layout tag (see {@link CameraCharacteristics#SENSOR_INFO_COLOR_FILTER_ARRANGEMENT android.sensor.info.colorFilterArrangement}), i.e. the + * layout key (see {@link CameraCharacteristics#SENSOR_INFO_COLOR_FILTER_ARRANGEMENT android.sensor.info.colorFilterArrangement}), i.e. the * nth value given corresponds to the black level offset for the nth * color channel listed in the CFA.
+ *Range of valid values:
+ * >= 0 for each.
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#SENSOR_INFO_COLOR_FILTER_ARRANGEMENT @@ -1799,19 +2154,26 @@ public final class CameraCharacteristics extends CameraMetadataClockwise angle through which the output - * image needs to be rotated to be upright on the device - * screen in its native orientation. Also defines the - * direction of rolling shutter readout, which is from top - * to bottom in the sensor's coordinate system
+ *Clockwise angle through which the output image needs to be rotated to be + * upright on the device screen in its native orientation.
+ *Also defines the direction of rolling shutter readout, which is from top to bottom in + * the sensor's coordinate system.
+ *Units: Degrees of clockwise rotation; always a multiple of + * 90
+ *Range of valid values:
+ * 0, 90, 180, 270
This key is available on all devices.
*/ @PublicKey public static final KeyLists the supported sensor test pattern modes for {@link CaptureRequest#SENSOR_TEST_PATTERN_MODE android.sensor.testPatternMode}.
- *Optional. Defaults to [OFF].
+ *List of sensor test pattern modes for {@link CaptureRequest#SENSOR_TEST_PATTERN_MODE android.sensor.testPatternMode} + * supported by this camera device.
+ *Defaults to OFF, and always includes OFF if defined.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#SENSOR_TEST_PATTERN_MODE android.sensor.testPatternMode}
Optional - This value may be {@code null} on some devices.
* * @see CaptureRequest#SENSOR_TEST_PATTERN_MODE @@ -1821,15 +2183,14 @@ public final class CameraCharacteristics extends CameraMetadataThe face detection modes that are available - * for this camera device.
+ *List of face detection modes for {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} that are + * supported by this camera device.
*OFF is always supported.
- *SIMPLE means the device supports the - * android.statistics.faceRectangles and - * android.statistics.faceScores outputs.
- *FULL means the device additionally supports the - * android.statistics.faceIds and - * android.statistics.faceLandmarks outputs.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode}
This key is available on all devices.
+ * + * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE */ @PublicKey public static final KeyRange of valid values:
+ * 0 for cameras without available face detection; otherwise:
+ * >=4 for LIMITED or FULL hwlevel devices or
+ * >0 for LEGACY devices.
This key is available on all devices.
*/ @PublicKey public static final KeyThe set of hot pixel map output modes supported by this camera device.
- *This tag lists valid output modes for {@link CaptureRequest#STATISTICS_HOT_PIXEL_MAP_MODE android.statistics.hotPixelMapMode}.
- *If no hotpixel map is available for this camera device, this will contain - * only OFF. If the hotpixel map is available, this will include both - * the ON and OFF options.
+ *List of hot pixel map output modes for {@link CaptureRequest#STATISTICS_HOT_PIXEL_MAP_MODE android.statistics.hotPixelMapMode} that are + * supported by this camera device.
+ *If no hotpixel map output is available for this camera device, this will contain only
+ * false.
ON is always supported on devices with the RAW capability.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#STATISTICS_HOT_PIXEL_MAP_MODE android.statistics.hotPixelMapMode}
Optional - This value may be {@code null} on some devices.
* * @see CaptureRequest#STATISTICS_HOT_PIXEL_MAP_MODE */ @@ -1859,14 +2228,18 @@ public final class CameraCharacteristics extends CameraMetadataIf the actual number of points provided by the application (in - * {@link CaptureRequest#TONEMAP_CURVE android.tonemap.curve}*) is less than max, the camera device will - * resample the curve to its internal representation, using linear - * interpolation.
+ *If the actual number of points provided by the application (in {@link CaptureRequest#TONEMAP_CURVE android.tonemap.curve}*) is + * less than this maximum, the camera device will resample the curve to its internal + * representation, using linear interpolation.
*The output curves in the result metadata may have a different number * of points than the input curves, and will represent the actual * hardware curves used as closely as possible when linearly interpolated.
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_CURVE */ @PublicKey @@ -1874,11 +2247,18 @@ public final class CameraCharacteristics extends CameraMetadataThe set of tonemapping modes supported by this camera device.
- *This tag lists the valid modes for {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode}.
- *Full-capability camera devices must always support CONTRAST_CURVE and - * FAST.
+ *List of tonemapping modes for {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} that are supported by this camera + * device.
+ *Camera devices that support the MANUAL_POST_PROCESSING capability will always list + * CONTRAST_CURVE and FAST. This includes all FULL level devices.
+ *Range of valid values:
+ * Any value listed in {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE */ @PublicKey @@ -1887,6 +2267,11 @@ public final class CameraCharacteristics extends CameraMetadataPossible values: + *
Optional - This value may be {@code null} on some devices.
* @see #LED_AVAILABLE_LEDS_TRANSMIT * @hide */ @@ -1895,8 +2280,8 @@ public final class CameraCharacteristics extends CameraMetadataCamera devices will come in two flavors: LIMITED and FULL.
- *A FULL device has the most support possible and will support below capabilities:
+ *Camera devices will come in three flavors: LEGACY, LIMITED and FULL.
+ *A FULL device will support below capabilities:
*== PER_FRAME_CONTROL)A LIMITED device may have some or none of the above characteristics. * To find out more refer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities}.
+ *Some features are not part of any particular hardware level or capability and must be + * queried separately. These include:
+ *== REALTIME)== CALIBRATED)A LEGACY device does not support per-frame control, manual sensor control, manual * post-processing, arbitrary cropping regions, and has relaxed performance constraints.
+ *Each higher level supports everything the lower level supports
+ * in this order: FULL > LIMITED > LEGACY.
Possible values: + *
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES + * @see CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION + * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @see CameraCharacteristics#REQUEST_MAX_NUM_OUTPUT_PROC * @see CameraCharacteristics#SCALER_CROPPING_TYPE * @see CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE * @see CameraCharacteristics#SENSOR_INFO_MAX_FRAME_DURATION + * @see CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE + * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES * @see CameraCharacteristics#SYNC_MAX_LATENCY * @see #INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED * @see #INFO_SUPPORTED_HARDWARE_LEVEL_FULL @@ -1959,6 +2368,15 @@ public final class CameraCharacteristics extends CameraMetadataresult4 has a frameNumber == 4 and
* android.sync.frameNumber == 2, the distance is clearly
* 4 - 2 = 2.
+ * Units: Frame counts
+ *Possible values: + *
Available values for this device:
+ * A positive value, PER_FRAME_CONTROL, or UNKNOWN.
This key is available on all devices.
* @see #SYNC_MAX_LATENCY_PER_FRAME_CONTROL * @see #SYNC_MAX_LATENCY_UNKNOWN */ @@ -1970,4 +2388,6 @@ public final class CameraCharacteristics extends CameraMetadataLEGACY devices do not support the OFF mode and will + * override attempts to use this value to ON.
* * @see CaptureRequest#SENSOR_EXPOSURE_TIME * @see CaptureRequest#SENSOR_FRAME_DURATION @@ -1213,8 +1215,7 @@ public abstract class CameraMetadataThe camera device should take the highest-quality image
* possible (given the other settings) without disrupting the
- * frame rate of video recording.
- *
Turn on custom high dynamic range (HDR) mode.
+ *This is intended for LEGACY mode devices only; + * HAL3+ camera devices should not implement this mode.
* @see CaptureRequest#CONTROL_SCENE_MODE * @hide */ @@ -1862,8 +1865,6 @@ public abstract class CameraMetadataReturn face rectangle and confidence values only.
- *In this mode, only android.statistics.faceRectangles and - * android.statistics.faceScores outputs are valid.
* @see CaptureRequest#STATISTICS_FACE_DETECT_MODE */ public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1; @@ -1871,11 +1872,7 @@ public abstract class CameraMetadataReturn all face * metadata.
- *In this mode, - * android.statistics.faceRectangles, - * android.statistics.faceScores, - * android.statistics.faceIds, and - * android.statistics.faceLandmarks outputs are valid.
+ *In this mode, face rectangles, scores, landmarks, and face IDs are all valid.
* @see CaptureRequest#STATISTICS_FACE_DETECT_MODE */ public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2; @@ -2064,6 +2061,8 @@ public abstract class CameraMetadataOnly used by CONTINUOUS_* AF modes. This is a transient state, the camera * device may skip reporting this state in capture result.
+ *LEGACY camera devices do not support this state. When a passive + * scan has finished, it will always go to PASSIVE_FOCUSED.
* @see CaptureResult#CONTROL_AF_STATE */ public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6; diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 93eb3def1a687..6aec72a36762f 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -476,7 +476,6 @@ public final class CaptureRequest extends CameraMetadataThe mode control selects how the image data is converted from the * sensor's native color into linear sRGB color.
@@ -518,10 +517,21 @@ public final class CaptureRequest extends CameraMetadataBoth the input and output value ranges must match. Overflow/underflow * values are clipped to fit within the range.
+ *Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #COLOR_CORRECTION_MODE_TRANSFORM_MATRIX * @see #COLOR_CORRECTION_MODE_FAST * @see #COLOR_CORRECTION_MODE_HIGH_QUALITY @@ -542,8 +552,14 @@ public final class CaptureRequest extends CameraMetadata[0, 1.0] (assuming input color
* values is within the normalized range [0, 1.0]), or clipping may occur.
+ * Units: Unitless scale factors
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final KeyThe gains in the result metadata are the gains actually * applied by the camera device to the current frame.
+ *Units: Unitless gain factors
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final KeyMode of operation for the chromatic aberration correction algorithm.
- *This must be set to a valid mode from - * {@link CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES android.colorCorrection.availableAberrationModes}.
*Chromatic (color) aberration is caused by the fact that different wavelengths of light
* can not focus on the same point after exiting from the lens. This metadata defines
* the high level control of chromatic aberration correction algorithm, which aims to
@@ -580,6 +600,16 @@ public final class CaptureRequest extends CameraMetadata
LEGACY devices will always be in FAST mode.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES android.colorCorrection.availableAberrationModes}
This key is available on all devices.
* * @see CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES * @see #COLOR_CORRECTION_ABERRATION_MODE_OFF @@ -612,7 +642,7 @@ public final class CaptureRequest extends CameraMetadataThe default mode is AUTO, which must be supported by all + *
The default mode is AUTO, which is supported by all * camera devices.
*If manual exposure control is enabled (by setting
* {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} or {@link CaptureRequest#CONTROL_MODE android.control.mode} to OFF),
@@ -620,6 +650,16 @@ public final class CaptureRequest extends CameraMetadata
Possible values: + *
Available values for this device:
{@link CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES android.control.aeAvailableAntibandingModes}
+ *This key is available on all devices.
* * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES * @see CaptureRequest#CONTROL_AE_MODE @@ -652,6 +692,10 @@ public final class CaptureRequest extends CameraMetadataUnits: Compensation steps
+ *Range of valid values:
+ * {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE android.control.aeCompensationRange}
This key is available on all devices.
* * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP @@ -666,9 +710,11 @@ public final class CaptureRequest extends CameraMetadataWhether auto-exposure (AE) is currently locked to its latest * calculated values.
- *Note that even when AE is locked, the flash may be - * fired if the {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is ON_AUTO_FLASH / ON_ALWAYS_FLASH / - * ON_AUTO_FLASH_REDEYE.
+ *When set to true (ON), the AE algorithm is locked to its latest parameters,
+ * and will not change exposure settings until the lock is set to false (OFF).
Note that even when AE is locked, the flash may be fired if + * the {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is ON_AUTO_FLASH / + * ON_ALWAYS_FLASH / ON_AUTO_FLASH_REDEYE.
*When {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION android.control.aeExposureCompensation} is changed, even if the AE lock * is ON, the camera device will still adjust its exposure value.
*If AE precapture is triggered (see {@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger})
@@ -677,7 +723,21 @@ public final class CaptureRequest extends CameraMetadata
Since the camera device has a pipeline of in-flight requests, the settings that + * get locked do not necessarily correspond to the settings that were present in the + * latest capture result received from the camera device, since additional captures + * and AE updates may have occurred even before the result was sent out. If an + * application is switching between automatic and manual control and wishes to eliminate + * any flicker during the switch, the following procedure is recommended:
+ *See {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE lock related state transition details.
+ *This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION * @see CaptureRequest#CONTROL_AE_MODE @@ -711,7 +771,19 @@ public final class CaptureRequest extends CameraMetadataPossible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AE_AVAILABLE_MODES android.control.aeAvailableModes}
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_MODES * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#FLASH_INFO_AVAILABLE * @see CaptureRequest#FLASH_MODE @@ -729,25 +801,35 @@ public final class CaptureRequest extends CameraMetadataList of areas to use for - * metering.
- *Optional. Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe} is 0. + *
List of metering areas to use for auto-exposure adjustment.
+ *Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe} is 0. * Otherwise will always be present.
+ *The maximum number of regions supported by the device is determined by the value + * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe}.
*The coordinate system is based on the active pixel array, * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array.
- *The weight must range from 0 to 1000, and represents a weight + *
The weight must be within [0, 1000], and represents a weight
* for every pixel in the area. This means that a large metering area
* with the same weight as a smaller area will have more effect in
* the metering result. Metering areas can partially overlap and the
* camera device will add the weights in the overlap region.
If all regions have 0 weight, then no specific metering area - * needs to be used by the camera device. If the metering region is - * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, - * the camera device will ignore the sections outside the region and output the - * used sections in the result metadata.
+ *The weights are relative to weights of other exposure metering regions, so if only one + * region is used, all non-zero weights will have the same effect. A region with 0 + * weight is ignored.
+ *If all regions have 0 weight, then no specific metering area needs to be used by the + * camera device.
+ *If the metering region is outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in + * capture result metadata, the camera device will ignore the sections outside the crop + * region and output only the intersection rectangle as the metering region in the result + * metadata. If the region is entirely outside the crop region, it will be ignored and + * not reported in the result metadata.
+ *Units: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *Range of valid values:
+ * Coordinates must be between [(0,0), (width, height)) of
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AE @@ -759,12 +841,20 @@ public final class CaptureRequest extends CameraMetadataRange over which fps can be adjusted to - * maintain exposure.
+ *Range over which the auto-exposure routine can + * adjust the capture frame rate to maintain good + * exposure.
*Only constrains auto-exposure (AE) algorithm, not - * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}
+ * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} and + * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}. + *Units: Frames per second (FPS)
+ *Range of valid values:
+ * Any of the entries in {@link CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES android.control.aeAvailableTargetFpsRanges}
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES * @see CaptureRequest#SENSOR_EXPOSURE_TIME + * @see CaptureRequest#SENSOR_FRAME_DURATION */ @PublicKey public static final KeyOn LEGACY-level devices, the precapture trigger is not supported; + * capturing a high-resolution JPEG image will automatically trigger a + * precapture sequence before the high-resolution capture, including + * potentially firing a pre-capture flash.
+ *Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureResult#CONTROL_AE_STATE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE * @see #CONTROL_AE_PRECAPTURE_TRIGGER_START */ @@ -806,7 +910,20 @@ public final class CaptureRequest extends CameraMetadataIf the lens is controlled by the camera device auto-focus algorithm, * the camera device will report the current AF status in {@link CaptureResult#CONTROL_AF_STATE android.control.afState} * in result metadata.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AF_AVAILABLE_MODES android.control.afAvailableModes}
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AF_AVAILABLE_MODES * @see CaptureResult#CONTROL_AF_STATE * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE @@ -822,25 +939,35 @@ public final class CaptureRequest extends CameraMetadataList of areas to use for focus - * estimation.
- *Optional. Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf} is 0. + *
List of metering areas to use for auto-focus.
+ *Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf} is 0. * Otherwise will always be present.
+ *The maximum number of focus areas supported by the device is determined by the value + * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf}.
*The coordinate system is based on the active pixel array, * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array.
- *The weight must range from 0 to 1000, and represents a weight + *
The weight must be within [0, 1000], and represents a weight
* for every pixel in the area. This means that a large metering area
* with the same weight as a smaller area will have more effect in
* the metering result. Metering areas can partially overlap and the
* camera device will add the weights in the overlap region.
If all regions have 0 weight, then no specific metering area - * needs to be used by the camera device. If the metering region is - * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, - * the camera device will ignore the sections outside the region and output the - * used sections in the result metadata.
+ *The weights are relative to weights of other metering regions, so if only one region + * is used, all non-zero weights will have the same effect. A region with 0 weight is + * ignored.
+ *If all regions have 0 weight, then no specific metering area needs to be used by the + * camera device.
+ *If the metering region is outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in + * capture result metadata, the camera device will ignore the sections outside the crop + * region and output only the intersection rectangle as the metering region in the result + * metadata. If the region is entirely outside the crop region, it will be ignored and + * not reported in the result metadata.
+ *Units: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *Range of valid values:
+ * Coordinates must be between [(0,0), (width, height)) of
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AF @@ -864,6 +991,13 @@ public final class CaptureRequest extends CameraMetadataSee {@link CaptureResult#CONTROL_AF_STATE android.control.afState} for what the trigger means for each AF mode.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureResult#CONTROL_AF_STATE * @see #CONTROL_AF_TRIGGER_IDLE @@ -877,9 +1011,26 @@ public final class CaptureRequest extends CameraMetadataWhether auto-white balance (AWB) is currently locked to its * latest calculated values.
+ *When set to true (ON), the AWB algorithm is locked to its latest parameters,
+ * and will not change color balance settings until the lock is set to false (OFF).
Since the camera device has a pipeline of in-flight requests, the settings that + * get locked do not necessarily correspond to the settings that were present in the + * latest capture result received from the camera device, since additional captures + * and AWB updates may have occurred even before the result was sent out. If an + * application is switching between automatic and manual control and wishes to eliminate + * any flicker during the switch, the following procedure is recommended:
+ *Note that AWB lock is only meaningful when * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} is in the AUTO mode; in other modes, * AWB is already fixed to a specific setting.
+ *Some LEGACY devices may not support ON; the value is then overridden to OFF.
+ *This key is available on all devices.
* * @see CaptureRequest#CONTROL_AWB_MODE */ @@ -907,10 +1058,26 @@ public final class CaptureRequest extends CameraMetadataPossible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AWB_AVAILABLE_MODES android.control.awbAvailableModes}
This key is available on all devices.
* * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_MODE * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM + * @see CameraCharacteristics#CONTROL_AWB_AVAILABLE_MODES * @see CaptureRequest#CONTROL_MODE * @see #CONTROL_AWB_MODE_OFF * @see #CONTROL_AWB_MODE_AUTO @@ -927,10 +1094,12 @@ public final class CaptureRequest extends CameraMetadataList of areas to use for illuminant + *
List of metering areas to use for auto-white-balance illuminant * estimation.
- *Optional. Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb} is 0. + *
Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb} is 0. * Otherwise will always be present.
+ *The maximum number of regions supported by the device is determined by the value + * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb}.
*The coordinate system is based on the active pixel array,
* with (0,0) being the top-left pixel in the active pixel array, and
* ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1,
@@ -941,11 +1110,20 @@ public final class CaptureRequest extends CameraMetadata
If all regions have 0 weight, then no specific metering area - * needs to be used by the camera device. If the metering region is - * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, - * the camera device will ignore the sections outside the region and output the - * used sections in the result metadata.
+ *The weights are relative to weights of other white balance metering regions, so if + * only one region is used, all non-zero weights will have the same effect. A region with + * 0 weight is ignored.
+ *If all regions have 0 weight, then no specific metering area needs to be used by the + * camera device.
+ *If the metering region is outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in + * capture result metadata, the camera device will ignore the sections outside the crop + * region and output only the intersection rectangle as the metering region in the result + * metadata. If the region is entirely outside the crop region, it will be ignored and + * not reported in the result metadata.
+ *Units: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *Range of valid values:
+ * Coordinates must be between [(0,0), (width, height)) of
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AWB @@ -965,7 +1143,18 @@ public final class CaptureRequest extends CameraMetadata{@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF and any 3A routine is active.
* ZERO_SHUTTER_LAG will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} * contains ZSL. MANUAL will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} - * contains MANUAL_SENSOR.
+ * contains MANUAL_SENSOR. Other intent values are always supported. + *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -989,10 +1178,23 @@ public final class CaptureRequest extends CameraMetadataA color effect will only be applied if - * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS android.control.availableEffects}
This key is available on all devices.
* - * @see CaptureRequest#CONTROL_MODE + * @see CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS * @see #CONTROL_EFFECT_MODE_OFF * @see #CONTROL_EFFECT_MODE_MONO * @see #CONTROL_EFFECT_MODE_NEGATIVE @@ -1008,9 +1210,9 @@ public final class CaptureRequest extends CameraMetadataOverall mode of 3A control + *
Overall mode of 3A (auto-exposure, auto-white-balance, auto-focus) control * routines.
- *High-level 3A control. When set to OFF, all 3A control + *
This is a top-level 3A control switch. When set to OFF, all 3A control * by the camera device is disabled. The application must set the fields for * capture parameters itself.
*When set to AUTO, the individual algorithm controls in
@@ -1025,6 +1227,18 @@ public final class CaptureRequest extends CameraMetadata
LEGACY mode devices will only support AUTO and USE_SCENE_MODE modes. + * LIMITED mode devices will only support OFF and OFF_KEEP_STATE if they + * support the MANUAL_SENSOR and MANUAL_POST_PROCSESING capabilities. + * FULL mode devices will always support OFF and OFF_KEEP_STATE.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AF_MODE * @see #CONTROL_MODE_OFF @@ -1037,18 +1251,41 @@ public final class CaptureRequest extends CameraMetadataA camera mode optimized for conditions typical in a particular - * capture setting.
+ *Control for which scene mode is currently active.
+ *Scene modes are custom camera modes optimized for a certain set of conditions and + * capture settings.
*This is the mode that that is active when
* {@link CaptureRequest#CONTROL_MODE android.control.mode} == USE_SCENE_MODE. Aside from FACE_PRIORITY,
* these modes will disable {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode},
- * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode}, and {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} while in use.
- * The scene modes available for a given camera device are listed in
- * {@link CameraCharacteristics#CONTROL_AVAILABLE_SCENE_MODES android.control.availableSceneModes}.
The interpretation and implementation of these scene modes is left * to the implementor of the camera device. Their behavior will not be * consistent across all devices, and any given device may only implement * a subset of these modes.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AVAILABLE_SCENE_MODES android.control.availableSceneModes}
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AF_MODE @@ -1081,18 +1318,26 @@ public final class CaptureRequest extends CameraMetadataWhether video stabilization is * active.
- *Video stabilization automatically translates and scales images from the camera - * in order to stabilize motion between consecutive frames.
+ *Video stabilization automatically translates and scales images from + * the camera in order to stabilize motion between consecutive frames.
*If enabled, video stabilization can modify the * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} to keep the video stream stabilized.
- *Switching between different video stabilization modes may take several frames - * to initialize, the camera device will report the current mode in capture result - * metadata. For example, When "ON" mode is requested, the video stabilization modes - * in the first several capture results may still be "OFF", and it will become "ON" - * when the initialization is done.
- *If a camera device supports both this mode and OIS ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), - * turning both modes on may produce undesirable interaction, so it is recommended not to - * enable both at the same time.
+ *Switching between different video stabilization modes may take several + * frames to initialize, the camera device will report the current mode + * in capture result metadata. For example, When "ON" mode is requested, + * the video stabilization modes in the first several capture results may + * still be "OFF", and it will become "ON" when the initialization is + * done.
+ *If a camera device supports both this mode and OIS + * ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), turning both modes on may + * produce undesirable interaction, so it is recommended not to enable + * both at the same time.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE * @see CaptureRequest#SCALER_CROP_REGION @@ -1106,16 +1351,28 @@ public final class CaptureRequest extends CameraMetadataOperation mode for edge * enhancement.
- *Edge/sharpness/detail enhancement. OFF means no - * enhancement will be applied by the camera device.
- *This must be set to one of the modes listed in {@link CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES android.edge.availableEdgeModes}.
+ *Edge enhancement improves sharpness and details in the captured image. OFF means + * no enhancement will be applied by the camera device.
*FAST/HIGH_QUALITY both mean camera device determined enhancement * will be applied. HIGH_QUALITY mode indicates that the * camera device will use the highest-quality enhancement algorithms, * even if it slows down capture rate. FAST means the camera device will * not slow down capture rate when applying edge enhancement.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES android.edge.availableEdgeModes}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #EDGE_MODE_OFF * @see #EDGE_MODE_FAST * @see #EDGE_MODE_HIGH_QUALITY @@ -1139,6 +1396,13 @@ public final class CaptureRequest extends CameraMetadataWhen set to TORCH, the flash will be on continuously. This mode can be used * for use cases such as preview, auto-focus assist, still capture, or video recording.
*The flash status will be reported by {@link CaptureResult#FLASH_STATE android.flash.state} in the capture result metadata.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER @@ -1153,12 +1417,19 @@ public final class CaptureRequest extends CameraMetadataSet operational mode for hot pixel correction.
- *Valid modes for this camera device are listed in - * {@link CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES android.hotPixel.availableHotPixelModes}.
+ *Operational mode for hot pixel correction.
*Hotpixel correction interpolates out, or otherwise removes, pixels - * that do not accurately encode the incoming light (i.e. pixels that - * are stuck at an arbitrary value).
+ * that do not accurately measure the incoming light (i.e. pixels that + * are stuck at an arbitrary value or are oversensitive). + *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES android.hotPixel.availableHotPixelModes}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES * @see #HOT_PIXEL_MODE_OFF @@ -1171,6 +1442,10 @@ public final class CaptureRequest extends CameraMetadataA location object to use when generating image GPS metadata.
+ *Setting a location object in a request will include the GPS coordinates of the location + * into any JPEG images captured based on the request. These coordinates can then be + * viewed by anyone who receives the JPEG image.
+ *This key is available on all devices.
*/ @PublicKey @SyntheticKey @@ -1179,7 +1454,10 @@ public final class CaptureRequest extends CameraMetadataGPS coordinates to include in output JPEG - * EXIF
+ * EXIF. + *Range of valid values:
+ * (-180 - 180], [-90,90], [-inf, inf]
This key is available on all devices.
* @hide */ public static final Key32 characters describing GPS algorithm to - * include in EXIF
+ * include in EXIF. + *Units: UTF-8 null-terminated string
+ *This key is available on all devices.
* @hide */ public static final KeyTime GPS fix was made to include in - * EXIF
+ * EXIF. + *Units: UTC in seconds since January 1, 1970
+ *This key is available on all devices.
* @hide */ public static final KeyOrientation of JPEG image to - * write
+ *The orientation for a JPEG image.
+ *The clockwise rotation angle in degrees, relative to the orientation + * to the camera, that the JPEG picture needs to be rotated by, to be viewed + * upright.
+ *Camera devices may either encode this value into the JPEG EXIF header, or + * rotate the image data to match this orientation.
+ *Note that this orientation is relative to the orientation of the camera sensor, given + * by {@link CameraCharacteristics#SENSOR_ORIENTATION android.sensor.orientation}.
+ *To translate from the device orientation given by the Android sensor APIs, the following + * sample code may be used:
+ *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;
+ * }
+ *
+ * Units: Degrees in multiples of 90
+ *Range of valid values:
+ * 0, 90, 180, 270
This key is available on all devices.
+ * + * @see CameraCharacteristics#SENSOR_ORIENTATION */ @PublicKey public static final KeyCompression quality of the final JPEG * image.
*85-95 is typical usage range.
+ *Range of valid values:
+ * 1-100; larger is higher quality
This key is available on all devices.
*/ @PublicKey public static final KeyCompression quality of JPEG * thumbnail.
+ *Range of valid values:
+ * 1-100; larger is higher quality
This key is available on all devices.
*/ @PublicKey public static final KeyResolution of embedded JPEG thumbnail.
*When set to (0, 0) value, the JPEG EXIF will not contain thumbnail, * but the captured JPEG will still be a valid image.
- *When a jpeg image capture is issued, the thumbnail size selected should have - * the same aspect ratio as the jpeg image.
+ *For best results, when issuing a request for a JPEG image, the thumbnail size selected + * should have the same aspect ratio as the main JPEG output.
*If the thumbnail image aspect ratio differs from the JPEG primary image aspect * ratio, the camera device creates the thumbnail by cropping it from the primary image. * For example, if the primary image has 4:3 aspect ratio, the thumbnail image has * 16:9 aspect ratio, the primary image will be cropped vertically (letterbox) to * generate the thumbnail image. The thumbnail image will always have a smaller Field * Of View (FOV) than the primary image when aspect ratios differ.
+ *Range of valid values:
+ * {@link CameraCharacteristics#JPEG_AVAILABLE_THUMBNAIL_SIZES android.jpeg.availableThumbnailSizes}
This key is available on all devices.
+ * + * @see CameraCharacteristics#JPEG_AVAILABLE_THUMBNAIL_SIZES */ @PublicKey public static final KeyThe ratio of lens focal length to the effective - * aperture diameter.
- *This will only be supported on the camera devices that - * have variable aperture lens. The aperture value can only be - * one of the values listed in {@link CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES android.lens.info.availableApertures}.
+ *The desired lens aperture size, as a ratio of lens focal length to the + * effective aperture diameter.
+ *Setting this value is only supported on the camera devices that have a variable + * aperture lens.
*When this is supported and {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is OFF,
* this can be set along with {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime},
* {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity}, and {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}
@@ -1261,8 +1585,16 @@ public final class CaptureRequest extends CameraMetadata
Units: The f-number (f/N)
+ *Range of valid values:
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES android.lens.info.availableApertures}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#CONTROL_AE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES * @see CaptureResult#LENS_STATE * @see CaptureRequest#SENSOR_EXPOSURE_TIME @@ -1274,10 +1606,8 @@ public final class CaptureRequest extends CameraMetadataState of lens neutral density filter(s).
- *This will not be supported on most camera devices. On devices - * where this is supported, this may only be set to one of the - * values included in {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES android.lens.info.availableFilterDensities}.
+ *The desired setting for the lens neutral density filter(s).
+ *This control will not be supported on most camera devices.
*Lens filters are typically used to lower the amount of light the
* sensor is exposed to (measured in steps of EV). As used here, an EV
* step is the standard logarithmic representation, which are
@@ -1289,7 +1619,15 @@ public final class CaptureRequest extends CameraMetadata It may take several frames before the lens filter density changes
* to the requested value. While the filter density is still changing,
* {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING. Units: Exposure Value (EV) Range of valid values: Optional - This value may be {@code null} on some devices. Full capability -
+ * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the
+ * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key The current lens focal length; used for optical zoom. The desired lens focal length; used for optical zoom. This setting controls the physical focal length of the camera
* device's lens. Changing the focal length changes the field of
* view of the camera device, and is usually used for optical zoom.
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES android.lens.info.availableFilterDensities}
This is expected not to be supported on most devices.
+ *Optical zoom will not be supported on most devices.
+ *Units: Millimeters
+ *Range of valid values:
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS android.lens.info.availableFocalLengths}
This key is available on all devices.
* * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FOCUS_DISTANCE + * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS * @see CaptureResult#LENS_STATE */ @PublicKey @@ -1318,16 +1661,30 @@ public final class CaptureRequest extends CameraMetadataDistance to plane of sharpest focus, + *
Desired distance to plane of sharpest focus, * measured from frontmost surface of the lens.
- *0 means infinity focus. Used value will be clamped - * to [0, {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}].
+ *This control can be used for setting manual focus, on devices that support + * the MANUAL_SENSOR capability and have a variable-focus lens (see + * {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}).
+ *A value of 0.0f means infinity focus. The value set will be clamped to
+ * [0.0f, {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}].
Like {@link CaptureRequest#LENS_FOCAL_LENGTH android.lens.focalLength}, this setting won't be applied * instantaneously, and it may take several frames before the lens * can move to the requested focus distance. While the lens is still moving, * {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING.
+ *LEGACY devices support at most setting this to 0.0f
+ * for infinity focus.
Units: See {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} for details
+ *Range of valid values:
+ * >= 0
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_FOCAL_LENGTH + * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE * @see CaptureResult#LENS_STATE */ @@ -1349,14 +1706,26 @@ public final class CaptureRequest extends CameraMetadataIf a camera device supports both OIS and EIS ({@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE android.control.videoStabilizationMode}), - * turning both modes on may produce undesirable interaction, so it is recommended not - * to enable both at the same time.
+ *If a camera device supports both OIS and digital image stabilization + * ({@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE android.control.videoStabilizationMode}), turning both modes on may produce undesirable + * interaction, so it is recommended not to enable both at the same time.
*Not all devices will support OIS; see * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION android.lens.info.availableOpticalStabilization} for * available controls.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION android.lens.info.availableOpticalStabilization}
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION * @see #LENS_OPTICAL_STABILIZATION_MODE_OFF * @see #LENS_OPTICAL_STABILIZATION_MODE_ON @@ -1367,16 +1736,28 @@ public final class CaptureRequest extends CameraMetadataMode of operation for the noise reduction algorithm.
- *Noise filtering control. OFF means no noise reduction - * will be applied by the camera device.
- *This must be set to a valid mode from - * {@link CameraCharacteristics#NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES android.noiseReduction.availableNoiseReductionModes}.
+ *The noise reduction algorithm attempts to improve image quality by removing + * excessive noise added by the capture process, especially in dark conditions. + * OFF means no noise reduction will be applied by the camera device.
*FAST/HIGH_QUALITY both mean camera device determined noise filtering * will be applied. HIGH_QUALITY mode indicates that the camera device * will use the highest-quality noise filtering algorithms, * even if it slows down capture rate. FAST means the camera device will not * slow down capture rate when applying noise filtering.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES android.noiseReduction.availableNoiseReductionModes}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES * @see #NOISE_REDUCTION_MODE_OFF * @see #NOISE_REDUCTION_MODE_FAST @@ -1390,13 +1771,18 @@ public final class CaptureRequest extends CameraMetadataAn application-specified ID for the current * request. Must be maintained unchanged in output * frame
+ *Units: arbitrary integer assigned by application
+ *Range of valid values:
+ * Any int
Optional - This value may be {@code null} on some devices.
* @hide */ public static final KeyThe region of the sensor to read out for this capture.
+ *The desired region of the sensor to read out for this capture.
+ *This control can be used to implement digital zoom.
*The crop region coordinate system is based off
* {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0, 0) being the
* top-left corner of the sensor active array.
Units: Pixel coordinates relative to + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *This key is available on all devices.
* * @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE @@ -1437,8 +1826,23 @@ public final class CaptureRequest extends CameraMetadataDuration each pixel is exposed to * light.
- *If the sensor can't expose this exact duration, it should shorten the - * duration exposed to the nearest possible value (rather than expose longer).
+ *If the sensor can't expose this exact duration, it will shorten the + * duration exposed to the nearest possible value (rather than expose longer). + * The final exposure time used will be available in the output capture result.
+ *This control is only effective if {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} or {@link CaptureRequest#CONTROL_MODE android.control.mode} is set to + * OFF; otherwise the auto-exposure algorithm will override this value.
+ *Units: Nanoseconds
+ *Range of valid values:
+ * {@link CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE android.sensor.info.exposureTimeRange}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CaptureRequest#CONTROL_AE_MODE + * @see CaptureRequest#CONTROL_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL + * @see CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE */ @PublicKey public static final KeyFor more details about stalling, see * StreamConfigurationMap#getOutputStallDuration(int,Size).
+ *This control is only effective if {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} or {@link CaptureRequest#CONTROL_MODE android.control.mode} is set to + * OFF; otherwise the auto-exposure algorithm will override this value.
+ *Units: Nanoseconds
+ *Range of valid values:
+ * See {@link CameraCharacteristics#SENSOR_INFO_MAX_FRAME_DURATION android.sensor.info.maxFrameDuration},
+ * {@link CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP android.scaler.streamConfigurationMap}. The duration
+ * is capped to max(duration, exposureTime + overhead).
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CaptureRequest#CONTROL_AE_MODE + * @see CaptureRequest#CONTROL_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP + * @see CameraCharacteristics#SENSOR_INFO_MAX_FRAME_DURATION */ @PublicKey public static final KeyUnits: ISO arithmetic units
+ *Range of valid values:
+ * {@link CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE android.sensor.info.sensitivityRange}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE * @see CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY */ @@ -1569,7 +1996,21 @@ public final class CaptureRequest extends CameraMetadataFor example, if manual flash is enabled, flash firing should still * occur (and that the test pattern remain unmodified, since the flash * would not actually affect it).
+ *Defaults to OFF.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODES android.sensor.availableTestPatternModes}
Optional - This value may be {@code null} on some devices.
+ * + * @see CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODES * @see #SENSOR_TEST_PATTERN_MODE_OFF * @see #SENSOR_TEST_PATTERN_MODE_SOLID_COLOR * @see #SENSOR_TEST_PATTERN_MODE_COLOR_BARS @@ -1587,30 +2028,41 @@ public final class CaptureRequest extends CameraMetadataWhen set to OFF mode, no lens shading correction will be applied by the
* camera device, and an identity lens shading map data will be provided
* if {@link CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE android.statistics.lensShadingMapMode} == ON. For example, for lens
- * shading map with size specified as android.lens.info.shadingMapSize = [ 4, 3 ],
- * the output android.statistics.lensShadingMap for this case will be an identity map
- * shown below:
[ 4, 3 ],
+ * the output {@link CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP android.statistics.lensShadingCorrectionMap} for this case will be an identity
+ * map shown below:
* [ 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 ]
+ * 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 ]
*
- * When set to other modes, lens shading correction will be applied by the - * camera device. Applications can request lens shading map data by setting - * {@link CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE android.statistics.lensShadingMapMode} to ON, and then the camera device will provide - * lens shading map data in android.statistics.lensShadingMap, with size specified - * by android.lens.info.shadingMapSize; the returned shading map data will be the one - * applied by the camera device for this capture request.
- *The shading map data may depend on the auto-exposure (AE) and AWB statistics, therefore the reliability
- * of the map data may be affected by the AE and AWB algorithms. When AE and AWB are in
- * AUTO modes({@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} != OFF and {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} != OFF),
- * to get best results, it is recommended that the applications wait for the AE and AWB to
- * be converged before using the returned shading map data.
When set to other modes, lens shading correction will be applied by the camera + * device. Applications can request lens shading map data by setting + * {@link CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE android.statistics.lensShadingMapMode} to ON, and then the camera device will provide lens + * shading map data in {@link CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP android.statistics.lensShadingCorrectionMap}; the returned shading map + * data will be the one applied by the camera device for this capture request.
+ *The shading map data may depend on the auto-exposure (AE) and AWB statistics, therefore
+ * the reliability of the map data may be affected by the AE and AWB algorithms. When AE and
+ * AWB are in AUTO modes({@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} != OFF and {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} !=
+ * OFF), to get best results, it is recommended that the applications wait for the AE and AWB
+ * to be converged before using the returned shading map data.
Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL + * @see CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE * @see #SHADING_MODE_OFF * @see #SHADING_MODE_FAST @@ -1621,12 +2073,20 @@ public final class CaptureRequest extends CameraMetadataControl for the face detector + *
Operating mode for the face detector * unit.
*Whether face detection is enabled, and whether it * should output just the basic fields or the full set of - * fields. Value must be one of the - * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}.
+ * fields. + *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}
This key is available on all devices.
* * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES * @see #STATISTICS_FACE_DETECT_MODE_OFF @@ -1638,10 +2098,12 @@ public final class CaptureRequest extends CameraMetadataOperating mode for hotpixel map generation.
- *If set to ON, a hotpixel map is returned in {@link CaptureResult#STATISTICS_HOT_PIXEL_MAP android.statistics.hotPixelMap}. - * If set to OFF, no hotpixel map will be returned.
- *This must be set to a valid mode from {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES android.statistics.info.availableHotPixelMapModes}.
+ *Operating mode for hot pixel map generation.
+ *If set to true, a hot pixel map is returned in {@link CaptureResult#STATISTICS_HOT_PIXEL_MAP android.statistics.hotPixelMap}.
+ * If set to false, no hot pixel map will be returned.
Range of valid values:
+ * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES android.statistics.info.availableHotPixelMapModes}
Optional - This value may be {@code null} on some devices.
* * @see CaptureResult#STATISTICS_HOT_PIXEL_MAP * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES @@ -1656,6 +2118,18 @@ public final class CaptureRequest extends CameraMetadataWhen set to ON, * android.statistics.lensShadingMap will be provided in * the output result metadata.
+ *ON is always supported on devices with the RAW capability.
+ *Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #STATISTICS_LENS_SHADING_MAP_MODE_OFF * @see #STATISTICS_LENS_SHADING_MAP_MODE_ON */ @@ -1668,7 +2142,12 @@ public final class CaptureRequest extends CameraMetadataSee android.tonemap.curveRed for more details.
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE * @hide */ @@ -1680,7 +2159,12 @@ public final class CaptureRequest extends CameraMetadataSee android.tonemap.curveRed for more details.
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE * @hide */ @@ -1693,10 +2177,10 @@ public final class CaptureRequest extends CameraMetadataEach channel's curve is defined by an array of control points:
*android.tonemap.curveRed =
- * [ P0in, P0out, P1in, P1out, P2in, P2out, P3in, P3out, ..., PNin, PNout ]
+ * [ P0in, P0out, P1in, P1out, P2in, P2out, P3in, P3out, ..., PNin, PNout ]
* 2 <= N <= {@link CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS android.tonemap.maxCurvePoints}
- * These are sorted in order of increasing Pin; it is always
- * guaranteed that input values 0.0 and 1.0 are included in the list to
+ *
These are sorted in order of increasing Pin; it is
+ * required that input values 0.0 and 1.0 are included in the list to
* define a complete mapping. For input values between control points,
* the camera device must linearly interpolate between the control
* points.

Gamma 1/2.2 mapping, with 16 control points:
*android.tonemap.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 ]
+ * 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 ]
*
* 
Standard sRGB gamma mapping, per IEC 61966-2-1:1999, with 16 control points:
*android.tonemap.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 ]
+ * 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 ]
*
* 
Range of valid values:
+ * 0-1 on both input and output coordinates, normalized
+ * as a floating-point value such that 0 == black and 1 == white.
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS * @see CaptureRequest#TONEMAP_MODE * @hide @@ -1747,7 +2239,7 @@ public final class CaptureRequest extends CameraMetadatacurveRed =
- * [ P0(in, out), P1(in, out), P2(in, out), P3(in, out), ..., PN(in, out) ]
+ * [ P0(in, out), P1(in, out), P2(in, out), P3(in, out), ..., PN(in, out) ]
* 2 <= N <= {@link CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS android.tonemap.maxCurvePoints}
* These are sorted in order of increasing Gamma 1/2.2 mapping, with 16 control points: Standard sRGB gamma mapping, per IEC 61966-2-1:1999, with 16 control points: Optional - This value may be {@code null} on some devices. Full capability -
+ * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the
+ * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} keyPin; it is always
* guaranteed that input values 0.0 and 1.0 are included in the list to
@@ -1771,21 +2263,26 @@ public final class CaptureRequest extends CameraMetadata
* 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) ]
+ * (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) ]
* 
* 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) ]
+ * (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) ]
* 
This must be set to a valid mode in - * {@link CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES android.tonemap.availableToneMapModes}.
*When using either FAST or HIGH_QUALITY, the camera device will
* emit its own tonemap curve in {@link CaptureRequest#TONEMAP_CURVE android.tonemap.curve}.
* These values are always available, and as close as possible to the
@@ -1816,7 +2311,20 @@ public final class CaptureRequest extends CameraMetadata If a request is sent with CONTRAST_CURVE with the camera device's
* provided curve in FAST or HIGH_QUALITY, the image's tonemap will be
* roughly the same. Possible values:
+ *
+ *
Available values for this device:
+ * {@link CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES android.tonemap.availableToneMapModes}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES * @see CaptureRequest#TONEMAP_CURVE * @see CaptureRequest#TONEMAP_MODE @@ -1839,6 +2347,7 @@ public final class CaptureRequest extends CameraMetadataThe LED may be off if a trusted application is using the data that * doesn't violate the above rules.
+ *Optional - This value may be {@code null} on some devices.
* @hide */ public static final KeyWhether black-level compensation is locked * to its current values, or is free to vary.
- *When set to ON, the values used for black-level + *
When set to true (ON), the values used for black-level
* compensation will not change until the lock is set to
- * OFF.
false (OFF).
* Since changes to certain capture parameters (such as
* exposure time) may require resetting of black level
* compensation, the camera device must report whether setting
@@ -1882,6 +2391,12 @@ public final class CaptureRequest extends CameraMetadata
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final KeyThe mode control selects how the image data is converted from the * sensor's native color into linear sRGB color.
@@ -369,10 +368,21 @@ public class CaptureResult extends CameraMetadataBoth the input and output value ranges must match. Overflow/underflow * values are clipped to fit within the range.
+ *Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #COLOR_CORRECTION_MODE_TRANSFORM_MATRIX * @see #COLOR_CORRECTION_MODE_FAST * @see #COLOR_CORRECTION_MODE_HIGH_QUALITY @@ -393,8 +403,14 @@ public class CaptureResult extends CameraMetadata[0, 1.0] (assuming input color
* values is within the normalized range [0, 1.0]), or clipping may occur.
+ * Units: Unitless scale factors
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final KeyThe gains in the result metadata are the gains actually * applied by the camera device to the current frame.
+ *Units: Unitless gain factors
+ *Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final KeyMode of operation for the chromatic aberration correction algorithm.
- *This must be set to a valid mode from - * {@link CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES android.colorCorrection.availableAberrationModes}.
*Chromatic (color) aberration is caused by the fact that different wavelengths of light
* can not focus on the same point after exiting from the lens. This metadata defines
* the high level control of chromatic aberration correction algorithm, which aims to
@@ -431,6 +451,16 @@ public class CaptureResult extends CameraMetadata
LEGACY devices will always be in FAST mode.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES android.colorCorrection.availableAberrationModes}
This key is available on all devices.
* * @see CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES * @see #COLOR_CORRECTION_ABERRATION_MODE_OFF @@ -463,7 +493,7 @@ public class CaptureResult extends CameraMetadataThe default mode is AUTO, which must be supported by all + *
The default mode is AUTO, which is supported by all * camera devices.
*If manual exposure control is enabled (by setting
* {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} or {@link CaptureRequest#CONTROL_MODE android.control.mode} to OFF),
@@ -471,6 +501,16 @@ public class CaptureResult extends CameraMetadata
Possible values: + *
Available values for this device:
{@link CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES android.control.aeAvailableAntibandingModes}
+ *This key is available on all devices.
* * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES * @see CaptureRequest#CONTROL_AE_MODE @@ -503,6 +543,10 @@ public class CaptureResult extends CameraMetadataUnits: Compensation steps
+ *Range of valid values:
+ * {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE android.control.aeCompensationRange}
This key is available on all devices.
* * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP @@ -517,9 +561,11 @@ public class CaptureResult extends CameraMetadataWhether auto-exposure (AE) is currently locked to its latest * calculated values.
- *Note that even when AE is locked, the flash may be - * fired if the {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is ON_AUTO_FLASH / ON_ALWAYS_FLASH / - * ON_AUTO_FLASH_REDEYE.
+ *When set to true (ON), the AE algorithm is locked to its latest parameters,
+ * and will not change exposure settings until the lock is set to false (OFF).
Note that even when AE is locked, the flash may be fired if + * the {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is ON_AUTO_FLASH / + * ON_ALWAYS_FLASH / ON_AUTO_FLASH_REDEYE.
*When {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION android.control.aeExposureCompensation} is changed, even if the AE lock * is ON, the camera device will still adjust its exposure value.
*If AE precapture is triggered (see {@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger})
@@ -528,7 +574,21 @@ public class CaptureResult extends CameraMetadata
Since the camera device has a pipeline of in-flight requests, the settings that + * get locked do not necessarily correspond to the settings that were present in the + * latest capture result received from the camera device, since additional captures + * and AE updates may have occurred even before the result was sent out. If an + * application is switching between automatic and manual control and wishes to eliminate + * any flicker during the switch, the following procedure is recommended:
+ *See {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE lock related state transition details.
+ *This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION * @see CaptureRequest#CONTROL_AE_MODE @@ -562,7 +622,19 @@ public class CaptureResult extends CameraMetadataPossible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AE_AVAILABLE_MODES android.control.aeAvailableModes}
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_MODES * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#FLASH_INFO_AVAILABLE * @see CaptureRequest#FLASH_MODE @@ -580,25 +652,35 @@ public class CaptureResult extends CameraMetadataList of areas to use for - * metering.
- *Optional. Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe} is 0. + *
List of metering areas to use for auto-exposure adjustment.
+ *Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe} is 0. * Otherwise will always be present.
+ *The maximum number of regions supported by the device is determined by the value + * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe}.
*The coordinate system is based on the active pixel array, * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array.
- *The weight must range from 0 to 1000, and represents a weight + *
The weight must be within [0, 1000], and represents a weight
* for every pixel in the area. This means that a large metering area
* with the same weight as a smaller area will have more effect in
* the metering result. Metering areas can partially overlap and the
* camera device will add the weights in the overlap region.
If all regions have 0 weight, then no specific metering area - * needs to be used by the camera device. If the metering region is - * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, - * the camera device will ignore the sections outside the region and output the - * used sections in the result metadata.
+ *The weights are relative to weights of other exposure metering regions, so if only one + * region is used, all non-zero weights will have the same effect. A region with 0 + * weight is ignored.
+ *If all regions have 0 weight, then no specific metering area needs to be used by the + * camera device.
+ *If the metering region is outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in + * capture result metadata, the camera device will ignore the sections outside the crop + * region and output only the intersection rectangle as the metering region in the result + * metadata. If the region is entirely outside the crop region, it will be ignored and + * not reported in the result metadata.
+ *Units: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *Range of valid values:
+ * Coordinates must be between [(0,0), (width, height)) of
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AE @@ -610,12 +692,20 @@ public class CaptureResult extends CameraMetadataRange over which fps can be adjusted to - * maintain exposure.
+ *Range over which the auto-exposure routine can + * adjust the capture frame rate to maintain good + * exposure.
*Only constrains auto-exposure (AE) algorithm, not - * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}
+ * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} and + * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}. + *Units: Frames per second (FPS)
+ *Range of valid values:
+ * Any of the entries in {@link CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES android.control.aeAvailableTargetFpsRanges}
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES * @see CaptureRequest#SENSOR_EXPOSURE_TIME + * @see CaptureRequest#SENSOR_FRAME_DURATION */ @PublicKey public static final KeyOn LEGACY-level devices, the precapture trigger is not supported; + * capturing a high-resolution JPEG image will automatically trigger a + * precapture sequence before the high-resolution capture, including + * potentially firing a pre-capture flash.
+ *Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureResult#CONTROL_AE_STATE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE * @see #CONTROL_AE_PRECAPTURE_TRIGGER_START */ @@ -831,12 +935,26 @@ public class CaptureResult extends CameraMetadataPossible values: + *
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#CONTROL_AE_LOCK * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER * @see CaptureRequest#CONTROL_MODE * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_STATE_INACTIVE * @see #CONTROL_AE_STATE_SEARCHING * @see #CONTROL_AE_STATE_CONVERGED @@ -856,7 +974,20 @@ public class CaptureResult extends CameraMetadataIf the lens is controlled by the camera device auto-focus algorithm, * the camera device will report the current AF status in {@link CaptureResult#CONTROL_AF_STATE android.control.afState} * in result metadata.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AF_AVAILABLE_MODES android.control.afAvailableModes}
This key is available on all devices.
* + * @see CameraCharacteristics#CONTROL_AF_AVAILABLE_MODES * @see CaptureResult#CONTROL_AF_STATE * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE @@ -872,25 +1003,35 @@ public class CaptureResult extends CameraMetadataList of areas to use for focus - * estimation.
- *Optional. Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf} is 0. + *
List of metering areas to use for auto-focus.
+ *Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf} is 0. * Otherwise will always be present.
+ *The maximum number of focus areas supported by the device is determined by the value + * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf}.
*The coordinate system is based on the active pixel array, * with (0,0) being the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the * bottom-right pixel in the active pixel array.
- *The weight must range from 0 to 1000, and represents a weight + *
The weight must be within [0, 1000], and represents a weight
* for every pixel in the area. This means that a large metering area
* with the same weight as a smaller area will have more effect in
* the metering result. Metering areas can partially overlap and the
* camera device will add the weights in the overlap region.
If all regions have 0 weight, then no specific metering area - * needs to be used by the camera device. If the metering region is - * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, - * the camera device will ignore the sections outside the region and output the - * used sections in the result metadata.
+ *The weights are relative to weights of other metering regions, so if only one region + * is used, all non-zero weights will have the same effect. A region with 0 weight is + * ignored.
+ *If all regions have 0 weight, then no specific metering area needs to be used by the + * camera device.
+ *If the metering region is outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in + * capture result metadata, the camera device will ignore the sections outside the crop + * region and output only the intersection rectangle as the metering region in the result + * metadata. If the region is entirely outside the crop region, it will be ignored and + * not reported in the result metadata.
+ *Units: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *Range of valid values:
+ * Coordinates must be between [(0,0), (width, height)) of
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AF @@ -914,6 +1055,13 @@ public class CaptureResult extends CameraMetadataSee {@link CaptureResult#CONTROL_AF_STATE android.control.afState} for what the trigger means for each AF mode.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureResult#CONTROL_AF_STATE * @see #CONTROL_AF_TRIGGER_IDLE @@ -1306,6 +1454,17 @@ public class CaptureResult extends CameraMetadataPossible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AF_MODE * @see CaptureRequest#CONTROL_MODE @@ -1325,9 +1484,26 @@ public class CaptureResult extends CameraMetadataWhether auto-white balance (AWB) is currently locked to its * latest calculated values.
+ *When set to true (ON), the AWB algorithm is locked to its latest parameters,
+ * and will not change color balance settings until the lock is set to false (OFF).
Since the camera device has a pipeline of in-flight requests, the settings that + * get locked do not necessarily correspond to the settings that were present in the + * latest capture result received from the camera device, since additional captures + * and AWB updates may have occurred even before the result was sent out. If an + * application is switching between automatic and manual control and wishes to eliminate + * any flicker during the switch, the following procedure is recommended:
+ *Note that AWB lock is only meaningful when * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} is in the AUTO mode; in other modes, * AWB is already fixed to a specific setting.
+ *Some LEGACY devices may not support ON; the value is then overridden to OFF.
+ *This key is available on all devices.
* * @see CaptureRequest#CONTROL_AWB_MODE */ @@ -1355,10 +1531,26 @@ public class CaptureResult extends CameraMetadataPossible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AWB_AVAILABLE_MODES android.control.awbAvailableModes}
This key is available on all devices.
* * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_MODE * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM + * @see CameraCharacteristics#CONTROL_AWB_AVAILABLE_MODES * @see CaptureRequest#CONTROL_MODE * @see #CONTROL_AWB_MODE_OFF * @see #CONTROL_AWB_MODE_AUTO @@ -1375,10 +1567,12 @@ public class CaptureResult extends CameraMetadataList of areas to use for illuminant + *
List of metering areas to use for auto-white-balance illuminant * estimation.
- *Optional. Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb} is 0. + *
Not available if {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb} is 0. * Otherwise will always be present.
+ *The maximum number of regions supported by the device is determined by the value + * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb}.
*The coordinate system is based on the active pixel array,
* with (0,0) being the top-left pixel in the active pixel array, and
* ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1,
@@ -1389,11 +1583,20 @@ public class CaptureResult extends CameraMetadata
If all regions have 0 weight, then no specific metering area - * needs to be used by the camera device. If the metering region is - * outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in capture result metadata, - * the camera device will ignore the sections outside the region and output the - * used sections in the result metadata.
+ *The weights are relative to weights of other white balance metering regions, so if + * only one region is used, all non-zero weights will have the same effect. A region with + * 0 weight is ignored.
+ *If all regions have 0 weight, then no specific metering area needs to be used by the + * camera device.
+ *If the metering region is outside the used {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} returned in + * capture result metadata, the camera device will ignore the sections outside the crop + * region and output only the intersection rectangle as the metering region in the result + * metadata. If the region is entirely outside the crop region, it will be ignored and + * not reported in the result metadata.
+ *Units: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
+ *Range of valid values:
+ * Coordinates must be between [(0,0), (width, height)) of
+ * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AWB @@ -1413,7 +1616,18 @@ public class CaptureResult extends CameraMetadata{@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF and any 3A routine is active.
* ZERO_SHUTTER_LAG will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} * contains ZSL. MANUAL will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} - * contains MANUAL_SENSOR.
+ * contains MANUAL_SENSOR. Other intent values are always supported. + *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -1546,11 +1760,23 @@ public class CaptureResult extends CameraMetadataPossible values: + *
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#CONTROL_AWB_LOCK * @see CaptureRequest#CONTROL_AWB_MODE * @see CaptureRequest#CONTROL_MODE * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AWB_STATE_INACTIVE * @see #CONTROL_AWB_STATE_SEARCHING * @see #CONTROL_AWB_STATE_CONVERGED @@ -1568,10 +1794,23 @@ public class CaptureResult extends CameraMetadataA color effect will only be applied if - * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS android.control.availableEffects}
This key is available on all devices.
* - * @see CaptureRequest#CONTROL_MODE + * @see CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS * @see #CONTROL_EFFECT_MODE_OFF * @see #CONTROL_EFFECT_MODE_MONO * @see #CONTROL_EFFECT_MODE_NEGATIVE @@ -1587,9 +1826,9 @@ public class CaptureResult extends CameraMetadataOverall mode of 3A control + *
Overall mode of 3A (auto-exposure, auto-white-balance, auto-focus) control * routines.
- *High-level 3A control. When set to OFF, all 3A control + *
This is a top-level 3A control switch. When set to OFF, all 3A control * by the camera device is disabled. The application must set the fields for * capture parameters itself.
*When set to AUTO, the individual algorithm controls in
@@ -1604,6 +1843,18 @@ public class CaptureResult extends CameraMetadata
LEGACY mode devices will only support AUTO and USE_SCENE_MODE modes. + * LIMITED mode devices will only support OFF and OFF_KEEP_STATE if they + * support the MANUAL_SENSOR and MANUAL_POST_PROCSESING capabilities. + * FULL mode devices will always support OFF and OFF_KEEP_STATE.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AF_MODE * @see #CONTROL_MODE_OFF @@ -1616,18 +1867,41 @@ public class CaptureResult extends CameraMetadataA camera mode optimized for conditions typical in a particular - * capture setting.
+ *Control for which scene mode is currently active.
+ *Scene modes are custom camera modes optimized for a certain set of conditions and + * capture settings.
*This is the mode that that is active when
* {@link CaptureRequest#CONTROL_MODE android.control.mode} == USE_SCENE_MODE. Aside from FACE_PRIORITY,
* these modes will disable {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode},
- * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode}, and {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} while in use.
- * The scene modes available for a given camera device are listed in
- * {@link CameraCharacteristics#CONTROL_AVAILABLE_SCENE_MODES android.control.availableSceneModes}.
The interpretation and implementation of these scene modes is left * to the implementor of the camera device. Their behavior will not be * consistent across all devices, and any given device may only implement * a subset of these modes.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#CONTROL_AVAILABLE_SCENE_MODES android.control.availableSceneModes}
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AF_MODE @@ -1660,18 +1934,26 @@ public class CaptureResult extends CameraMetadataWhether video stabilization is * active.
- *Video stabilization automatically translates and scales images from the camera - * in order to stabilize motion between consecutive frames.
+ *Video stabilization automatically translates and scales images from + * the camera in order to stabilize motion between consecutive frames.
*If enabled, video stabilization can modify the * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion} to keep the video stream stabilized.
- *Switching between different video stabilization modes may take several frames - * to initialize, the camera device will report the current mode in capture result - * metadata. For example, When "ON" mode is requested, the video stabilization modes - * in the first several capture results may still be "OFF", and it will become "ON" - * when the initialization is done.
- *If a camera device supports both this mode and OIS ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), - * turning both modes on may produce undesirable interaction, so it is recommended not to - * enable both at the same time.
+ *Switching between different video stabilization modes may take several + * frames to initialize, the camera device will report the current mode + * in capture result metadata. For example, When "ON" mode is requested, + * the video stabilization modes in the first several capture results may + * still be "OFF", and it will become "ON" when the initialization is + * done.
+ *If a camera device supports both this mode and OIS + * ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), turning both modes on may + * produce undesirable interaction, so it is recommended not to enable + * both at the same time.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE * @see CaptureRequest#SCALER_CROP_REGION @@ -1685,16 +1967,28 @@ public class CaptureResult extends CameraMetadataOperation mode for edge * enhancement.
- *Edge/sharpness/detail enhancement. OFF means no - * enhancement will be applied by the camera device.
- *This must be set to one of the modes listed in {@link CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES android.edge.availableEdgeModes}.
+ *Edge enhancement improves sharpness and details in the captured image. OFF means + * no enhancement will be applied by the camera device.
*FAST/HIGH_QUALITY both mean camera device determined enhancement * will be applied. HIGH_QUALITY mode indicates that the * camera device will use the highest-quality enhancement algorithms, * even if it slows down capture rate. FAST means the camera device will * not slow down capture rate when applying edge enhancement.
+ *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES android.edge.availableEdgeModes}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #EDGE_MODE_OFF * @see #EDGE_MODE_FAST * @see #EDGE_MODE_HIGH_QUALITY @@ -1718,6 +2012,13 @@ public class CaptureResult extends CameraMetadataWhen set to TORCH, the flash will be on continuously. This mode can be used * for use cases such as preview, auto-focus assist, still capture, or video recording.
*The flash status will be reported by {@link CaptureResult#FLASH_STATE android.flash.state} in the capture result metadata.
+ *Possible values: + *
This key is available on all devices.
* * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER @@ -1737,8 +2038,33 @@ public class CaptureResult extends CameraMetadataWhen the camera device doesn't have flash unit
* (i.e. {@link CameraCharacteristics#FLASH_INFO_AVAILABLE android.flash.info.available} == false), this state will always be UNAVAILABLE.
* Other states indicate the current flash status.
In certain conditions, this will be available on LEGACY devices:
+ *== ON_ALWAYS_FLASH
+ * will always return FIRED.== TORCH
+ * will always return FIRED.In all other conditions the state will not be available on
+ * LEGACY devices (i.e. it will be null).
Possible values: + *
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* + * @see CaptureRequest#CONTROL_AE_MODE * @see CameraCharacteristics#FLASH_INFO_AVAILABLE + * @see CaptureRequest#FLASH_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #FLASH_STATE_UNAVAILABLE * @see #FLASH_STATE_CHARGING * @see #FLASH_STATE_READY @@ -1750,12 +2076,19 @@ public class CaptureResult extends CameraMetadataSet operational mode for hot pixel correction.
- *Valid modes for this camera device are listed in - * {@link CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES android.hotPixel.availableHotPixelModes}.
+ *Operational mode for hot pixel correction.
*Hotpixel correction interpolates out, or otherwise removes, pixels - * that do not accurately encode the incoming light (i.e. pixels that - * are stuck at an arbitrary value).
+ * that do not accurately measure the incoming light (i.e. pixels that + * are stuck at an arbitrary value or are oversensitive). + *Possible values: + *
Available values for this device:
+ * {@link CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES android.hotPixel.availableHotPixelModes}
Optional - This value may be {@code null} on some devices.
* * @see CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES * @see #HOT_PIXEL_MODE_OFF @@ -1768,6 +2101,10 @@ public class CaptureResult extends CameraMetadataA location object to use when generating image GPS metadata.
+ *Setting a location object in a request will include the GPS coordinates of the location + * into any JPEG images captured based on the request. These coordinates can then be + * viewed by anyone who receives the JPEG image.
+ *This key is available on all devices.
*/ @PublicKey @SyntheticKey @@ -1776,7 +2113,10 @@ public class CaptureResult extends CameraMetadataGPS coordinates to include in output JPEG - * EXIF
+ * EXIF. + *Range of valid values:
+ * (-180 - 180], [-90,90], [-inf, inf]
This key is available on all devices.
* @hide */ public static final Key32 characters describing GPS algorithm to - * include in EXIF
+ * include in EXIF. + *Units: UTF-8 null-terminated string
+ *This key is available on all devices.
* @hide */ public static final KeyTime GPS fix was made to include in - * EXIF
+ * EXIF. + *Units: UTC in seconds since January 1, 1970
+ *This key is available on all devices.
* @hide */ public static final KeyOrientation of JPEG image to - * write
+ *The orientation for a JPEG image.
+ *The clockwise rotation angle in degrees, relative to the orientation + * to the camera, that the JPEG picture needs to be rotated by, to be viewed + * upright.
+ *Camera devices may either encode this value into the JPEG EXIF header, or + * rotate the image data to match this orientation.
+ *Note that this orientation is relative to the orientation of the camera sensor, given + * by {@link CameraCharacteristics#SENSOR_ORIENTATION android.sensor.orientation}.
+ *To translate from the device orientation given by the Android sensor APIs, the following + * sample code may be used:
+ *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;
+ * }
+ *
+ * Units: Degrees in multiples of 90
+ *Range of valid values:
+ * 0, 90, 180, 270
This key is available on all devices.
+ * + * @see CameraCharacteristics#SENSOR_ORIENTATION */ @PublicKey public static final KeyCompression quality of the final JPEG * image.
*85-95 is typical usage range.
+ *Range of valid values:
+ * 1-100; larger is higher quality
This key is available on all devices.
*/ @PublicKey public static final KeyCompression quality of JPEG * thumbnail.
+ *Range of valid values:
+ * 1-100; larger is higher quality
This key is available on all devices.
*/ @PublicKey public static final KeyResolution of embedded JPEG thumbnail.
*When set to (0, 0) value, the JPEG EXIF will not contain thumbnail, * but the captured JPEG will still be a valid image.
- *When a jpeg image capture is issued, the thumbnail size selected should have - * the same aspect ratio as the jpeg image.
+ *For best results, when issuing a request for a JPEG image, the thumbnail size selected + * should have the same aspect ratio as the main JPEG output.
*If the thumbnail image aspect ratio differs from the JPEG primary image aspect * ratio, the camera device creates the thumbnail by cropping it from the primary image. * For example, if the primary image has 4:3 aspect ratio, the thumbnail image has * 16:9 aspect ratio, the primary image will be cropped vertically (letterbox) to * generate the thumbnail image. The thumbnail image will always have a smaller Field * Of View (FOV) than the primary image when aspect ratios differ.
+ *Range of valid values:
+ * {@link CameraCharacteristics#JPEG_AVAILABLE_THUMBNAIL_SIZES android.jpeg.availableThumbnailSizes}
This key is available on all devices.
+ * + * @see CameraCharacteristics#JPEG_AVAILABLE_THUMBNAIL_SIZES */ @PublicKey public static final KeyThe ratio of lens focal length to the effective - * aperture diameter.
- *This will only be supported on the camera devices that - * have variable aperture lens. The aperture value can only be - * one of the values listed in {@link CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES android.lens.info.availableApertures}.
+ *The desired lens aperture size, as a ratio of lens focal length to the + * effective aperture diameter.
+ *Setting this value is only supported on the camera devices that have a variable + * aperture lens.
*When this is supported and {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is OFF,
* this can be set along with {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime},
* {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity}, and {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}
@@ -1858,8 +2244,16 @@ public class CaptureResult extends CameraMetadata
Units: The f-number (f/N)
+ *Range of valid values:
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES android.lens.info.availableApertures}
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
* * @see CaptureRequest#CONTROL_AE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES * @see CaptureResult#LENS_STATE * @see CaptureRequest#SENSOR_EXPOSURE_TIME @@ -1871,10 +2265,8 @@ public class CaptureResult extends CameraMetadataState of lens neutral density filter(s).
- *This will not be supported on most camera devices. On devices - * where this is supported, this may only be set to one of the - * values included in {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES android.lens.info.availableFilterDensities}.
+ *The desired setting for the lens neutral density filter(s).
+ *This control will not be supported on most camera devices.
*Lens filters are typically used to lower the amount of light the
* sensor is exposed to (measured in steps of EV). As used here, an EV
* step is the standard logarithmic representation, which are
@@ -1886,7 +2278,15 @@ public class CaptureResult extends CameraMetadata It may take several frames before the lens filter density changes
* to the requested value. While the filter density is still changing,
* {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING. Units: Exposure Value (EV) Range of valid values: Optional - This value may be {@code null} on some devices. Full capability -
+ * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the
+ * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key The current lens focal length; used for optical zoom. The desired lens focal length; used for optical zoom. This setting controls the physical focal length of the camera
* device's lens. Changing the focal length changes the field of
* view of the camera device, and is usually used for optical zoom.
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES android.lens.info.availableFilterDensities}
This is expected not to be supported on most devices.
+ *Optical zoom will not be supported on most devices.
+ *Units: Millimeters
+ *Range of valid values:
+ * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS android.lens.info.availableFocalLengths}
This key is available on all devices.
* * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FOCUS_DISTANCE + * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS * @see CaptureResult#LENS_STATE */ @PublicKey @@ -1915,9 +2320,19 @@ public class CaptureResult extends CameraMetadataDistance to plane of sharpest focus, + *
Desired distance to plane of sharpest focus, * measured from frontmost surface of the lens.
*Should be zero for fixed-focus cameras
+ *Units: See {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} for details
+ *Range of valid values:
+ * >= 0
Optional - This value may be {@code null} on some devices.
+ *Full capability - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL + * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION */ @PublicKey public static final KeyIf variable focus not supported, can still report * fixed depth of field range
+ *Units: A pair of focus distances in diopters: (near, + * far); see {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} for details.
+ *Range of valid values:
+ * >=0
Optional - This value may be {@code null} on some devices.
+ *Limited capability - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key
+ * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL + * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION */ @PublicKey public static final Key