Merge "camera2: Add HDR toggle to testing camera."
diff --git a/apps/TestingCamera/res/layout/main.xml b/apps/TestingCamera/res/layout/main.xml
index a52c0ef..a4cd6b5 100644
--- a/apps/TestingCamera/res/layout/main.xml
+++ b/apps/TestingCamera/res/layout/main.xml
@@ -140,6 +140,16 @@
                 android:layout_weight="1" />
 
             <ToggleButton
+                android:id="@+id/hdr_mode"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_weight="1"
+                android:textColorLink="@android:color/holo_blue_light"
+                android:textOff="@string/hdr_off_label"
+                android:textOn="@string/hdr_on_label" />
+
+            <ToggleButton
                 android:id="@+id/start_preview"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
diff --git a/apps/TestingCamera/res/values/strings.xml b/apps/TestingCamera/res/values/strings.xml
index 956b622..5b0345e 100644
--- a/apps/TestingCamera/res/values/strings.xml
+++ b/apps/TestingCamera/res/values/strings.xml
@@ -18,7 +18,9 @@
 <resources>
     <string name="app_name">TestingCam</string>
 
+    <string name="hdr_on_label">HDR On</string>
     <string name="preview_on_label">Preview On</string>
+    <string name="hdr_off_label">HDR Off</string>
     <string name="preview_off_label">Preview Off</string>
     <string name="take_picture_label">Take picture</string>
     <string name="preview_resolution_prompt">Preview size</string>
diff --git a/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java b/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java
index 70e8835..e5ecd0c 100644
--- a/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java
+++ b/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java
@@ -89,6 +89,7 @@
     private Spinner mPreviewSizeSpinner;
     private Spinner mPreviewFrameRateSpinner;
     private ToggleButton mPreviewToggle;
+    private ToggleButton mHDRToggle;
     private Spinner mAutofocusModeSpinner;
     private Button mAutofocusButton;
     private Button mCancelAutofocusButton;
@@ -205,6 +206,10 @@
         mPreviewFrameRateSpinner.setOnItemSelectedListener(mPreviewFrameRateListener);
         mOpenOnlyControls.add(mPreviewFrameRateSpinner);
 
+        mHDRToggle = (ToggleButton) findViewById(R.id.hdr_mode);
+        mHDRToggle.setOnClickListener(mHDRToggleListener);
+        mOpenOnlyControls.add(mHDRToggle);
+
         mPreviewToggle = (ToggleButton) findViewById(R.id.start_preview);
         mPreviewToggle.setOnClickListener(mPreviewToggleListener);
         mOpenOnlyControls.add(mPreviewToggle);
@@ -536,6 +541,26 @@
         }
     };
 
+    private View.OnClickListener mHDRToggleListener =
+            new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (mState == CAMERA_TAKE_PICTURE) {
+                logE("Can't change preview state while taking picture!");
+                return;
+            }
+
+            if (mHDRToggle.isChecked()) {
+                log("Turning on HDR");
+                mParams.setSceneMode(Camera.Parameters.SCENE_MODE_HDR);
+            } else {
+                log("Turning off HDR");
+                mParams.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
+            }
+            mCamera.setParameters(mParams);
+        }
+    };
+
     private View.OnClickListener mPreviewToggleListener =
             new View.OnClickListener() {
         @Override
@@ -936,6 +961,16 @@
 
         setCameraDisplayOrientation();
         mParams = mCamera.getParameters();
+        if (mParams != null) {
+            List<String> sceneModes = mParams.getSupportedSceneModes();
+            for (String mode : sceneModes) {
+                if (Camera.Parameters.SCENE_MODE_HDR.equals(mode)){
+                    mHDRToggle.setEnabled(true);
+                } else {
+                    mHDRToggle.setEnabled(false);
+                }
+            }
+        }
 
         // Set up preview size selection