Add an auto-exposure lock feature to the Camera API.

Adds a new camera parameter for locking auto-exposure to its current
value. Also adds a function for checking if auto-exposure lock is
supported by the current platform.

Hidden for now.

Change-Id: Id452371191ab220318ce2cb98b8ee91bdde9aab6
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index db81721..513239f 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -309,6 +309,25 @@
     // 0.3333, EV is -2.
     // Example value: "0.333333333" or "0.5". Read only.
     static const char KEY_EXPOSURE_COMPENSATION_STEP[];
+    // The state of the auto-exposure lock. "true" means that auto-exposure is
+    // locked to its current value and will not change. "false" means the
+    // auto-exposure routine is free to change exposure settings. Changing
+    // exposure compensation settings will still affect the exposure settings
+    // while auto-exposure is locked. Stopping preview or taking a still image
+    // will release the lock. However, the lock can be re-enabled prior to
+    // preview being re-started, to keep the exposure values from the previous
+    // lock. In conjunction with exposure compensation, this allows for
+    // capturing multi-exposure brackets with known relative exposure
+    // values. Locking auto-exposure after open but before the first cal to
+    // startPreview may result in severly over- or under-exposed images.  The
+    // driver may independently enable the AE lock after auto-focus
+    // completes. If it does so, this key must have its value updated to reflect
+    // the lock's existence. Applications are free to release such a lock, to
+    // re-enable AE without restarting preview.
+    static const char KEY_AUTO_EXPOSURE_LOCK[];
+    // Whether locking the auto-exposure is supported. "true" means it is, and
+    // "false" or this key not existing means it is not supported.
+    static const char KEY_AUTO_EXPOSURE_LOCK_SUPPORTED[];
     // The maximum number of metering areas supported. This is the maximum
     // length of KEY_METERING_AREAS.
     // Example value: "0" or "2". Read only.
@@ -428,6 +447,7 @@
 
     // Value for KEY_ZOOM_SUPPORTED or KEY_SMOOTH_ZOOM_SUPPORTED.
     static const char TRUE[];
+    static const char FALSE[];
 
     // Value for KEY_FOCUS_DISTANCES.
     static const char FOCUS_DISTANCE_INFINITY[];