summaryrefslogtreecommitdiffstats
path: root/core/java/android/hardware/Camera.java
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2014-03-18 18:14:41 -0700
committerIgor Murashkin <iam@google.com>2014-03-20 00:21:44 +0000
commit7d9a8ffd08fa950eb14f8224f6090fe46ab4aa9f (patch)
treebca9b0dac3dd7932e6ca2258dd6e00ed1a8248be /core/java/android/hardware/Camera.java
parentb4b66d2f3afe8154efeb86389bc47c046d21aecf (diff)
downloadframeworks_base-7d9a8ffd08fa950eb14f8224f6090fe46ab4aa9f.zip
frameworks_base-7d9a8ffd08fa950eb14f8224f6090fe46ab4aa9f.tar.gz
frameworks_base-7d9a8ffd08fa950eb14f8224f6090fe46ab4aa9f.tar.bz2
camera: Fix setParameters for Preview FPS single/range values
Bug: 12609188 Change-Id: I82ea6f5de2183dd046d4bf5683600c97f37ab4db
Diffstat (limited to 'core/java/android/hardware/Camera.java')
-rw-r--r--core/java/android/hardware/Camera.java30
1 files changed, 26 insertions, 4 deletions
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 6e2a099..35c86e7 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -45,6 +45,7 @@ import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
/**
@@ -2149,10 +2150,20 @@ public class Camera {
private static final String PIXEL_FORMAT_JPEG = "jpeg";
private static final String PIXEL_FORMAT_BAYER_RGGB = "bayer-rggb";
- private HashMap<String, String> mMap;
+ /**
+ * Order matters: Keys that are {@link #set(String, String) set} later
+ * will take precedence over keys that are set earlier (if the two keys
+ * conflict with each other).
+ *
+ * <p>One example is {@link #setPreviewFpsRange(int, int)} , since it
+ * conflicts with {@link #setPreviewFrameRate(int)} whichever key is set later
+ * is the one that will take precedence.
+ * </p>
+ */
+ private final LinkedHashMap<String, String> mMap;
private Parameters() {
- mMap = new HashMap<String, String>(64);
+ mMap = new LinkedHashMap<String, String>(/*initialCapacity*/64);
}
/**
@@ -2232,7 +2243,7 @@ public class Camera {
return;
}
- mMap.put(key, value);
+ put(key, value);
}
/**
@@ -2242,7 +2253,18 @@ public class Camera {
* @param value the int value of the parameter
*/
public void set(String key, int value) {
- mMap.put(key, Integer.toString(value));
+ put(key, Integer.toString(value));
+ }
+
+ private void put(String key, String value) {
+ /*
+ * Remove the key if it already exists.
+ *
+ * This way setting a new value for an already existing key will always move
+ * that key to be ordered the latest in the map.
+ */
+ mMap.remove(key);
+ mMap.put(key, value);
}
private void set(String key, List<Area> areas) {