19c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall/* 29c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Copyright (C) 2014 The Android Open Source Project 39c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * 49c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Licensed under the Apache License, Version 2.0 (the "License"); 59c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * you may not use this file except in compliance with the License. 69c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * You may obtain a copy of the License at 79c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * 89c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * http://www.apache.org/licenses/LICENSE-2.0 99c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * 109c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Unless required by applicable law or agreed to in writing, software 119c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * distributed under the License is distributed on an "AS IS" BASIS, 129c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * See the License for the specific language governing permissions and 149c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * limitations under the License. 159c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall */ 169c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 179c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallpackage com.android.camera.one.v2.common; 189c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 199c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.CaptureRequest; 209c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 219c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport com.android.camera.one.OneCamera; 229ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lallimport com.google.common.base.Supplier; 239c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 249c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall/** 259ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall * Computes the current AE Mode to use based on the current flash state. 269c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall */ 279ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lallpublic class FlashBasedAEMode implements Supplier<Integer> { 289ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall private final Supplier<OneCamera.PhotoCaptureParameters.Flash> mFlash; 290db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde private final Supplier<Boolean> mHdrSceneMode; 309c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 310db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde public FlashBasedAEMode( 320db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde Supplier<OneCamera.PhotoCaptureParameters.Flash> flash, 330db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde Supplier<Boolean> hdrSceneMode) { 349ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall mFlash = flash; 350db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde mHdrSceneMode = hdrSceneMode; 369c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall } 379c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 389c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall @Override 399ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall public Integer get() { 400db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde // In the case that hdr scene mode is on, disable flash. 410db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde if (mHdrSceneMode.get()) { 420db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde return CaptureRequest.CONTROL_AE_MODE_ON; 430db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde } 440db8a2fd5cc02753d42f34a1c858b980c6c277bbPaul Rohde 459ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall switch (mFlash.get()) { 469c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall case AUTO: 479c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall return CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH; 489c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall case ON: 499c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall return CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH; 509c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall case OFF: 519c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall return CaptureRequest.CONTROL_AE_MODE_ON; 529c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall default: 539c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall return CaptureRequest.CONTROL_AE_MODE_ON; 549c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall } 559c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall } 569c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall} 57