diff options
4 files changed, 30 insertions, 2 deletions
diff --git a/src/com/android/camera/one/OneCameraCharacteristics.java b/src/com/android/camera/one/OneCameraCharacteristics.java index 24584da45..27504a243 100644 --- a/src/com/android/camera/one/OneCameraCharacteristics.java +++ b/src/com/android/camera/one/OneCameraCharacteristics.java @@ -135,6 +135,11 @@ public interface OneCameraCharacteristics { public boolean isAutoFocusSupported(); /** + * @return true if this camera supports continuous picture autofocus. + */ + public boolean isContinuousPictureAutoFocusSupported(); + + /** * @return true if this camera supports custom AutoExposure regions. */ public boolean isAutoExposureSupported(); diff --git a/src/com/android/camera/one/v1/OneCameraCharacteristicsImpl.java b/src/com/android/camera/one/v1/OneCameraCharacteristicsImpl.java index b14e66ec1..c525b572d 100644 --- a/src/com/android/camera/one/v1/OneCameraCharacteristicsImpl.java +++ b/src/com/android/camera/one/v1/OneCameraCharacteristicsImpl.java @@ -176,6 +176,11 @@ public class OneCameraCharacteristicsImpl implements OneCameraCharacteristics { } @Override + public boolean isContinuousPictureAutoFocusSupported() { + return getCameraDirection() == Facing.BACK; + } + + @Override public boolean isAutoExposureSupported() { // Custom AE is only supported on the back camera for legacy devices. return getCameraDirection() == Facing.BACK; diff --git a/src/com/android/camera/one/v2/OneCameraCharacteristicsImpl.java b/src/com/android/camera/one/v2/OneCameraCharacteristicsImpl.java index f7a2b7e17..77e9a8173 100644 --- a/src/com/android/camera/one/v2/OneCameraCharacteristicsImpl.java +++ b/src/com/android/camera/one/v2/OneCameraCharacteristicsImpl.java @@ -244,6 +244,20 @@ public class OneCameraCharacteristicsImpl implements OneCameraCharacteristics { } @Override + public boolean isContinuousPictureAutoFocusSupported() { + int[] availableAfModes = + mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES); + boolean continuousPictureAfModeAvailable = false; + for (int i = 0; i < availableAfModes.length; i++) { + if (availableAfModes[i] == CameraCharacteristics.CONTROL_AF_MODE_CONTINUOUS_PICTURE) { + continuousPictureAfModeAvailable = true; + break; + } + } + return isAutoFocusSupported() && continuousPictureAfModeAvailable; + } + + @Override public boolean isAutoExposureSupported() { Integer maxAeRegions = mCameraCharacteristics.get( CameraCharacteristics.CONTROL_MAX_REGIONS_AE); diff --git a/src/com/android/camera/one/v2/common/BasicCameraFactory.java b/src/com/android/camera/one/v2/common/BasicCameraFactory.java index 2cd40984f..c9ed57f12 100644 --- a/src/com/android/camera/one/v2/common/BasicCameraFactory.java +++ b/src/com/android/camera/one/v2/common/BasicCameraFactory.java @@ -87,8 +87,12 @@ public class BasicCameraFactory { Observable<Boolean> hdrSceneSetting, int templateType) { RequestTemplate requestTemplate = new RequestTemplate(rootTemplate); - requestTemplate.setParam( - CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); + if (cameraCharacteristics.isContinuousPictureAutoFocusSupported()) { + requestTemplate.setParam( + CaptureRequest.CONTROL_AF_MODE, + CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); + } + requestTemplate.setParam( CaptureRequest.CONTROL_AE_MODE, new FlashBasedAEMode(flash, hdrSceneSetting)); requestTemplate.setParam( |