From c565700b94bc5f1fe3cbaeddd77e3312b2bf9098 Mon Sep 17 00:00:00 2001 From: Yin-Chia Yeh Date: Fri, 13 Jul 2018 13:42:43 -0700 Subject: [PATCH] Camera: hardware level related doc update Codegen doc update + CameraDevice manual update about EXTERNAL hardware level. Test: check offline-sdk-docs output Bug: 77861412 Change-Id: I70c87a176cf873cf8bec2037f973a94fe99aef2e --- .../camera2/CameraCharacteristics.java | 24 +++++++++++++++---- .../hardware/camera2/CameraDevice.java | 20 +++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index 32c6898e8c00b..60e4ce29ab513 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -3136,12 +3136,26 @@ public final class CameraCharacteristics extends CameraMetadata *
// Returns true if the device supports the required hardware level, or better.
      * boolean isHardwareLevelSupported(CameraCharacteristics c, int requiredLevel) {
+     *     final int[] sortedHwLevels = {
+     *         CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY,
+     *         CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL,
+     *         CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED,
+     *         CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL,
+     *         CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_3
+     *     };
      *     int deviceLevel = c.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
-     *     if (deviceLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
-     *         return requiredLevel == deviceLevel;
+     *     if (requiredLevel == deviceLevel) {
+     *         return true;
      *     }
-     *     // deviceLevel is not LEGACY, can use numerical sort
-     *     return requiredLevel <= deviceLevel;
+     *
+     *     for (int sortedlevel : sortedHwLevels) {
+     *         if (sortedlevel == requiredLevel) {
+     *             return true;
+     *         } else if (sortedlevel == deviceLevel) {
+     *             return false;
+     *         }
+     *     }
+     *     return false; // Should never reach here
      * }
      * 
*

At a high level, the levels are:

@@ -3155,6 +3169,8 @@ public final class CameraCharacteristics extends CameraMetadata *
  • LEVEL_3 devices additionally support YUV reprocessing and RAW image capture, along * with additional output stream configurations.
  • + *
  • EXTERNAL devices are similar to LIMITED devices with exceptions like some sensor or + * lens information not reorted or less stable framerates.
  • * *

    See the individual level enums for full descriptions of the supported capabilities. The * {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} entry describes the device's capabilities at a diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java index f47d4640c09ce..ce88697fa8db2 100644 --- a/core/java/android/hardware/camera2/CameraDevice.java +++ b/core/java/android/hardware/camera2/CameraDevice.java @@ -44,19 +44,27 @@ import java.lang.annotation.RetentionPolicy; * {@link android.Manifest.permission#CAMERA Camera} permission in its manifest * in order to access camera devices.

    * - *

    A given camera device may provide support at one of two levels: limited or - * full. If a device only supports the limited level, then Camera2 exposes a - * feature set that is roughly equivalent to the older + *

    A given camera device may provide support at one of several levels defined + * in {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL}. + * If a device supports {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY} level, + * the camera device is running in backward compatibility mode and has minimum camera2 API support. + * If a device supports the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED} + * level, then Camera2 exposes a feature set that is roughly equivalent to the older * {@link android.hardware.Camera Camera} API, although with a cleaner and more - * efficient interface. Devices that implement the full level of support + * efficient interface. + * If a device supports the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL EXTERNAL} + * level, then the device is a removable camera that provides similar but slightly less features + * as the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED} level. + * Devices that implement the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_FULL FULL} or + * {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_3 LEVEL3} level of support * provide substantially improved capabilities over the older camera - * API. Applications that target the limited level devices will run unchanged on - * the full-level devices; if your application requires a full-level device for + * API. If your application requires a full-level device for * proper operation, declare the "android.hardware.camera.level.full" feature in your * manifest.

    * * @see CameraManager#openCamera * @see android.Manifest.permission#CAMERA + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ public abstract class CameraDevice implements AutoCloseable {