CameraCapabilities.java revision 8097973089420749dcd1ab4974a629c2466b31cc
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 com.android.ex.camera2.portability.debug.Log; 20c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 21c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.ArrayList; 22c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.EnumSet; 23c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.HashSet; 24c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.List; 25c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.Set; 26c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongimport java.util.TreeSet; 27c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 288097973089420749dcd1ab4974a629c2466b31ccAngus Kong/** 298097973089420749dcd1ab4974a629c2466b31ccAngus Kong * This class holds all the static information of a camera's capabilities. 308097973089420749dcd1ab4974a629c2466b31ccAngus Kong * <p> 318097973089420749dcd1ab4974a629c2466b31ccAngus Kong * The design of this class is thread-safe and can be passed around regardless 328097973089420749dcd1ab4974a629c2466b31ccAngus Kong * of which thread using it. 338097973089420749dcd1ab4974a629c2466b31ccAngus Kong * </p> 348097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 35c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kongpublic class CameraCapabilities { 36c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 378097973089420749dcd1ab4974a629c2466b31ccAngus Kong private static Log.Tag TAG = new Log.Tag("CamCapabilities"); 388097973089420749dcd1ab4974a629c2466b31ccAngus Kong 398097973089420749dcd1ab4974a629c2466b31ccAngus Kong /* All internal states are declared final and should be thread-safe. */ 40c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 41c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final ArrayList<int[]> mSupportedPreviewFpsRange = new ArrayList<int[]>(); 428097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected final ArrayList<Size> mSupportedPreviewSizes = new ArrayList<Size>(); 43c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final TreeSet<Integer> mSupportedPreviewFormats = new TreeSet<Integer>(); 448097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected final ArrayList<Size> mSupportedVideoSizes = new ArrayList<Size>(); 458097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected final ArrayList<Size> mSupportedPhotoSizes = new ArrayList<Size>(); 468097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected final TreeSet<Integer> mSupportedPhotoFormats = new TreeSet<Integer>(); 47c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<SceneMode> mSupportedSceneModes = EnumSet.noneOf(SceneMode.class); 48c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<FlashMode> mSupportedFlashModes = EnumSet.noneOf(FlashMode.class); 49c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<FocusMode> mSupportedFocusModes = EnumSet.noneOf(FocusMode.class); 50c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<WhiteBalance> mSupportedWhiteBalances = 51c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong EnumSet.noneOf(WhiteBalance.class); 52c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected final EnumSet<Feature> mSupportedFeatures = EnumSet.noneOf(Feature.class); 538097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected Size mPreferredPreviewSizeForVideo; 54c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMinExposureCompensation; 55c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxExposureCompensation; 56c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected float mExposureCompensationStep; 57c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxNumOfFacesSupported; 58c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxNumOfFocusAreas; 59c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong protected int mMaxNumOfMeteringArea; 608097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected int mMaxZoomRatio; 61c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong private final Stringifier mStringifier; 628097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected final ArrayList<Integer> mZoomRatioList = new ArrayList<Integer>(); 638097973089420749dcd1ab4974a629c2466b31ccAngus Kong protected int mMaxZoomIndex; 64c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 658097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 668097973089420749dcd1ab4974a629c2466b31ccAngus Kong * Focus modes. 678097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 68c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum FocusMode { 69c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 70c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Continuous auto focus mode intended for taking pictures. 71c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_AUTO}. 72c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 73c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 74c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 75c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Continuous auto focus mode intended for taking pictures. 76c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_PICTURE}. 77c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 78c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CONTINUOUS_PICTURE, 79c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 80c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Continuous auto focus mode intended for video recording. 81c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO}. 82c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 83c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CONTINUOUS_VIDEO, 84c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 85c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Extended depth of field (EDOF). 86c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_EDOF}. 87c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 88c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong EXTENDED_DOF, 89c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 90c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Focus is fixed. 91c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_FIXED}. 92c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 93c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FIXED, 94c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 95c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Focus is set at infinity. 96c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_INFINITY}. 97c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 98c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong INFINITY, 99c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 100c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Macro (close-up) focus mode. 101c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FOCUS_MODE_MACRO}. 102c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 103c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong MACRO, 104c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 105c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 1068097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 1078097973089420749dcd1ab4974a629c2466b31ccAngus Kong * Flash modes. 1088097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 109c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum FlashMode { 110c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 1118097973089420749dcd1ab4974a629c2466b31ccAngus Kong * No flash. 1128097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 1138097973089420749dcd1ab4974a629c2466b31ccAngus Kong NO_FLASH, 1148097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 115c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will be fired automatically when required. 116c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_OFF}. 117c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 118c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 119c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 120c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will not be fired. 121c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_OFF}. 122c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 123c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong OFF, 124c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 125c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will always be fired during snapshot. 126c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_ON}. 127c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 128c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong ON, 129c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 130c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Constant emission of light during preview, auto-focus and snapshot. 131c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_TORCH}. 132c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 133c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong TORCH, 134c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 135c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Flash will be fired in red-eye reduction mode. 136c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#FLASH_MODE_RED_EYE}. 137c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 138c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong RED_EYE, 139c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 140c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 1418097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 1428097973089420749dcd1ab4974a629c2466b31ccAngus Kong * Scene modes. 1438097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 144c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum SceneMode { 145c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 1468097973089420749dcd1ab4974a629c2466b31ccAngus Kong * No supported scene mode. 1478097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 1488097973089420749dcd1ab4974a629c2466b31ccAngus Kong NO_SCENE_MODE, 1498097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 150c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Scene mode is off. 151c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_AUTO}. 152c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 153c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 154c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 155c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos of fast moving objects. 156c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_ACTION}. 157c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 158c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong ACTION, 159c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 160c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Applications are looking for a barcode. 161c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_BARCODE}. 162c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 163c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong BARCODE, 164c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 165c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take pictures on the beach. 166c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_BEACH}. 167c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 168c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong BEACH, 169c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 170c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Capture the naturally warm color of scenes lit by candles. 171c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_CANDLELIGHT}. 172c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 173c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CANDLELIGHT, 174c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 175c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * For shooting firework displays. 176c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_FIREWORKS}. 177c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 178c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FIREWORKS, 179c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 180c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Capture a scene using high dynamic range imaging techniques. 181c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_HDR}. 182c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 183c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong HDR, 184c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 185c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take pictures on distant objects. 186c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_LANDSCAPE}. 187c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 188c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong LANDSCAPE, 189c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 190c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos at night. 191c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_NIGHT}. 192c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 193c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong NIGHT, 194c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 195c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take people pictures at night. 196c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_NIGHT_PORTRAIT}. 197c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 198c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong NIGHT_PORTRAIT, 199c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 200c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take indoor low-light shot. 201c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_PARTY}. 202c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 203c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong PARTY, 204c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 205c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take people pictures. 206c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_PORTRAIT}. 207c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 208c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong PORTRAIT, 209c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 210c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take pictures on the snow. 211c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_SNOW}. 212c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 213c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SNOW, 214c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 215c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos of fast moving objects. 216c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_SPORTS}. 217c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 218c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SPORTS, 219c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 220c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Avoid blurry pictures (for example, due to hand shake). 221c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_STEADYPHOTO}. 222c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 223c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong STEADYPHOTO, 224c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 225c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take sunset photos. 226c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_SUNSET}. 227c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 228c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SUNSET, 229c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 230c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Take photos in a theater. 231c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#SCENE_MODE_THEATRE}. 232c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 233c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong THEATRE, 234c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 235c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 2368097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 2378097973089420749dcd1ab4974a629c2466b31ccAngus Kong * White blances. 2388097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 239c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum WhiteBalance { 240c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 241c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_AUTO}. 242c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 243c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO, 244c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 245c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_CLOUDY_DAYLIGHT}. 246c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 247c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong CLOUDY_DAYLIGHT, 248c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 249c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_DAYLIGHT}. 250c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 251c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong DAYLIGHT, 252c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 253c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_FLUORESCENT}. 254c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 255c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FLUORESCENT, 256c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 257c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_INCANDESCENT}. 258c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 259c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong INCANDESCENT, 260c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 261c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_SHADE}. 262c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 263c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SHADE, 264c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 265c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_TWILIGHT}. 266c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 267c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong TWILIGHT, 268c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 269c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @see {@link android.hardware.Camera.Parameters#WHITE_BALANCE_WARM_FLUORESCENT}. 270c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 271c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong WARM_FLUORESCENT, 272c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 273c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 2748097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 2758097973089420749dcd1ab4974a629c2466b31ccAngus Kong * Features. 2768097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 277c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public enum Feature { 278c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 279c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support zoom-related methods. 280c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 281c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong ZOOM, 282c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 283c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for photo capturing during video recording. 284c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 285c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong VIDEO_SNAPSHOT, 286c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 287c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for focus area settings. 288c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 289c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FOCUS_AREA, 290c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 291c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for metering area settings. 292c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 293c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong METERING_AREA, 294c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 295c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for automatic exposure lock. 296c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 297c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO_EXPOSURE_LOCK, 298c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 299c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Support for automatic white balance lock. 300c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 301c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong AUTO_WHITE_BALANCE_LOCK, 3028097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 3038097973089420749dcd1ab4974a629c2466b31ccAngus Kong * Support for video stabilization. 3048097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 3058097973089420749dcd1ab4974a629c2466b31ccAngus Kong VIDEO_STABILIZATION, 306c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 307c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 308c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 309c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * A interface stringifier to convert abstract representations to API 310c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * related string representation. 311c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 312c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public interface Stringifier { 313c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 314c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the focus mode to API-related string representation. 315c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 316c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param focus The focus mode to convert. 317c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 318c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * focus mode. 319c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 320c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(FocusMode focus); 321c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 322c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 323c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the focus mode to the 324c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * abstract representation. 325c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 326c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 327c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The focus mode represented by the input string. 328c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 329c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FocusMode focusModeFromString(String val); 330c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 331c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 332c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the flash mode to API-related string representation. 333c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 334c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param flash The focus mode to convert. 335c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 336c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * flash mode. 337c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 338c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(FlashMode flash); 339c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 340c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 341c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the flash mode to the 342c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * abstract representation. 343c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 344c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 3458097973089420749dcd1ab4974a629c2466b31ccAngus Kong * @return The flash mode represented by the input string. Can be 3468097973089420749dcd1ab4974a629c2466b31ccAngus Kong * {@code null}. 347c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 348c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong FlashMode flashModeFromString(String val); 349c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 350c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 351c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the scene mode to API-related string representation. 352c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 353c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param scene The focus mode to convert. 354c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 355c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * scene mode. 356c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 357c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(SceneMode scene); 358c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 359c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 360c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the scene mode to the 361c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * abstract representation. 362c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 363c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 364c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The scene mode represented by the input string. 365c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 366c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong SceneMode sceneModeFromString(String val); 367c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 368c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 369c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the white balance to API-related string representation. 370c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 371c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param wb The focus mode to convert. 372c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The string used by the camera framework API to represent the 373c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * white balance. 374c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 375c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong String stringify(WhiteBalance wb); 376c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 377c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 378c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Converts the API-related string representation of the white balance to 379c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * the abstract representation. 380c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * 381c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param val The string representation. 382c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The white balance represented by the input string. 383c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 384c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong WhiteBalance whiteBalanceFromString(String val); 385c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 386c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 387c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 3888097973089420749dcd1ab4974a629c2466b31ccAngus Kong * Constructor. 3898097973089420749dcd1ab4974a629c2466b31ccAngus Kong * @param stringifier The API-specific stringifier for this instance. 390c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 3918097973089420749dcd1ab4974a629c2466b31ccAngus Kong CameraCapabilities(Stringifier stringifier) { 3928097973089420749dcd1ab4974a629c2466b31ccAngus Kong mStringifier = stringifier; 393c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 394c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 395c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 396c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Copy constructor. 397c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @param src The source instance. 398c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 399c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public CameraCapabilities(CameraCapabilities src) { 400c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPreviewFpsRange.addAll(src.mSupportedPreviewFpsRange); 401c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPreviewSizes.addAll(src.mSupportedPreviewSizes); 402c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedPreviewFormats.addAll(src.mSupportedPreviewFormats); 403c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedVideoSizes.addAll(src.mSupportedVideoSizes); 4048097973089420749dcd1ab4974a629c2466b31ccAngus Kong mSupportedPhotoSizes.addAll(src.mSupportedPhotoSizes); 4058097973089420749dcd1ab4974a629c2466b31ccAngus Kong mSupportedPhotoFormats.addAll(src.mSupportedPhotoFormats); 406c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedSceneModes.addAll(src.mSupportedSceneModes); 407c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedFlashModes.addAll(src.mSupportedFlashModes); 408c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedFocusModes.addAll(src.mSupportedFocusModes); 409c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedWhiteBalances.addAll(src.mSupportedWhiteBalances); 410c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mSupportedFeatures.addAll(src.mSupportedFeatures); 4118097973089420749dcd1ab4974a629c2466b31ccAngus Kong mPreferredPreviewSizeForVideo = src.mPreferredPreviewSizeForVideo; 412c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMaxExposureCompensation = src.mMaxExposureCompensation; 413c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMinExposureCompensation = src.mMinExposureCompensation; 414c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mExposureCompensationStep = src.mExposureCompensationStep; 415c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMaxNumOfFacesSupported = src.mMaxNumOfFacesSupported; 416c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mMaxNumOfFocusAreas = src.mMaxNumOfFocusAreas; 4178097973089420749dcd1ab4974a629c2466b31ccAngus Kong mMaxNumOfMeteringArea = src.mMaxNumOfMeteringArea; 4188097973089420749dcd1ab4974a629c2466b31ccAngus Kong mMaxZoomRatio = src.mMaxZoomRatio; 419c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong mStringifier = src.mStringifier; 420c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 421c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 422c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 423c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return the supported picture formats. See {@link android.graphics.ImageFormat}. 424c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 4258097973089420749dcd1ab4974a629c2466b31ccAngus Kong public Set<Integer> getSupportedPhotoFormats() { 4268097973089420749dcd1ab4974a629c2466b31ccAngus Kong return new TreeSet<Integer>(mSupportedPhotoFormats); 427c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 428c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 429c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 430c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Gets the supported preview formats. 431c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported preview {@link android.graphics.ImageFormat}s. 432c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 433c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public Set<Integer> getSupportedPreviewFormats() { 434c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new TreeSet<Integer>(mSupportedPreviewFormats); 435c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 436c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 437c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 438c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * Gets the supported picture sizes. 439c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 4408097973089420749dcd1ab4974a629c2466b31ccAngus Kong public List<Size> getSupportedPhotoSizes() { 4418097973089420749dcd1ab4974a629c2466b31ccAngus Kong return new ArrayList<Size>(mSupportedPhotoSizes); 442c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 443c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 444c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 445c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 446c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported preview fps (frame-per-second) ranges. The returned 447c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * list is sorted by maximum fps then minimum fps in a descending order. 448c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * The values are multiplied by 1000. 449c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 450c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final List<int[]> getSupportedPreviewFpsRange() { 451c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new ArrayList<int[]>(mSupportedPreviewFpsRange); 452c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 453c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 454c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 4558097973089420749dcd1ab4974a629c2466b31ccAngus Kong * @return The supported preview sizes. The list is sorted by width then 456c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * height in a descending order. 457c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 4588097973089420749dcd1ab4974a629c2466b31ccAngus Kong public final List<Size> getSupportedPreviewSizes() { 4598097973089420749dcd1ab4974a629c2466b31ccAngus Kong return new ArrayList<Size>(mSupportedPreviewSizes); 4608097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 4618097973089420749dcd1ab4974a629c2466b31ccAngus Kong 4628097973089420749dcd1ab4974a629c2466b31ccAngus Kong public final Size getPreferredPreviewSizeForVideo() { 4638097973089420749dcd1ab4974a629c2466b31ccAngus Kong return new Size(mPreferredPreviewSizeForVideo); 464c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 465c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 466c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 467c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported video frame sizes that can be used by MediaRecorder. 4688097973089420749dcd1ab4974a629c2466b31ccAngus Kong * The list is sorted by width then height in a descending order. 469c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 4708097973089420749dcd1ab4974a629c2466b31ccAngus Kong public final List<Size> getSupportedVideoSizes() { 4718097973089420749dcd1ab4974a629c2466b31ccAngus Kong return new ArrayList<Size>(mSupportedVideoSizes); 472c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 473c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 474c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 475c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported scene modes. 476c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 477c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<SceneMode> getSupportedSceneModes() { 478c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<SceneMode>(mSupportedSceneModes); 479c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 480c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 481c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 482c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the scene mode is supported. 483c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 484c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final boolean supports(SceneMode scene) { 485c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (scene != null && mSupportedSceneModes.contains(scene)); 486c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 487c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 4888097973089420749dcd1ab4974a629c2466b31ccAngus Kong public boolean supports(final CameraSettings settings) { 4898097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (zoomCheck(settings) && exposureCheck(settings) && focusCheck(settings) && 4908097973089420749dcd1ab4974a629c2466b31ccAngus Kong flashCheck(settings) && photoSizeCheck(settings) && previewSizeCheck(settings) && 4918097973089420749dcd1ab4974a629c2466b31ccAngus Kong videoStabilizationCheck(settings)) { 4928097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 4938097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 4948097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 4958097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 4968097973089420749dcd1ab4974a629c2466b31ccAngus Kong 497c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 498c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported flash modes. 499c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 500c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<FlashMode> getSupportedFlashModes() { 501c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<FlashMode>(mSupportedFlashModes); 502c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 503c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 504c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 505c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the flash mode is supported. 506c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 507c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final boolean supports(FlashMode flash) { 508c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (flash != null && mSupportedFlashModes.contains(flash)); 509c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 510c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 511c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 512c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported focus modes. 513c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 514c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<FocusMode> getSupportedFocusModes() { 515c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<FocusMode>(mSupportedFocusModes); 516c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 517c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 518c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 519c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the focus mode is supported. 520c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 521c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final boolean supports(FocusMode focus) { 522c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (focus != null && mSupportedFocusModes.contains(focus)); 523c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 524c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 525c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 526c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The supported white balanceas. 527c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 528c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<WhiteBalance> getSupportedWhiteBalance() { 529c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<WhiteBalance>(mSupportedWhiteBalances); 530c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 531c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 532c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 533c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return Whether the white balance is supported. 534c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 535c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public boolean supports(WhiteBalance wb) { 536c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (wb != null && mSupportedWhiteBalances.contains(wb)); 537c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 538c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 539c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final Set<Feature> getSupportedFeature() { 540c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return new HashSet<Feature>(mSupportedFeatures); 541c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 542c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 543c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public boolean supports(Feature ft) { 544c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return (ft != null && mSupportedFeatures.contains(ft)); 545c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 546c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 547c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 5488097973089420749dcd1ab4974a629c2466b31ccAngus Kong * @return The maximal supported zoom ratio. 5498097973089420749dcd1ab4974a629c2466b31ccAngus Kong */ 5508097973089420749dcd1ab4974a629c2466b31ccAngus Kong public float getMaxZoomRatio() { 5518097973089420749dcd1ab4974a629c2466b31ccAngus Kong return mMaxZoomRatio; 5528097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 5538097973089420749dcd1ab4974a629c2466b31ccAngus Kong 5548097973089420749dcd1ab4974a629c2466b31ccAngus Kong // We'll replace these old style methods with new ones. 5558097973089420749dcd1ab4974a629c2466b31ccAngus Kong @Deprecated 5568097973089420749dcd1ab4974a629c2466b31ccAngus Kong public int getMaxZoomIndex() { 5578097973089420749dcd1ab4974a629c2466b31ccAngus Kong return mMaxZoomIndex; 5588097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 5598097973089420749dcd1ab4974a629c2466b31ccAngus Kong 5608097973089420749dcd1ab4974a629c2466b31ccAngus Kong @Deprecated 5618097973089420749dcd1ab4974a629c2466b31ccAngus Kong public List<Integer> getZoomRatioList() { 5628097973089420749dcd1ab4974a629c2466b31ccAngus Kong return new ArrayList<Integer>(mZoomRatioList); 5638097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 5648097973089420749dcd1ab4974a629c2466b31ccAngus Kong 5658097973089420749dcd1ab4974a629c2466b31ccAngus Kong /** 566c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The min exposure compensation index. The EV is the compensation 567c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * index multiplied by the step value. If unsupported, both this method and 568c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * {@link #getMaxExposureCompensation()} return 0. 569c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 570c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final int getMinExposureCompensation() { 571c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mMinExposureCompensation; 572c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 573c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 574c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 575c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The max exposure compensation index. The EV is the compensation 576c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * index multiplied by the step value. If unsupported, both this method and 577c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * {@link #getMinExposureCompensation()} return 0. 578c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 579c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final int getMaxExposureCompensation() { 580c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mMaxExposureCompensation; 581c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 582c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 583c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 584c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The exposure compensation step. The EV is the compensation index 585c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * multiplied by the step value. 586c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 587c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final float getExposureCompensationStep() { 588c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mExposureCompensationStep; 589c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 590c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 591c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 592c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The max number of faces supported by the face detection. 0 if 593c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * unsupported. 594c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 595c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public final int getMaxNumOfFacesSupported() { 596c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mMaxNumOfFacesSupported; 597c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 598c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong 599c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong /** 600c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong * @return The stringifier used by this instance. 601c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong */ 602c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong public Stringifier getStringifier() { 603c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong return mStringifier; 604c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong } 6058097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6068097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean zoomCheck(final CameraSettings settings) { 6078097973089420749dcd1ab4974a629c2466b31ccAngus Kong final float ratio = settings.getCurrentZoomRatio(); 6088097973089420749dcd1ab4974a629c2466b31ccAngus Kong final int index = settings.getCurrentZoomIndex(); 6098097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (!supports(Feature.ZOOM)) { 6108097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (ratio != 1.0f || index != 0) { 6118097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, "Zoom is not supported"); 6128097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6138097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6148097973089420749dcd1ab4974a629c2466b31ccAngus Kong } else { 6158097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (settings.getCurrentZoomRatio() > getMaxZoomRatio() || 6168097973089420749dcd1ab4974a629c2466b31ccAngus Kong index > getMaxZoomIndex()) { 6178097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, "Zoom ratio is not supported: ratio = " + 6188097973089420749dcd1ab4974a629c2466b31ccAngus Kong settings.getCurrentZoomRatio() + ", index = " + index); 6198097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6208097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6218097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6228097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6238097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6248097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6258097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean exposureCheck(final CameraSettings settings) { 6268097973089420749dcd1ab4974a629c2466b31ccAngus Kong final int index = settings.getExposureCompensationIndex(); 6278097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (index > getMaxExposureCompensation() || index < getMinExposureCompensation()) { 6288097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, "Exposure compensation index is not supported. Min = " + 6298097973089420749dcd1ab4974a629c2466b31ccAngus Kong getMinExposureCompensation() + ", max = " + getMaxExposureCompensation() + "," + 6308097973089420749dcd1ab4974a629c2466b31ccAngus Kong " setting = " + index); 6318097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6328097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6338097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6348097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6358097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6368097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean focusCheck(final CameraSettings settings) { 6378097973089420749dcd1ab4974a629c2466b31ccAngus Kong FocusMode focusMode = settings.getCurrentFocusMode(); 6388097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (!supports(focusMode)) { 6398097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, 6408097973089420749dcd1ab4974a629c2466b31ccAngus Kong "Focus mode not supported:" + (focusMode != null ? focusMode.name() : "null")); 6418097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6428097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6438097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6448097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6458097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6468097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean flashCheck(final CameraSettings settings) { 6478097973089420749dcd1ab4974a629c2466b31ccAngus Kong FlashMode flashMode = settings.getCurrentFlashMode(); 6488097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (!supports(flashMode)) { 6498097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, 6508097973089420749dcd1ab4974a629c2466b31ccAngus Kong "Flash mode not supported:" + (flashMode != null ? flashMode.name() : "null")); 6518097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6528097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6538097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6548097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6558097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6568097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean photoSizeCheck(final CameraSettings settings) { 6578097973089420749dcd1ab4974a629c2466b31ccAngus Kong Size photoSize = settings.getCurrentPhotoSize(); 6588097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (mSupportedPhotoSizes.contains(photoSize)) { 6598097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6608097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6618097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, "Unsupported photo size:" + photoSize); 6628097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6638097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6648097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6658097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean previewSizeCheck(final CameraSettings settings) { 6668097973089420749dcd1ab4974a629c2466b31ccAngus Kong final Size previewSize = settings.getCurrentPreviewSize(); 6678097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (mSupportedPreviewSizes.contains(previewSize)) { 6688097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6698097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6708097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, "Unsupported preview size:" + previewSize); 6718097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6728097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6738097973089420749dcd1ab4974a629c2466b31ccAngus Kong 6748097973089420749dcd1ab4974a629c2466b31ccAngus Kong private boolean videoStabilizationCheck(final CameraSettings settings) { 6758097973089420749dcd1ab4974a629c2466b31ccAngus Kong if (!settings.isVideoStabilizationEnabled() || supports(Feature.VIDEO_STABILIZATION)) { 6768097973089420749dcd1ab4974a629c2466b31ccAngus Kong return true; 6778097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 6788097973089420749dcd1ab4974a629c2466b31ccAngus Kong Log.v(TAG, "Video stabilization is not supported"); 6798097973089420749dcd1ab4974a629c2466b31ccAngus Kong return false; 6808097973089420749dcd1ab4974a629c2466b31ccAngus Kong } 681c36e3c983c232dc45ed31f3d8e98d8cdd7ac14baAngus Kong} 682