| /* |
| * Copyright (C) 2014 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.ex.camera2.portability; |
| |
| import android.hardware.Camera; |
| import com.android.ex.camera2.portability.debug.Log; |
| |
| /** |
| * The subclass of {@link CameraSettings} for Android Camera 1 API. |
| */ |
| public class AndroidCameraSettings extends CameraSettings { |
| private static final Log.Tag TAG = new Log.Tag("AndCamSet"); |
| |
| private static final String TRUE = "true"; |
| private static final String RECORDING_HINT = "recording-hint"; |
| |
| public AndroidCameraSettings(CameraCapabilities capabilities, Camera.Parameters params) { |
| if (params == null) { |
| Log.w(TAG, "Settings ctor requires a non-null Camera.Parameters."); |
| return; |
| } |
| |
| CameraCapabilities.Stringifier stringifier = capabilities.getStringifier(); |
| |
| setSizesLocked(false); |
| |
| // Preview |
| Camera.Size paramPreviewSize = params.getPreviewSize(); |
| setPreviewSize(new Size(paramPreviewSize.width, paramPreviewSize.height)); |
| setPreviewFrameRate(params.getPreviewFrameRate()); |
| int[] previewFpsRange = new int[2]; |
| params.getPreviewFpsRange(previewFpsRange); |
| setPreviewFpsRange(previewFpsRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX], |
| previewFpsRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]); |
| setPreviewFormat(params.getPreviewFormat()); |
| |
| // Capture: Focus, flash, zoom, exposure, scene mode. |
| if (capabilities.supports(CameraCapabilities.Feature.ZOOM)) { |
| setZoomRatio(params.getZoomRatios().get(params.getZoom()) / 100f); |
| } else { |
| setZoomRatio(CameraCapabilities.ZOOM_RATIO_UNZOOMED); |
| } |
| setExposureCompensationIndex(params.getExposureCompensation()); |
| setFlashMode(stringifier.flashModeFromString(params.getFlashMode())); |
| setFocusMode(stringifier.focusModeFromString(params.getFocusMode())); |
| setSceneMode(stringifier.sceneModeFromString(params.getSceneMode())); |
| |
| // Video capture. |
| if (capabilities.supports(CameraCapabilities.Feature.VIDEO_STABILIZATION)) { |
| setVideoStabilization(isVideoStabilizationEnabled()); |
| } |
| setRecordingHintEnabled(TRUE.equals(params.get(RECORDING_HINT))); |
| |
| // Output: Photo size, compression quality |
| setPhotoJpegCompressionQuality(params.getJpegQuality()); |
| Camera.Size paramPictureSize = params.getPictureSize(); |
| setPhotoSize(new Size(paramPictureSize.width, paramPictureSize.height)); |
| setPhotoFormat(params.getPictureFormat()); |
| } |
| |
| public AndroidCameraSettings(AndroidCameraSettings other) { |
| super(other); |
| } |
| |
| @Override |
| public CameraSettings copy() { |
| return new AndroidCameraSettings(this); |
| } |
| } |