Merge "Add new camera focus mode FOCUS_MODE_CONTINUOUS_PICTURE."
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index cab8457..d3dbb8d 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -1613,17 +1613,34 @@
 
         /**
          * Continuous auto focus mode intended for video recording. The camera
-         * continuously tries to focus. This is ideal for shooting video.
-         * Applications still can call {@link
-         * #takePicture(Camera.ShutterCallback, Camera.PictureCallback,
-         * Camera.PictureCallback)} in this mode but the subject may not be in
-         * focus. Auto focus starts when the parameter is set. Applications
-         * should not call {@link #autoFocus(AutoFocusCallback)} in this mode.
-         * To stop continuous focus, applications should change the focus mode
-         * to other modes.
+         * continuously tries to focus. This is the best choice for video
+         * recording because the focus changes smoothly . Applications still can
+         * call {@link #takePicture(Camera.ShutterCallback,
+         * Camera.PictureCallback, Camera.PictureCallback)} in this mode but the
+         * subject may not be in focus. Auto focus starts when the parameter is
+         * set. Applications should not call {@link
+         * #autoFocus(AutoFocusCallback)} in this mode. To stop continuous
+         * focus, applications should change the focus mode to other modes.
          */
         public static final String FOCUS_MODE_CONTINUOUS_VIDEO = "continuous-video";
 
+        /**
+         * Continuous auto focus mode intended for taking pictures. The camera
+         * continuously tries to focus. The speed of focus change is more
+         * aggressive than {@link #FOCUS_MODE_CONTINUOUS_VIDEO}. Auto focus
+         * starts when the parameter is set. If applications call {@link
+         * #autoFocus(AutoFocusCallback)} in this mode, the focus callback will
+         * immediately return with a boolean that indicates whether the focus is
+         * sharp or not. The apps can then decide if they want to take a picture
+         * immediately or to change the focus mode to auto, and run a full
+         * autofocus cycle. To stop continuous focus, applications should change
+         * the focus mode to other modes.
+         *
+         * @see #FOCUS_MODE_CONTINUOUS_VIDEO
+         * @hide
+         */
+        public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture";
+
         // Indices for focus distance array.
         /**
          * The array index of near focus distance for use with
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index b661496..6c91dfc 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -597,13 +597,24 @@
     // CameraHardwareInterface.autoFocus in this mode.
     static const char FOCUS_MODE_EDOF[];
     // Continuous auto focus mode intended for video recording. The camera
-    // continuously tries to focus. This is ideal for shooting video.
-    // Applications still can call CameraHardwareInterface.takePicture in this
-    // mode but the subject may not be in focus. Auto focus starts when the
-    // parameter is set. Applications should not call
-    // CameraHardwareInterface.autoFocus in this mode. To stop continuous focus,
-    // applications should change the focus mode to other modes.
+    // continuously tries to focus. This is the best choice for video
+    // recording because the focus changes smoothly . Applications still can
+    // call CameraHardwareInterface.takePicture in this mode but the subject may
+    // not be in focus. Auto focus starts when the parameter is set.
+    // Applications should not call CameraHardwareInterface.autoFocus in this
+    // mode. To stop continuous focus, applications should change the focus mode
+    // to other modes.
     static const char FOCUS_MODE_CONTINUOUS_VIDEO[];
+    // Continuous auto focus mode intended for taking pictures. The camera
+    // continuously tries to focus. The speed of focus change is more aggressive
+    // than FOCUS_MODE_CONTINUOUS_VIDEO. Auto focus starts when the parameter is
+    // set. If applications call autoFocus in this mode, the focus callback will
+    // immediately return with a boolean that indicates the focus is sharp or
+    // not. The apps can then decide if they want to take a picture immediately
+    // or to change the focus mode to auto, and run a full autofocus cycle. To
+    // stop continuous focus, applications should change the focus mode to other
+    // modes.
+    static const char FOCUS_MODE_CONTINUOUS_PICTURE[];
 
 private:
     DefaultKeyedVector<String8,String8>    mMap;
diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp
index 51b96c1..0eb5d50 100644
--- a/libs/camera/CameraParameters.cpp
+++ b/libs/camera/CameraParameters.cpp
@@ -160,6 +160,7 @@
 const char CameraParameters::FOCUS_MODE_FIXED[] = "fixed";
 const char CameraParameters::FOCUS_MODE_EDOF[] = "edof";
 const char CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO[] = "continuous-video";
+const char CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE[] = "continuous-picture";
 
 CameraParameters::CameraParameters()
                 : mMap()