diff options
author | Jayant Chowdhary <jchowdhary@google.com> | 2019-02-15 10:31:54 -0800 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-10-07 22:04:13 +0300 |
commit | 516f2d4fe92fe8caad2864f4b9f0bd9c91ed2875 (patch) | |
tree | c63844febad9adf2b36bfed98e129a6c9fc2d2af | |
parent | 0ec19a87d18fc82e4e3bf50c66bb61d73a17946a (diff) | |
download | android_packages_apps_Camera2-516f2d4fe92fe8caad2864f4b9f0bd9c91ed2875.tar.gz android_packages_apps_Camera2-516f2d4fe92fe8caad2864f4b9f0bd9c91ed2875.tar.bz2 android_packages_apps_Camera2-516f2d4fe92fe8caad2864f4b9f0bd9c91ed2875.zip |
BasicCameraFactory: check if continuous picture af is available before requesting it.
Bug: 119284303
Test: Click a picture on a device without AF on front camera.
Change-Id: I5133d56d69f7a1f6e01d6682fff91202aaa9be17
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
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( |