Loading core/java/android/hardware/Camera.java +60 −0 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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"; Loading Loading @@ -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) { Loading include/camera/CameraParameters.h +13 −0 Original line number Diff line number Diff line Loading @@ -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[]; Loading Loading @@ -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; Loading libs/camera/CameraParameters.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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() { Loading Loading
core/java/android/hardware/Camera.java +60 −0 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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"; Loading Loading @@ -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) { Loading
include/camera/CameraParameters.h +13 −0 Original line number Diff line number Diff line Loading @@ -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[]; Loading Loading @@ -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; Loading
libs/camera/CameraParameters.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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() { Loading