Snap: Fix getting supported ISO with legacy HAL

 * org.codeaurora.qcamera3.iso_exp_priority.iso_available_modes is QCOM
   specific vendor tag and not implemented in legacy HALs.
 * Restore pre-17.0 behavior by falling back to AOSP camera characteristics

Change-Id: I299e7bfb867496c63ec873ea4cea29b0b8bb595f
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 3d2c465..b3cf50e 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -1882,14 +1882,14 @@
     }
 
     private List<String> getSupportedIso(int cameraId) {
+        CameraCharacteristics cameraCharacteristics = mCharacteristics.get(cameraId);
         List<String> supportedIso = new ArrayList<>();
-        try {
-            int[] range = mCharacteristics.get(cameraId).get(
-                    CaptureModule.ISO_AVAILABLE_MODES);
-            supportedIso.add("auto");
+        supportedIso.add("auto");
 
-            if (range != null) {
-                for (int iso : range) {
+        try {
+            int[] modes = cameraCharacteristics.get(CaptureModule.ISO_AVAILABLE_MODES);
+            if (modes != null) {
+                for (int iso : modes) {
                     for (String key : KEY_ISO_INDEX.keySet()) {
                         if (KEY_ISO_INDEX.get(key).equals(iso)) {
                             supportedIso.add(key);
@@ -1903,6 +1903,21 @@
             Log.w(TAG, "Supported ISO_AVAILABLE_MODES is null.");
         } catch (IllegalArgumentException e) {
             Log.w(TAG, "IllegalArgumentException Supported ISO_AVAILABLE_MODES is wrong.");
+
+            Range<Integer> range = mCharacteristics.get(cameraId).get(
+                    CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE);
+            if (range != null) {
+                int max = range.getUpper();
+                int value = 50;
+                while (value <= max) {
+                    if (range.contains(value)) {
+                        supportedIso.add(String.valueOf(value));
+                    }
+                    value += 50;
+                }
+            } else {
+                Log.w(TAG, "Supported ISO range is null.");
+            }
         }
 
         return supportedIso;