diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Capabilities.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Capabilities.java
index bd610cc..8001a37 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Capabilities.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Capabilities.java
@@ -204,7 +204,6 @@
                 return SceneMode.CANDLELIGHT;
             case CONTROL_SCENE_MODE_FIREWORKS:
                 return SceneMode.FIREWORKS;
-            // TODO: We cannot support HDR
             case CONTROL_SCENE_MODE_LANDSCAPE:
                 return SceneMode.LANDSCAPE;
             case CONTROL_SCENE_MODE_NIGHT:
@@ -226,6 +225,11 @@
                 return SceneMode.THEATRE;
             // TODO: We cannot expose FACE_PRIORITY, or HIGH_SPEED_VIDEO
         }
+
+        if (sm == LegacyVendorTags.CONTROL_SCENE_MODE_HDR) {
+            return SceneMode.HDR;
+        }
+
         Log.w(TAG, "Unable to convert from API 2 scene mode: " + sm);
         return null;
     }
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java
index 0d3ef26..d668f85 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2Settings.java
@@ -419,7 +419,10 @@
                     mode = CONTROL_SCENE_MODE_FIREWORKS;
                     break;
                 }
-                // TODO: We cannot support HDR
+                case HDR: {
+                    mode = LegacyVendorTags.CONTROL_SCENE_MODE_HDR;
+                    break;
+                }
                 case LANDSCAPE: {
                     mode = CONTROL_SCENE_MODE_LANDSCAPE;
                     break;
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java
index 0d7c302..60c8cb2 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraCapabilities.java
@@ -184,7 +184,7 @@
          * Capture a scene using high dynamic range imaging techniques.
          * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_HDR}.
          */
-        // TODO: Unsupported on API 2
+        // Note: Supported as a vendor tag on the Camera2 API for some LEGACY devices.
         HDR,
         /**
          * Take pictures on distant objects.
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/LegacyVendorTags.java b/camera2/portability/src/com/android/ex/camera2/portability/LegacyVendorTags.java
new file mode 100644
index 0000000..e55748d
--- /dev/null
+++ b/camera2/portability/src/com/android/ex/camera2/portability/LegacyVendorTags.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ex.camera2.portability;
+
+import android.hardware.camera2.CameraCharacteristics;
+
+import java.lang.ExceptionInInitializerError;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * Vendor tag declarations for the Legacy Camera2 API implementation.
+ */
+public class LegacyVendorTags {
+
+    /**
+     * Hidden enum for scene modes supported only by the Camera1 API.
+     */
+    public static final int CONTROL_SCENE_MODE_HDR;
+
+    static {
+        try {
+            CONTROL_SCENE_MODE_HDR =
+                    Class.forName("android.hardware.camera2.CameraCharacteristics").
+                            getField("CONTROL_SCENE_MODE_HDR").getInt(null);
+        } catch (Exception e) {
+            throw new ExceptionInInitializerError(
+                    "Error while reflecting on LegacyVendorTags: " + e);
+        }
+    }
+
+    private LegacyVendorTags() {
+        throw new AssertionError();
+    }
+}
\ No newline at end of file
