summaryrefslogtreecommitdiffstats
path: root/core/java/android/hardware
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2014-06-19 15:45:06 -0700
committerIgor Murashkin <iam@google.com>2014-06-20 13:45:46 -0700
commit1788b0466b029dafd728ce8b097d419c132c1b9e (patch)
tree9a9849d3076221d64d4ad4bafd8cbd0f1463f7b8 /core/java/android/hardware
parenta427fcf2cb6cc49e4f137e2853e3b6f51af940c5 (diff)
downloadframeworks_base-1788b0466b029dafd728ce8b097d419c132c1b9e.zip
frameworks_base-1788b0466b029dafd728ce8b097d419c132c1b9e.tar.gz
frameworks_base-1788b0466b029dafd728ce8b097d419c132c1b9e.tar.bz2
camera2: Shim fix hwLevel and minimumFocusDistance
Change-Id: Ie4ab330a738ac4c8e465eacade1bbc39bdb776fe
Diffstat (limited to 'core/java/android/hardware')
-rw-r--r--core/java/android/hardware/camera2/CameraCharacteristics.java1
-rw-r--r--core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java31
2 files changed, 31 insertions, 1 deletions
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index 4a87680..e2f88eb 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -579,6 +579,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri
* of the lens that can be focused correctly.</p>
* <p>If the lens is fixed-focus, this should be
* 0.</p>
+ * <p><b>Optional</b> - This value may be {@code null} on some devices.</p>
*/
public static final Key<Float> LENS_INFO_MINIMUM_FOCUS_DISTANCE =
new Key<Float>("android.lens.info.minimumFocusDistance", float.class);
diff --git a/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java b/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
index 6fa2134..048878c 100644
--- a/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
+++ b/core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java
@@ -48,6 +48,9 @@ public class LegacyMetadataMapper {
private static final int HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED = 0x22;
private static final int HAL_PIXEL_FORMAT_BLOB = 0x21;
+ // for metadata
+ private static final float LENS_INFO_MINIMUM_FOCUS_DISTANCE_FIXED_FOCUS = 0.0f;
+
private static final long APPROXIMATE_CAPTURE_DELAY_MS = 200; // ms
private static final long APPROXIMATE_SENSOR_AREA = (1 << 20); // 8mp
private static final long APPROXIMATE_JPEG_ENCODE_TIME = 600; // ms
@@ -94,10 +97,12 @@ public class LegacyMetadataMapper {
}
private static void mapCameraParameters(CameraMetadataNative m, Camera.Parameters p) {
+ m.set(INFO_SUPPORTED_HARDWARE_LEVEL, INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED);
mapStreamConfigs(m, p);
mapAeConfig(m, p);
mapCapabilities(m, p);
-
+ mapLens(m, p);
+ mapFlash(m, p);
// TODO: map other fields
}
@@ -200,6 +205,30 @@ public class LegacyMetadataMapper {
m.set(REQUEST_AVAILABLE_CAPABILITIES, capabilities);
}
+ private static void mapLens(CameraMetadataNative m, Camera.Parameters p) {
+ /*
+ * 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) {
+ m.set(LENS_INFO_MINIMUM_FOCUS_DISTANCE, LENS_INFO_MINIMUM_FOCUS_DISTANCE_FIXED_FOCUS);
+ }
+ }
+
+ private static void mapFlash(CameraMetadataNative m, Camera.Parameters p) {
+ boolean flashAvailable = false;
+ List<String> supportedFlashModes = p.getSupportedFlashModes();
+ if (supportedFlashModes != null) {
+ // If only 'OFF' is available, we don't really have flash support
+ if (!(supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_OFF) &&
+ supportedFlashModes.size() == 1)) {
+ flashAvailable = true;
+ }
+ }
+
+ m.set(FLASH_INFO_AVAILABLE, flashAvailable);
+ }
+
private static void appendStreamConfig(
ArrayList<StreamConfiguration> configs, int format, List<Camera.Size> sizes) {
for (Camera.Size size : sizes) {