diff options
author | Igor Murashkin <iam@google.com> | 2014-06-19 15:45:06 -0700 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2014-06-20 13:45:46 -0700 |
commit | 1788b0466b029dafd728ce8b097d419c132c1b9e (patch) | |
tree | 9a9849d3076221d64d4ad4bafd8cbd0f1463f7b8 /core/java/android/hardware | |
parent | a427fcf2cb6cc49e4f137e2853e3b6f51af940c5 (diff) | |
download | frameworks_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.java | 1 | ||||
-rw-r--r-- | core/java/android/hardware/camera2/legacy/LegacyMetadataMapper.java | 31 |
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) { |