1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.camera.one; 18 19 import android.graphics.ImageFormat; 20 import android.graphics.Rect; 21 import android.hardware.camera2.CameraCharacteristics; 22 23 import com.android.camera.ui.motion.LinearScale; 24 import com.android.camera.util.Size; 25 26 import java.util.List; 27 28 /** 29 * The properties describing a OneCamera device. These properties are fixed for 30 * a given OneCamera device. 31 */ 32 public interface OneCameraCharacteristics { 33 public enum SupportedHardwareLevel { 34 FULL, LIMITED, LEGACY 35 } 36 37 public enum FaceDetectMode { 38 FULL, SIMPLE, NONE 39 } 40 41 /** 42 * Gets the supported picture sizes for the given image format. 43 * 44 * @param imageFormat The specific image format listed on 45 * {@link ImageFormat}. 46 */ getSupportedPictureSizes(int imageFormat)47 public List<Size> getSupportedPictureSizes(int imageFormat); 48 49 /** 50 * Gets the supported preview sizes. 51 */ getSupportedPreviewSizes()52 public List<Size> getSupportedPreviewSizes(); 53 54 /** 55 * @See {@link CameraCharacteristics#SENSOR_ORIENTATION} 56 */ getSensorOrientation()57 public int getSensorOrientation(); 58 59 /** 60 * @Return The direction of the camera 61 */ getCameraDirection()62 public OneCamera.Facing getCameraDirection(); 63 64 /** 65 * @See {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE} 66 */ getSensorInfoActiveArraySize()67 public Rect getSensorInfoActiveArraySize(); 68 69 /** 70 * @See {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM} 71 */ getAvailableMaxDigitalZoom()72 public float getAvailableMaxDigitalZoom(); 73 74 /** 75 * @return If flash is supported for this camera. 76 */ isFlashSupported()77 public boolean isFlashSupported(); 78 79 /** 80 * @return If Scene-mode HDR is supported. 81 */ isHdrSceneSupported()82 public boolean isHdrSceneSupported(); 83 84 /** 85 * @return The supported hardware level. 86 */ getSupportedHardwareLevel()87 public SupportedHardwareLevel getSupportedHardwareLevel(); 88 89 /** 90 * @return The supported face detection modes. 91 */ getSupportedFaceDetectModes()92 public List<FaceDetectMode> getSupportedFaceDetectModes(); 93 94 /** 95 * A converter from the physical focus range of the camera to a ratio. 96 */ getLensFocusRange()97 public LinearScale getLensFocusRange(); 98 99 /** 100 * @return A List of available focal lengths for this camera. 101 */ getAvailableFocalLengths()102 public List<Float> getAvailableFocalLengths(); 103 104 /** 105 * Whether exposure compensation is supported for this camera. 106 * 107 * @return true if exposure compensation is supported for this camera. 108 */ isExposureCompensationSupported()109 public boolean isExposureCompensationSupported(); 110 111 /** 112 * @return The min exposure compensation index. The EV is the compensation 113 * index multiplied by the step value. If {@link 114 * #isExposureCompensationSupported()} is false, return -1. 115 */ getMinExposureCompensation()116 public int getMinExposureCompensation(); 117 118 /** 119 * @return The max exposure compensation index. The EV is the compensation 120 * index multiplied by the step value. If {@link 121 * #isExposureCompensationSupported()} is false, return -1. 122 */ getMaxExposureCompensation()123 public int getMaxExposureCompensation(); 124 125 /** 126 * @return The exposure compensation step. The EV is the compensation index 127 * multiplied by the step value. If {@link 128 * #isExposureCompensationSupported()} is false, return -1. 129 */ getExposureCompensationStep()130 public float getExposureCompensationStep(); 131 132 /** 133 * @return true if this camera supports custom AutoFocus regions. 134 */ isAutoFocusSupported()135 public boolean isAutoFocusSupported(); 136 137 /** 138 * @return true if this camera supports continuous picture autofocus. 139 */ isContinuousPictureAutoFocusSupported()140 public boolean isContinuousPictureAutoFocusSupported(); 141 142 /** 143 * @return true if this camera supports custom AutoExposure regions. 144 */ isAutoExposureSupported()145 public boolean isAutoExposureSupported(); 146 } 147