Improve camera documentation.

Change-Id: I3c9e5e6de5ce64b8d7d892483930238fa9cc247c
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 19e578f..f72de67 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -1166,6 +1166,14 @@
          */
         public static final String FOCUS_MODE_EDOF = "edof";
 
+        /**
+         * Continuous auto focus mode. The camera continuously tries to focus.
+         * This is ideal for shooting video or shooting photo of moving object.
+         * Auto focus starts when the parameter is set. Applications should not
+         * call {@link #autoFocus(AutoFocusCallback)} in this mode.
+         */
+        public static final String FOCUS_MODE_CONTINUOUS = "continuous";
+
         // Indices for focus distance array.
         /**
          * The array index of near focus distance for use with
@@ -1186,16 +1194,6 @@
         public static final int FOCUS_DISTANCE_FAR_INDEX = 2;
 
         /**
-         * Continuous focus mode. The camera continuously tries to focus. This
-         * is ideal for shooting video or shooting photo of moving object.
-         * Continuous focus starts when {@link #autoFocus(AutoFocusCallback)} is
-         * called. Continuous focus stops when {@link #cancelAutoFocus()} is
-         * called. AutoFocusCallback will be only called once as soon as the
-         * picture is in focus.
-         */
-        public static final String FOCUS_MODE_CONTINUOUS = "continuous";
-
-        /**
          * The camera determines the exposure by giving more weight to the
          * central part of the scene.
          */
@@ -1942,15 +1940,15 @@
         /**
          * Gets the current focus mode setting.
          *
-         * @return current focus mode. If the camera does not support
-         *         auto-focus, this should return {@link #FOCUS_MODE_FIXED}. If
-         *         the focus mode is not FOCUS_MODE_FIXED or {@link
-         *         #FOCUS_MODE_INFINITY}, applications should call {@link
-         *         #autoFocus(AutoFocusCallback)} to start the focus.
+         * @return current focus mode. This method will always return a non-null
+         *         value. Applications should call {@link
+         *         #autoFocus(AutoFocusCallback)} to start the focus if focus
+         *         mode is FOCUS_MODE_AUTO or FOCUS_MODE_MACRO.
          * @see #FOCUS_MODE_AUTO
          * @see #FOCUS_MODE_INFINITY
          * @see #FOCUS_MODE_MACRO
          * @see #FOCUS_MODE_FIXED
+         * @see #FOCUS_MODE_CONTINUOUS
          */
         public String getFocusMode() {
             return get(KEY_FOCUS_MODE);
@@ -2152,8 +2150,14 @@
          * #autoFocus(AutoFocusCallback)}, {@link #cancelAutoFocus}, or {@link
          * #startPreview()}. Applications can call {@link #getParameters()}
          * and this method anytime to get the latest focus distances. If the
-         * focus mode is FOCUS_MODE_CONTINUOUS and autofocus has started, focus
-         * distances may change from time to time.
+         * focus mode is FOCUS_MODE_CONTINUOUS, focus distances may change from
+         * time to time.
+         *
+         * This method is intended to estimate the distance between the camera
+         * and the subject. After autofocus, the subject distance may be within
+         * near and far focus distance. However, the precision depends on the
+         * camera hardware, autofocus algorithm, the focus area, and the scene.
+         * The error can be large and it should be only used as a reference.
          *
          * Far focus distance >= optimal focus distance >= near focus distance.
          * If the focus distance is infinity, the value will be
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index e12a694..6a5d254 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -171,10 +171,9 @@
     // Supported flash modes.
     // Example value: "auto,on,off". Read only.
     static const char KEY_SUPPORTED_FLASH_MODES[];
-    // Current focus mode. If the camera does not support auto-focus, the value
-    // should be FOCUS_MODE_FIXED. If the focus mode is not FOCUS_MODE_FIXED or
-    // or FOCUS_MODE_INFINITY, applications should call
-    // CameraHardwareInterface.autoFocus to start the focus.
+    // Current focus mode. This will not be empty. Applications should call
+    // CameraHardwareInterface.autoFocus to start the focus if focus mode is
+    // FOCUS_MODE_AUTO or FOCUS_MODE_MACRO.
     // Example value: "auto" or FOCUS_MODE_XXX constants. Read/write.
     static const char KEY_FOCUS_MODE[];
     // Supported focus modes.
@@ -231,11 +230,16 @@
     // be in focus. The object is sharpest at the optimal focus distance. The
     // depth of field is the far focus distance minus near focus distance.
     //
-    // Applications can read this parameter anytime to get the latest focus
-    // distances. If the focus mode is FOCUS_MODE_EDOF, the values may be all
-    // 0, which means focus distance is not applicable. If the focus mode is
-    // FOCUS_MODE_CONTINUOUS and autofocus has started, focus distances may
-    // change from time to time.
+    // Focus distances may change after starting auto focus, canceling auto
+    // focus, or starting the preview. Applications can read this anytime to get
+    // the latest focus distances. If the focus mode is FOCUS_MODE_CONTINUOUS,
+    // focus distances may change from time to time.
+    //
+    // This is intended to estimate the distance between the camera and the
+    // subject. After autofocus, the subject distance may be within near and far
+    // focus distance. However, the precision depends on the camera hardware,
+    // autofocus algorithm, the focus area, and the scene. The error can be
+    // large and it should be only used as a reference.
     //
     // Far focus distance > optimal focus distance > near focus distance. If
     // the far focus distance is infinity, the value should be "Infinity" (case
@@ -348,10 +352,10 @@
     // continuously. Applications should not call
     // CameraHardwareInterface.autoFocus in this mode.
     static const char FOCUS_MODE_EDOF[];
-    // Continuous focus mode. The camera continuously tries to focus. This is
-    // ideal for shooting video or shooting photo of moving object. Continuous
-    // focus starts when CameraHardwareInterface.autoFocus is called. Focus
-    // callback will be only called once as soon as the picture is in focus.
+    // Continuous auto focus mode. The camera continuously tries to focus. This
+    // is ideal for shooting video or shooting photo of moving object. Auto
+    // focus starts when the parameter is set. Applications should not call
+    // CameraHardwareInterface.autoFocus in this mode.
     static const char FOCUS_MODE_CONTINUOUS[];
 
     // The camera determines the exposure by giving more weight to the