Merge "BasicCameraFactory: check if continuous picture af is available before requesting it."
diff --git a/src/com/android/camera/one/OneCameraCharacteristics.java b/src/com/android/camera/one/OneCameraCharacteristics.java
index 24584da..27504a2 100644
--- a/src/com/android/camera/one/OneCameraCharacteristics.java
+++ b/src/com/android/camera/one/OneCameraCharacteristics.java
@@ -135,6 +135,11 @@
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 b14e66e..c525b57 100644
--- a/src/com/android/camera/one/v1/OneCameraCharacteristicsImpl.java
+++ b/src/com/android/camera/one/v1/OneCameraCharacteristicsImpl.java
@@ -176,6 +176,11 @@
}
@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 f7a2b7e..77e9a81 100644
--- a/src/com/android/camera/one/v2/OneCameraCharacteristicsImpl.java
+++ b/src/com/android/camera/one/v2/OneCameraCharacteristicsImpl.java
@@ -244,6 +244,20 @@
}
@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 0e30db4..44883ea 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 @@
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(