CameraCapabilities.java revision c36e3c983c232dc45ed31f3d8e98d8cdd7ac14ba
1c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong/* 2c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Copyright (C) 2014 The Android Open Source Project 3c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 4c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Licensed under the Apache License, Version 2.0 (the "License"); 5c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * you may not use this file except in compliance with the License. 6c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * You may obtain a copy of the License at 7c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 8c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * http://www.apache.org/licenses/LICENSE-2.0 9c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 10c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Unless required by applicable law or agreed to in writing, software 11c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * distributed under the License is distributed on an "AS IS" BASIS, 12c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * See the License for the specific language governing permissions and 14c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * limitations under the License. 15c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 16c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 17c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongpackage com.android.ex.camera2.portability; 18c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 19c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport android.graphics.Point; 20c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 21c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport com.android.ex.camera2.portability.debug.Log; 22c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 23c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.ArrayList; 24c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.EnumSet; 25c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.HashSet; 26c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.List; 27c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.Set; 28c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.TreeSet; 29c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 30c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongpublic class CameraCapabilities { 31c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 32c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong private static Log.Tag TAG = new Log.Tag("CameraCapabilities"); 33c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 34c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final ArrayList<int[]> mSupportedPreviewFpsRange = new ArrayList<int[]>(); 35c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final ArrayList<Point> mSupportedPreviewSizes = new ArrayList<Point>(); 36c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final TreeSet<Integer> mSupportedPreviewFormats = new TreeSet<Integer>(); 37c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final ArrayList<Point> mSupportedVideoSizes = new ArrayList<Point>(); 38c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final ArrayList<Point> mSupportedPictureSizes = new ArrayList<Point>(); 39c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final TreeSet<Integer> mSupportedPictureFormats = new TreeSet<Integer>(); 40c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<SceneMode> mSupportedSceneModes = EnumSet.noneOf(SceneMode.class); 41c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<FlashMode> mSupportedFlashModes = EnumSet.noneOf(FlashMode.class); 42c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<FocusMode> mSupportedFocusModes = EnumSet.noneOf(FocusMode.class); 43c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<WhiteBalance> mSupportedWhiteBalances = 44c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong EnumSet.noneOf(WhiteBalance.class); 45c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<Feature> mSupportedFeatures = EnumSet.noneOf(Feature.class); 46c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMinExposureCompensation; 47c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxExposureCompensation; 48c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected float mExposureCompensationStep; 49c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxNumOfFacesSupported; 50c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxNumOfFocusAreas; 51c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxNumOfMeteringArea; 52c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong private final Stringifier mStringifier; 53c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 54c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong // Focus modes. 55c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum FocusMode { 56c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 57c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Continuous auto focus mode intended for taking pictures. 58c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_AUTO}. 59c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 60c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 61c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 62c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Continuous auto focus mode intended for taking pictures. 63c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_PICTURE}. 64c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 65c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CONTINUOUS_PICTURE, 66c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 67c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Continuous auto focus mode intended for video recording. 68c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO}. 69c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 70c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CONTINUOUS_VIDEO, 71c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 72c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Extended depth of field (EDOF). 73c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_EDOF}. 74c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 75c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong EXTENDED_DOF, 76c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 77c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Focus is fixed. 78c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_FIXED}. 79c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 80c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FIXED, 81c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 82c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Focus is set at infinity. 83c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_INFINITY}. 84c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 85c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong INFINITY, 86c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 87c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Macro (close-up) focus mode. 88c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_MACRO}. 89c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 90c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong MACRO, 91c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 92c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 93c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong // Flash modes. 94c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum FlashMode { 95c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 96c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will be fired automatically when required. 97c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_OFF}. 98c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 99c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 100c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 101c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will not be fired. 102c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_OFF}. 103c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 104c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong OFF, 105c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 106c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will always be fired during snapshot. 107c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_ON}. 108c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 109c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong ON, 110c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 111c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Constant emission of light during preview, auto-focus and snapshot. 112c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_TORCH}. 113c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 114c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong TORCH, 115c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 116c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will be fired in red-eye reduction mode. 117c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_RED_EYE}. 118c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 119c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong RED_EYE, 120c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 121c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 122c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum SceneMode { 123c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 124c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Scene mode is off. 125c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_AUTO}. 126c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 127c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 128c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 129c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos of fast moving objects. 130c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_ACTION}. 131c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 132c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong ACTION, 133c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 134c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Applications are looking for a barcode. 135c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_BARCODE}. 136c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 137c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong BARCODE, 138c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 139c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take pictures on the beach. 140c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_BEACH}. 141c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 142c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong BEACH, 143c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 144c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Capture the naturally warm color of scenes lit by candles. 145c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_CANDLELIGHT}. 146c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 147c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CANDLELIGHT, 148c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 149c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * For shooting firework displays. 150c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_FIREWORKS}. 151c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 152c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FIREWORKS, 153c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 154c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Capture a scene using high dynamic range imaging techniques. 155c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_HDR}. 156c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 157c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong HDR, 158c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 159c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take pictures on distant objects. 160c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_LANDSCAPE}. 161c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 162c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong LANDSCAPE, 163c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 164c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos at night. 165c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_NIGHT}. 166c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 167c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong NIGHT, 168c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 169c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take people pictures at night. 170c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_NIGHT_PORTRAIT}. 171c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 172c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong NIGHT_PORTRAIT, 173c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 174c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take indoor low-light shot. 175c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_PARTY}. 176c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 177c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong PARTY, 178c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 179c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take people pictures. 180c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_PORTRAIT}. 181c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 182c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong PORTRAIT, 183c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 184c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take pictures on the snow. 185c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_SNOW}. 186c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 187c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SNOW, 188c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 189c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos of fast moving objects. 190c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_SPORTS}. 191c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 192c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SPORTS, 193c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 194c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Avoid blurry pictures (for example, due to hand shake). 195c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_STEADYPHOTO}. 196c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 197c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong STEADYPHOTO, 198c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 199c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take sunset photos. 200c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_SUNSET}. 201c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 202c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SUNSET, 203c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 204c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos in a theater. 205c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_THEATRE}. 206c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 207c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong THEATRE, 208c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 209c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 210c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong // White balances. 211c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum WhiteBalance { 212c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 213c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_AUTO}. 214c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 215c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 216c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 217c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_CLOUDY_DAYLIGHT}. 218c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 219c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CLOUDY_DAYLIGHT, 220c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 221c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_DAYLIGHT}. 222c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 223c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong DAYLIGHT, 224c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 225c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_FLUORESCENT}. 226c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 227c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FLUORESCENT, 228c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 229c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_INCANDESCENT}. 230c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 231c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong INCANDESCENT, 232c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 233c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_SHADE}. 234c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 235c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SHADE, 236c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 237c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_TWILIGHT}. 238c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 239c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong TWILIGHT, 240c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 241c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_WARM_FLUORESCENT}. 242c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 243c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong WARM_FLUORESCENT, 244c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 245c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 246c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum Feature { 247c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 248c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support zoom-related methods. 249c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 250c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong ZOOM, 251c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 252c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for photo capturing during video recording. 253c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 254c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong VIDEO_SNAPSHOT, 255c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 256c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for focus area settings. 257c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 258c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FOCUS_AREA, 259c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 260c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for metering area settings. 261c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 262c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong METERING_AREA, 263c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 264c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for automatic exposure lock. 265c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 266c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO_EXPOSURE_LOCK, 267c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 268c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for automatic white balance lock. 269c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 270c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO_WHITE_BALANCE_LOCK, 271c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 272c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 273c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 274c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * A interface stringifier to convert abstract representations to API 275c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * related string representation. 276c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 277c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public interface Stringifier { 278c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 279c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the focus mode to API-related string representation. 280c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 281c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param focus The focus mode to convert. 282c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 283c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * focus mode. 284c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 285c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(FocusMode focus); 286c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 287c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 288c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the focus mode to the 289c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * abstract representation. 290c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 291c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 292c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The focus mode represented by the input string. 293c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 294c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FocusMode focusModeFromString(String val); 295c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 296c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 297c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the flash mode to API-related string representation. 298c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 299c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param flash The focus mode to convert. 300c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 301c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * flash mode. 302c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 303c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(FlashMode flash); 304c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 305c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 306c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the flash mode to the 307c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * abstract representation. 308c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 309c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 310c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The flash mode represented by the input string. 311c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 312c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FlashMode flashModeFromString(String val); 313c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 314c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 315c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the scene mode to API-related string representation. 316c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 317c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param scene The focus mode to convert. 318c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 319c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * scene mode. 320c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 321c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(SceneMode scene); 322c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 323c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 324c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the scene mode to the 325c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * abstract representation. 326c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 327c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 328c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The scene mode represented by the input string. 329c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 330c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SceneMode sceneModeFromString(String val); 331c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 332c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 333c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the white balance to API-related string representation. 334c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 335c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param wb The focus mode to convert. 336c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 337c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * white balance. 338c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 339c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(WhiteBalance wb); 340c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 341c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 342c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the white balance to 343c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * the abstract representation. 344c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 345c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 346c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The white balance represented by the input string. 347c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 348c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong WhiteBalance whiteBalanceFromString(String val); 349c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 350c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 351c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 352c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * constructor. 353c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param mStringifier The stringifier used by this instance. 354c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 355c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CameraCapabilities(Stringifier mStringifier) { 356c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong this.mStringifier = mStringifier; 357c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 358c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 359c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 360c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Copy constructor. 361c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param src The source instance. 362c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 363c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public CameraCapabilities(CameraCapabilities src) { 364c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPreviewFpsRange.addAll(src.mSupportedPreviewFpsRange); 365c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPreviewSizes.addAll(src.mSupportedPreviewSizes); 366c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPreviewFormats.addAll(src.mSupportedPreviewFormats); 367c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedVideoSizes.addAll(src.mSupportedVideoSizes); 368c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPictureSizes.addAll(src.mSupportedPictureSizes); 369c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPictureFormats.addAll(src.mSupportedPictureFormats); 370c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedSceneModes.addAll(src.mSupportedSceneModes); 371c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedFlashModes.addAll(src.mSupportedFlashModes); 372c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedFocusModes.addAll(src.mSupportedFocusModes); 373c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedWhiteBalances.addAll(src.mSupportedWhiteBalances); 374c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedFeatures.addAll(src.mSupportedFeatures); 375c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMaxExposureCompensation = src.mMaxExposureCompensation; 376c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMinExposureCompensation = src.mMinExposureCompensation; 377c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mExposureCompensationStep = src.mExposureCompensationStep; 378c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMaxNumOfFacesSupported = src.mMaxNumOfFacesSupported; 379c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMaxNumOfFocusAreas = src.mMaxNumOfFocusAreas; 380c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mStringifier = src.mStringifier; 381c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 382c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 383c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 384c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return the supported picture formats. See {@link android.graphics.ImageFormat}. 385c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 386c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public Set<Integer> getSupportedPictureFormats() { 387c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new TreeSet<Integer>(mSupportedPictureFormats); 388c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 389c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 390c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 391c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Gets the supported preview formats. 392c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported preview {@link android.graphics.ImageFormat}s. 393c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 394c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public Set<Integer> getSupportedPreviewFormats() { 395c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new TreeSet<Integer>(mSupportedPreviewFormats); 396c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 397c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 398c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 399c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Gets the supported picture sizes. 400c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 401c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public List<Point> getSupportedPictureSizes() { 402c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new ArrayList<Point>(mSupportedPictureSizes); 403c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 404c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 405c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 406c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 407c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported preview fps (frame-per-second) ranges. The returned 408c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * list is sorted by maximum fps then minimum fps in a descending order. 409c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * The values are multiplied by 1000. 410c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 411c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final List<int[]> getSupportedPreviewFpsRange() { 412c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new ArrayList<int[]>(mSupportedPreviewFpsRange); 413c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 414c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 415c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 416c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported preview sizes. The width and height are stored in 417c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Point.x and Point.y respectively and the list is sorted by width then 418c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * height in a descending order. 419c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 420c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final List<Point> getSupportedPreviewSizes() { 421c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new ArrayList<Point>(mSupportedPreviewSizes); 422c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 423c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 424c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 425c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported video frame sizes that can be used by MediaRecorder. 426c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * The width and height are stored in Point.x and Point.y respectively and 427c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * the list is sorted by width then height in a descending order. 428c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 429c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final List<Point> getSupportedVideoSizes() { 430c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new ArrayList<Point>(mSupportedVideoSizes); 431c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 432c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 433c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 434c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported scene modes. 435c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 436c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<SceneMode> getSupportedSceneModes() { 437c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<SceneMode>(mSupportedSceneModes); 438c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 439c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 440c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 441c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the scene mode is supported. 442c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 443c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final boolean supports(SceneMode scene) { 444c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (scene != null && mSupportedSceneModes.contains(scene)); 445c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 446c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 447c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 448c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported flash modes. 449c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 450c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<FlashMode> getSupportedFlashModes() { 451c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<FlashMode>(mSupportedFlashModes); 452c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 453c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 454c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 455c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the flash mode is supported. 456c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 457c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final boolean supports(FlashMode flash) { 458c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (flash != null && mSupportedFlashModes.contains(flash)); 459c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 460c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 461c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 462c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported focus modes. 463c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 464c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<FocusMode> getSupportedFocusModes() { 465c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<FocusMode>(mSupportedFocusModes); 466c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 467c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 468c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 469c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the focus mode is supported. 470c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 471c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final boolean supports(FocusMode focus) { 472c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (focus != null && mSupportedFocusModes.contains(focus)); 473c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 474c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 475c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 476c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported white balanceas. 477c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 478c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<WhiteBalance> getSupportedWhiteBalance() { 479c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<WhiteBalance>(mSupportedWhiteBalances); 480c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 481c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 482c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 483c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the white balance is supported. 484c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 485c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public boolean supports(WhiteBalance wb) { 486c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (wb != null && mSupportedWhiteBalances.contains(wb)); 487c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 488c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 489c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<Feature> getSupportedFeature() { 490c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<Feature>(mSupportedFeatures); 491c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 492c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 493c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public boolean supports(Feature ft) { 494c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (ft != null && mSupportedFeatures.contains(ft)); 495c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 496c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 497c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 498c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The min exposure compensation index. The EV is the compensation 499c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * index multiplied by the step value. If unsupported, both this method and 500c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * {@link #getMaxExposureCompensation()} return 0. 501c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 502c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final int getMinExposureCompensation() { 503c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mMinExposureCompensation; 504c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 505c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 506c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 507c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The max exposure compensation index. The EV is the compensation 508c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * index multiplied by the step value. If unsupported, both this method and 509c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * {@link #getMinExposureCompensation()} return 0. 510c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 511c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final int getMaxExposureCompensation() { 512c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mMaxExposureCompensation; 513c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 514c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 515c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 516c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The exposure compensation step. The EV is the compensation index 517c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * multiplied by the step value. 518c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 519c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final float getExposureCompensationStep() { 520c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mExposureCompensationStep; 521c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 522c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 523c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 524c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The max number of faces supported by the face detection. 0 if 525c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * unsupported. 526c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 527c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final int getMaxNumOfFacesSupported() { 528c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mMaxNumOfFacesSupported; 529c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 530c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 531c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 532c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The stringifier used by this instance. 533c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 534c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public Stringifier getStringifier() { 535c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mStringifier; 536c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 537c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong} 538