/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.camera.one; import com.android.camera.async.Observable; import com.android.camera.async.Observables; import com.android.camera.device.CameraId; import com.android.camera.hardware.HardwareSpec; import com.android.camera.one.OneCamera.Facing; import com.android.camera.settings.Keys; import com.android.camera.settings.ResolutionSetting; import com.android.camera.settings.SettingObserver; import com.android.camera.settings.SettingsManager; import com.android.camera.util.Size; import com.google.common.base.Function; /** * Contains related settings to configure a camera for a particular type of * capture. */ public class OneCameraCaptureSetting { private final Size mCaptureSize; private final Observable mFlashSetting; private final Observable mExposureSetting; private final Observable mHdrSceneSetting; private final boolean mIsHdrPlusEnabled; public static OneCameraCaptureSetting create( Size pictureSize, SettingsManager settingsManager, final HardwareSpec hardwareSpec, String cameraSettingScope, boolean isHdrPlusEnabled) { Observable flashSetting; if (hardwareSpec.isFlashSupported()) { flashSetting = new FlashSetting(SettingObserver.ofString( settingsManager, cameraSettingScope, Keys.KEY_FLASH_MODE)); } else { flashSetting = new FlashSetting(Observables.of("off")); } Observable exposureSetting = SettingObserver.ofInteger( settingsManager, cameraSettingScope, Keys.KEY_EXPOSURE); Observable hdrSceneSetting; if (hardwareSpec.isHdrSupported()) { hdrSceneSetting = SettingObserver.ofBoolean(settingsManager, SettingsManager.SCOPE_GLOBAL, Keys.KEY_CAMERA_HDR); } else { hdrSceneSetting = Observables.of(false); } return new OneCameraCaptureSetting( pictureSize, flashSetting, exposureSetting, hdrSceneSetting, isHdrPlusEnabled); } private OneCameraCaptureSetting( Size captureSize, Observable flashSetting, Observable exposureSetting, Observable hdrSceneSetting, boolean isHdrPlusEnabled) { mCaptureSize = captureSize; mFlashSetting = flashSetting; mExposureSetting = exposureSetting; mHdrSceneSetting = hdrSceneSetting; mIsHdrPlusEnabled = isHdrPlusEnabled; } public Size getCaptureSize() { return mCaptureSize; } public Observable getFlashSetting() { return mFlashSetting; } public Observable getExposureSetting() { return mExposureSetting; } public Observable getHdrSceneSetting() { return mHdrSceneSetting; } public boolean isHdrPlusEnabled() { return mIsHdrPlusEnabled; } }