Merge "Add camera metering mode API." into kraken
This commit is contained in:
@@ -763,6 +763,7 @@ public class Camera {
|
||||
private static final String KEY_ZOOM_SUPPORTED = "zoom-supported";
|
||||
private static final String KEY_SMOOTH_ZOOM_SUPPORTED = "smooth-zoom-supported";
|
||||
private static final String KEY_FOCUS_DISTANCES = "focus-distances";
|
||||
private static final String KEY_METERING_MODE = "metering-mode";
|
||||
|
||||
// Parameter key suffix for supported values.
|
||||
private static final String SUPPORTED_VALUES_SUFFIX = "-values";
|
||||
@@ -965,6 +966,26 @@ public class Camera {
|
||||
*/
|
||||
public static final String FOCUS_MODE_CONTINUOUS = "continuous";
|
||||
|
||||
/**
|
||||
* The camera determines the exposure by giving more weight to the
|
||||
* central part of the scene.
|
||||
* @hide
|
||||
*/
|
||||
public static final String METERING_MODE_CENTER_WEIGHTED = "center-weighted";
|
||||
|
||||
/**
|
||||
* The camera determines the exposure by averaging the entire scene,
|
||||
* giving no weighting to any particular area.
|
||||
* @hide
|
||||
*/
|
||||
public static final String METERING_MODE_FRAME_AVERAGE = "frame-average";
|
||||
|
||||
/**
|
||||
* The camera determines the exposure by a very small area of the scene,
|
||||
* typically the center.
|
||||
* @hide
|
||||
*/
|
||||
public static final String METERING_MODE_SPOT = "spot";
|
||||
|
||||
// Formats for setPreviewFormat and setPictureFormat.
|
||||
private static final String PIXEL_FORMAT_YUV422SP = "yuv422sp";
|
||||
@@ -1930,6 +1951,45 @@ public class Camera {
|
||||
output[2] = distances.get(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the supported metering modes.
|
||||
*
|
||||
* @return a list of supported metering modes. null if metering mode
|
||||
* setting is not supported.
|
||||
* @see #getMeteringMode()
|
||||
* @hide
|
||||
*/
|
||||
public List<String> getSupportedMeteringModes() {
|
||||
String str = get(KEY_METERING_MODE + SUPPORTED_VALUES_SUFFIX);
|
||||
return split(str);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current metering mode, which affects how camera determines
|
||||
* exposure.
|
||||
*
|
||||
* @return current metering mode. If the camera does not support
|
||||
* metering setting, this should return null.
|
||||
* @see #METERING_MODE_CENTER_WEIGHTED
|
||||
* @see #METERING_MODE_FRAME_AVERAGE
|
||||
* @see #METERING_MODE_SPOT
|
||||
* @hide
|
||||
*/
|
||||
public String getMeteringMode() {
|
||||
return get(KEY_METERING_MODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the metering mode.
|
||||
*
|
||||
* @param value metering mode.
|
||||
* @see #getMeteringMode()
|
||||
* @hide
|
||||
*/
|
||||
public void setMeteringMode(String value) {
|
||||
set(KEY_METERING_MODE, value);
|
||||
}
|
||||
|
||||
// Splits a comma delimited string to an ArrayList of String.
|
||||
// Return null if the passing string is null or the size is 0.
|
||||
private ArrayList<String> split(String str) {
|
||||
|
||||
@@ -250,6 +250,10 @@ public:
|
||||
// Example value: "yuv420sp" or PIXEL_FORMAT_XXX constants. Read only.
|
||||
static const char KEY_VIDEO_FRAME_FORMAT[];
|
||||
|
||||
// Metering mode. This affects how camera determines exposure.
|
||||
// Example value: "spot" or METERING_MODE_XXX constants. Read/write.
|
||||
static const char KEY_METERING_MODE[];
|
||||
|
||||
// Value for KEY_ZOOM_SUPPORTED or KEY_SMOOTH_ZOOM_SUPPORTED.
|
||||
static const char TRUE[];
|
||||
|
||||
@@ -347,6 +351,15 @@ public:
|
||||
// callback will be only called once as soon as the picture is in focus.
|
||||
static const char FOCUS_MODE_CONTINUOUS[];
|
||||
|
||||
// The camera determines the exposure by giving more weight to the
|
||||
// central part of the scene.
|
||||
static const char METERING_MODE_CENTER_WEIGHTED[];
|
||||
// The camera determines the exposure by averaging the entire scene,
|
||||
// giving no weighting to any particular area.
|
||||
static const char METERING_MODE_FRAME_AVERAGE[];
|
||||
// The camera determines the exposure by a very small area of the scene,
|
||||
// typically the center.
|
||||
static const char METERING_MODE_SPOT[];
|
||||
|
||||
private:
|
||||
DefaultKeyedVector<String8,String8> mMap;
|
||||
|
||||
@@ -71,6 +71,7 @@ const char CameraParameters::KEY_ZOOM_SUPPORTED[] = "zoom-supported";
|
||||
const char CameraParameters::KEY_SMOOTH_ZOOM_SUPPORTED[] = "smooth-zoom-supported";
|
||||
const char CameraParameters::KEY_FOCUS_DISTANCES[] = "focus-distances";
|
||||
const char CameraParameters::KEY_VIDEO_FRAME_FORMAT[] = "video-frame-format";
|
||||
const char CameraParameters::KEY_METERING_MODE[] = "metering-mode";
|
||||
|
||||
const char CameraParameters::TRUE[] = "true";
|
||||
const char CameraParameters::FOCUS_DISTANCE_INFINITY[] = "Infinity";
|
||||
@@ -142,6 +143,11 @@ const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed";
|
||||
const char CameraParameters::FOCUS_MODE_EDOF[] = "edof";
|
||||
const char CameraParameters::FOCUS_MODE_CONTINUOUS[] = "continuous";
|
||||
|
||||
// Values for metering mode settings.
|
||||
const char METERING_MODE_CENTER_WEIGHTED[] = "center-weighted";
|
||||
const char METERING_MODE_FRAME_AVERAGE[] = "frame-average";
|
||||
const char METERING_MODE_SPOT[] = "spot";
|
||||
|
||||
CameraParameters::CameraParameters()
|
||||
: mMap()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user