Add quick capture settings for Camera application.

Change-Id: Ic4ca9f9e1802559c0d6604616555a94cdee1378b
Bug: 2259528
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index d8fcec4..33768b2 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -273,6 +273,16 @@
         <item>fireworks</item>
     </string-array>
 
+    <string-array name="pref_camera_quickcapture_entries" translatable="false">
+        <item>@string/pref_camera_quickcapture_entry_off</item>
+        <item>@string/pref_camera_quickcapture_entry_on</item>
+    </string-array>
+
+    <string-array name="pref_camera_quickcapture_entryvalues" translatable="false">
+        <item>off</item>
+        <item>on</item>
+    </string-array>
+
     <string-array name="scenemode_modes" translatable="false">
         <item>off</item>
         <item>on</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f7695d6..bf0d936 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -312,6 +312,12 @@
     <!-- Scene mode optimized for taking images of fireworks. -->
     <string name="pref_camera_scenemode_entry_fireworks">Fireworks</string>
 
+    <!-- Settings menu, enable quick capture mode or not -->
+    <string name="pref_camera_quickcapture_title">Quick Capture</string>
+    <string name="pref_camera_quickcapture_default" translatable="false">off</string>
+    <string name="pref_camera_quickcapture_entry_on">On</string>
+    <string name="pref_camera_quickcapture_entry_off">Off</string>
+
     <!-- Restore settings item in preference -->
     <string name="pref_restore_title">Restore settings</string>
     <string name="pref_restore_detail">Restore camera settings to default</string>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 5c0fede..0eec3ab 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -68,5 +68,11 @@
                 camera:icons="@array/pref_camera_focusmode_icons"
                 camera:entries="@array/pref_camera_focusmode_entries"
                 camera:entryValues="@array/pref_camera_focusmode_entryvalues" />
+        <ListPreference
+                camera:key="pref_camera_quickcapture_key"
+                camera:defaultValue="@string/pref_camera_quickcapture_default"
+                camera:title="@string/pref_camera_quickcapture_title"
+                camera:entries="@array/pref_camera_quickcapture_entries"
+                camera:entryValues="@array/pref_camera_quickcapture_entryvalues" />
     </PreferenceGroup>
 </PreferenceGroup>
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 92389b7..a1a99af 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -221,6 +221,7 @@
 
     private final Handler mHandler = new MainHandler();
     private OnScreenSettings mSettings;
+    private boolean mQuickCapture;
 
     /**
      * This Handler is used to post message back onto the main thread of the
@@ -659,7 +660,7 @@
                 // We want to show the taken picture for a while, so we wait
                 // for at least 1.2 second before restarting the preview.
                 long delay = 1200 - mPictureDisplayedToJpegCallbackTime;
-                if (delay < 0) {
+                if (delay < 0 || mQuickCapture) {
                     restartPreview();
                 } else {
                     mHandler.sendEmptyMessageDelayed(RESTART_PREVIEW, delay);
@@ -938,6 +939,7 @@
 
         mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
         CameraSettings.upgradePreferences(mPreferences);
+        mQuickCapture = getQuickCaptureSettings();
 
         /*
          * To reduce startup time, we start the preview in another thread.
@@ -2144,6 +2146,8 @@
             } else {
                 stopReceivingLocationUpdates();
             }
+        } else if (CameraSettings.KEY_QUICK_CAPTURE.equals(key)) {
+            mQuickCapture = getQuickCaptureSettings();
         } else {
             // All preferences except RECORD_LOCATION are camera parameters.
             // Call setCameraParameters to take effect now.
@@ -2151,6 +2155,13 @@
         }
     }
 
+    private boolean getQuickCaptureSettings() {
+        String value = mPreferences.getString(
+                CameraSettings.KEY_QUICK_CAPTURE,
+                getString(R.string.pref_camera_quickcapture_default));
+        return CameraSettings.QUICK_CAPTURE_ON.equals(value);
+    }
+
     @Override
     public void onUserInteraction() {
         super.onUserInteraction();
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index fd5cfc6..db82a75 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -51,6 +51,11 @@
     public static final String KEY_WHITE_BALANCE =
             "pref_camera_whitebalance_key";
     public static final String KEY_SCENE_MODE = "pref_camera_scenemode_key";
+    public static final String KEY_QUICK_CAPTURE =
+            "pref_camera_quickcapture_key";
+
+    public static final String QUICK_CAPTURE_ON = "on";
+    public static final String QUICK_CAPTURE_OFF = "off";
 
     public static final int CURRENT_VERSION = 3;