summaryrefslogtreecommitdiffstats
path: root/core/java/android/hardware
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2014-08-08 17:40:17 -0700
committerIgor Murashkin <iam@google.com>2014-08-11 13:25:01 -0700
commitd42a5fd3e7fff38dbc8a82484dac53bfbcb61ac4 (patch)
tree452ff08ff64cf619a65598a676f177e7fbfe75f8 /core/java/android/hardware
parent7336f470e3486dbbbc787a2c3ac68a567bc392e8 (diff)
downloadframeworks_base-d42a5fd3e7fff38dbc8a82484dac53bfbcb61ac4.zip
frameworks_base-d42a5fd3e7fff38dbc8a82484dac53bfbcb61ac4.tar.gz
frameworks_base-d42a5fd3e7fff38dbc8a82484dac53bfbcb61ac4.tar.bz2
camera2: (legacy) Fix the comparison for fixed-focus cameras
* Use #equals instead of == for string comparison * Also make sure lens.info.minimumFocusDistance shows up in CameraCharacteristics#getKeys() for fixed-focus cameras Bug: 16900875 Change-Id: I3b9248c5cb62ddcfb13587c6349525e145e353ac
Diffstat (limited to 'core/java/android/hardware')
-rw-r--r--core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java42
1 files changed, 36 insertions, 6 deletions
diff --git a/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java b/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
index faacbeb..0337c96 100644
--- a/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
+++ b/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
@@ -188,10 +188,6 @@ public class LegacyMetadataMapper {
*/
mapFlash(m, p);
- /*
- * request.*
- */
- mapRequest(m, p);
// TODO: map other fields
/*
@@ -224,6 +220,13 @@ public class LegacyMetadataMapper {
*/
mapScalerStreamConfigs(m, p);
+ // Order matters below: Put this last so that we can read the metadata set previously
+
+ /*
+ * request.*
+ */
+ mapRequest(m, p);
+
}
private static void mapScalerStreamConfigs(CameraMetadataNative m, Camera.Parameters p) {
@@ -553,11 +556,23 @@ public class LegacyMetadataMapper {
* We can tell if the lens is fixed focus;
* but if it's not, we can't tell the minimum focus distance, so leave it null then.
*/
- if (p.getFocusMode() == Camera.Parameters.FOCUS_MODE_FIXED) {
+ if (VERBOSE) {
+ Log.v(TAG, "mapLens - focus-mode='" + p.getFocusMode() + "'");
+ }
+
+ if (Camera.Parameters.FOCUS_MODE_FIXED.equals(p.getFocusMode())) {
/*
* lens.info.minimumFocusDistance
*/
m.set(LENS_INFO_MINIMUM_FOCUS_DISTANCE, LENS_INFO_MINIMUM_FOCUS_DISTANCE_FIXED_FOCUS);
+
+ if (VERBOSE) {
+ Log.v(TAG, "mapLens - lens.info.minimumFocusDistance = 0");
+ }
+ } else {
+ if (VERBOSE) {
+ Log.v(TAG, "mapLens - lens.info.minimumFocusDistance is unknown");
+ }
}
float[] focalLengths = new float[] { p.getFocalLength() };
@@ -628,7 +643,17 @@ public class LegacyMetadataMapper {
CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT ,
CameraCharacteristics.SYNC_MAX_LATENCY ,
};
- m.set(REQUEST_AVAILABLE_CHARACTERISTICS_KEYS, getTagsForKeys(availableKeys));
+ List<Key<?>> characteristicsKeys = new ArrayList<>(Arrays.asList(availableKeys));
+
+ /*
+ * Add the conditional keys
+ */
+ if (m.get(LENS_INFO_MINIMUM_FOCUS_DISTANCE) != null) {
+ characteristicsKeys.add(LENS_INFO_MINIMUM_FOCUS_DISTANCE);
+ }
+
+ m.set(REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,
+ getTagsForKeys(characteristicsKeys.toArray(new Key<?>[0])));
}
/*
@@ -1141,6 +1166,11 @@ public class LegacyMetadataMapper {
}
}
+ if (VERBOSE) {
+ Log.v(TAG, "createRequestTemplate (templateId=" + templateId + ")," +
+ " afMode=" + afMode + ", minimumFocusDistance=" + minimumFocusDistance);
+ }
+
m.set(CaptureRequest.CONTROL_AF_MODE, afMode);
}