| /* |
| * 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.camera.hardware; |
| |
| import com.android.camera.app.CameraProvider; |
| import com.android.camera.one.OneCamera; |
| import com.android.camera.one.config.OneCameraFeatureConfig; |
| import com.android.camera.util.GcamHelper; |
| import com.android.ex.camera2.portability.CameraCapabilities; |
| |
| /** |
| * HardwareSpecImpl is the default implementation of |
| * {@link com.android.camera.hardware.HardwareSpec} for |
| * a camera device opened using the {@link android.hardware.Camera} |
| * api. |
| */ |
| public class HardwareSpecImpl implements HardwareSpec { |
| |
| private final boolean mIsFrontCameraSupported; |
| private final boolean mIsHdrSupported; |
| private final boolean mIsHdrPlusSupported; |
| private final boolean mIsFlashSupported; |
| |
| /** |
| * Compute the supported values for all |
| * {@link com.android.camera.hardware.HardwareSpec} methods |
| */ |
| public HardwareSpecImpl(CameraProvider provider, CameraCapabilities capabilities, |
| OneCameraFeatureConfig featureConfig, boolean isFrontCamera) { |
| // Cache whether front camera is supported. |
| mIsFrontCameraSupported = (provider.getFirstFrontCameraId() != -1); |
| |
| // Cache whether hdr is supported. |
| mIsHdrSupported = capabilities.supports(CameraCapabilities.SceneMode.HDR); |
| |
| // Cache whether hdr plus is supported. |
| OneCamera.Facing cameraFacing = |
| isFrontCamera ? OneCamera.Facing.FRONT : OneCamera.Facing.BACK; |
| mIsHdrPlusSupported = featureConfig.getHdrPlusSupportLevel(cameraFacing) != |
| OneCameraFeatureConfig.HdrPlusSupportLevel.NONE; |
| |
| // Cache whether flash is supported. |
| mIsFlashSupported = isFlashSupported(capabilities); |
| } |
| |
| @Override |
| public boolean isFrontCameraSupported() { |
| return mIsFrontCameraSupported; |
| } |
| |
| @Override |
| public boolean isHdrSupported() { |
| return mIsHdrSupported; |
| } |
| |
| @Override |
| public boolean isHdrPlusSupported() { |
| return mIsHdrPlusSupported; |
| } |
| |
| @Override |
| public boolean isFlashSupported() { |
| return mIsFlashSupported; |
| } |
| |
| /** |
| * Returns whether flash is supported and flash has more than |
| * one possible value. |
| */ |
| private boolean isFlashSupported(CameraCapabilities capabilities) { |
| return (capabilities.supports(CameraCapabilities.FlashMode.AUTO) || capabilities.supports |
| (CameraCapabilities.FlashMode.ON)); |
| } |
| } |