Change MeteringPoint from enum to IntDef.
Bug: 144053857
Test: manual test and ./gradlew bOS
Change-Id: I9dee4a428bfe8944889b89b33c850d5623745d81
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java
index ee964c8..396bedc 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java
@@ -439,7 +439,7 @@
SurfaceOrientedMeteringPointFactory factory = new SurfaceOrientedMeteringPointFactory(1.0f,
1.0f);
FocusMeteringAction action = FocusMeteringAction.Builder.from(factory.createPoint(0, 0),
- MeteringMode.AE_AWB)
+ MeteringMode.AE | MeteringMode.AWB)
.build();
mCamera2CameraControl.startFocusAndMetering(action);
HandlerUtil.waitForLooperToIdle(mHandler);
@@ -530,7 +530,7 @@
SurfaceOrientedMeteringPointFactory factory = new SurfaceOrientedMeteringPointFactory(1.0f,
1.0f);
FocusMeteringAction action = FocusMeteringAction.Builder.from(factory.createPoint(0, 0),
- MeteringMode.AE_ONLY)
+ MeteringMode.AE)
.build();
mCamera2CameraControl.startFocusAndMetering(action);
HandlerUtil.waitForLooperToIdle(mHandler);
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java
index dd25292..e60ba92 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java
@@ -47,6 +47,7 @@
import androidx.camera.camera2.impl.annotation.CameraExecutor;
import androidx.camera.core.CameraControlInternal;
import androidx.camera.core.FocusMeteringAction;
+import androidx.camera.core.FocusMeteringAction.MeteringMode;
import androidx.camera.core.ImageAnalysis;
import androidx.camera.core.MeteringPoint;
import androidx.camera.core.MeteringPointFactory;
@@ -285,9 +286,9 @@
@Test
public void startFocusAndMetering_multiplePointVariousModes() {
mFocusMeteringControl.startFocusAndMetering(
- FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AWB_ONLY)
- .addPoint(mPoint2, FocusMeteringAction.MeteringMode.AF_AE)
- .addPoint(mPoint3, FocusMeteringAction.MeteringMode.AF_AE_AWB)
+ FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AE)
+ .addPoint(mPoint3, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
.build(), PREVIEW_ASPECT_RATIO_4_X_3);
MeteringRectangle[] afRects = getAfRects(mFocusMeteringControl);
@@ -310,9 +311,9 @@
@Test
public void startFocusAndMetering_multiplePointVariousModes2() {
mFocusMeteringControl.startFocusAndMetering(
- FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AF_ONLY)
- .addPoint(mPoint2, FocusMeteringAction.MeteringMode.AWB_ONLY)
- .addPoint(mPoint3, FocusMeteringAction.MeteringMode.AE_ONLY)
+ FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AF)
+ .addPoint(mPoint2, MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AE)
.build(), PREVIEW_ASPECT_RATIO_4_X_3);
MeteringRectangle[] afRects = getAfRects(mFocusMeteringControl);
MeteringRectangle[] aeRects = getAeRects(mFocusMeteringControl);
@@ -436,28 +437,29 @@
@Test
public void withAFPoints_AFIsTriggered() {
mFocusMeteringControl.startFocusAndMetering(FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_AE_AWB).build(), PREVIEW_ASPECT_RATIO_4_X_3);
+ MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB).build(),
+ PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl).triggerAf();
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.startFocusAndMetering(
FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_ONLY).build(),
+ MeteringMode.AF).build(),
PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl).triggerAf();
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.startFocusAndMetering(
FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_AE).build(),
+ MeteringMode.AF | MeteringMode.AE).build(),
PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl).triggerAf();
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.startFocusAndMetering(
FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_AWB).build(),
+ MeteringMode.AF | MeteringMode.AWB).build(),
PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl).triggerAf();
Mockito.reset(mFocusMeteringControl);
@@ -465,28 +467,27 @@
@Test
public void withoutAFPoints_AFIsNotTriggered() {
- mFocusMeteringControl.startFocusAndMetering(FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_ONLY).build(), PREVIEW_ASPECT_RATIO_4_X_3);
+ mFocusMeteringControl.startFocusAndMetering(
+ FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AE).build(),
+ PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl, never()).triggerAf();
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.startFocusAndMetering(
- FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AWB_ONLY).build(),
+ FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AWB).build(),
+ PREVIEW_ASPECT_RATIO_4_X_3);
+ verify(mFocusMeteringControl, never()).triggerAf();
+ Mockito.reset(mFocusMeteringControl);
+
+ mFocusMeteringControl.startFocusAndMetering(
+ FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AE).build(),
PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl, never()).triggerAf();
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.startFocusAndMetering(
FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_ONLY).build(),
- PREVIEW_ASPECT_RATIO_4_X_3);
- verify(mFocusMeteringControl, never()).triggerAf();
- Mockito.reset(mFocusMeteringControl);
-
- mFocusMeteringControl.startFocusAndMetering(
- FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_AWB).build(),
+ MeteringMode.AE | MeteringMode.AWB).build(),
PREVIEW_ASPECT_RATIO_4_X_3);
verify(mFocusMeteringControl, never()).triggerAf();
Mockito.reset(mFocusMeteringControl);
@@ -555,7 +556,7 @@
FocusMeteringAction.OnAutoFocusListener.class);
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_AWB)
+ MeteringMode.AE | MeteringMode.AWB)
.setAutoFocusCallback(onAutoFocusListener)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
@@ -563,16 +564,14 @@
verify(onAutoFocusListener).onFocusCompleted(false);
Mockito.reset(onAutoFocusListener);
- action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_ONLY)
+ action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AE)
.setAutoFocusCallback(onAutoFocusListener)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
verify(onAutoFocusListener).onFocusCompleted(false);
Mockito.reset(onAutoFocusListener);
- action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AWB_ONLY)
+ action = FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AWB)
.setAutoFocusCallback(onAutoFocusListener)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
@@ -704,8 +703,8 @@
@Test
public void cancelFocusAndMetering_regionIsReset() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_AE_AWB)
- .addPoint(mPoint2, FocusMeteringAction.MeteringMode.AF_AE_AWB)
+ MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
@@ -731,8 +730,8 @@
@Test
public void cancelFocusAndMetering_updateSessionIsCalled() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_AE_AWB)
- .addPoint(mPoint2, FocusMeteringAction.MeteringMode.AF_AE_AWB)
+ MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
@@ -747,7 +746,7 @@
public void cancelFocusAndMetering_triggerCancelAfProperly() {
// If AF is enabled, cancel operation needs to call cancelAfAeTriggerInternal(true, false)
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AF_AE_AWB)
+ MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
@@ -755,21 +754,21 @@
mFocusMeteringControl.cancelFocusAndMetering();
verify(mFocusMeteringControl, times(1)).cancelAfAeTrigger(true, false);
- action = FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AF_AE)
+ action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AF | MeteringMode.AE)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.cancelFocusAndMetering();
verify(mFocusMeteringControl, times(1)).cancelAfAeTrigger(true, false);
- action = FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AF_AWB)
+ action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AF | MeteringMode.AWB)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.cancelFocusAndMetering();
verify(mFocusMeteringControl, times(1)).cancelAfAeTrigger(true, false);
- action = FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AF_ONLY)
+ action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AF)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
Mockito.reset(mFocusMeteringControl);
@@ -779,8 +778,7 @@
@Test
public void cancelFocusAndMetering_AFNotInvolved_cancelAfNotTriggered() {
- FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_ONLY)
+ FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AE)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
@@ -788,15 +786,14 @@
mFocusMeteringControl.cancelFocusAndMetering();
verify(mFocusMeteringControl, never()).cancelAfAeTrigger(true, false);
- action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AWB_ONLY)
+ action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AWB)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
Mockito.reset(mFocusMeteringControl);
mFocusMeteringControl.cancelFocusAndMetering();
verify(mFocusMeteringControl, never()).cancelAfAeTrigger(true, false);
- action = FocusMeteringAction.Builder.from(mPoint1, FocusMeteringAction.MeteringMode.AE_AWB)
+ action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AE | MeteringMode.AWB)
.build();
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
Mockito.reset(mFocusMeteringControl);
@@ -846,7 +843,7 @@
@Test
public void startFocusMetering_AfNotInvolved_isAfAutoModeIsSet() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- FocusMeteringAction.MeteringMode.AE_AWB).build();
+ MeteringMode.AE | MeteringMode.AWB).build();
verifyAfMode(CaptureResult.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
mFocusMeteringControl.startFocusAndMetering(action, PREVIEW_ASPECT_RATIO_4_X_3);
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/FocusMeteringAction.java b/camera/camera-core/src/main/java/androidx/camera/core/FocusMeteringAction.java
index 93b32e6..8997ea6 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/FocusMeteringAction.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/FocusMeteringAction.java
@@ -16,6 +16,7 @@
package androidx.camera.core;
+import androidx.annotation.IntDef;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -26,6 +27,8 @@
import com.google.common.util.concurrent.ListenableFuture;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -37,17 +40,17 @@
* A configuration used to trigger a focus and/or metering action.
*
* <p>To construct a {@link FocusMeteringAction}, apps have to create a {@link Builder} by
- * {@link Builder#from(MeteringPoint)} or {@link Builder#from(MeteringPoint, MeteringMode)}.
+ * {@link Builder#from(MeteringPoint)} or {@link Builder#from(MeteringPoint, int)}.
* {@link MeteringPoint} is a point used to specify the focus/metering areas. Apps can use various
* {@link MeteringPointFactory} to create the points. When the {@link FocusMeteringAction} is built,
* pass it to {@link CameraControl#startFocusAndMetering(FocusMeteringAction)} to initiate the focus
* and metering action.
*
- * <p>The default {@link MeteringMode} is {@link MeteringMode#AF_AE_AWB} which means the point is
- * used for all AF/AE/AWB regions. Apps can set the proper {@link MeteringMode} to optionally
- * exclude some 3A regions. Multiple regions for specific 3A type are also supported via
- * {@link Builder#addPoint(MeteringPoint)} or
- * {@link Builder#addPoint(MeteringPoint, MeteringMode)}. App can also this API to enable
+ * <p>The default {@link MeteringMode} is {@link MeteringMode#AF} | {@link MeteringMode#AE} |
+ * {@link MeteringMode#AWB} which means the point is used for all AF/AE/AWB regions. Apps can set
+ * the proper {@link MeteringMode} to optionally exclude some 3A regions. Multiple regions for
+ * specific 3A type are also supported via {@link Builder#addPoint(MeteringPoint)} or
+ * {@link Builder#addPoint(MeteringPoint, int)}. App can also this API to enable
* different region for AF and AE respectively.
*
* <p>If any AF points are specified, it will trigger AF to start a manual AF scan and cancel AF
@@ -63,7 +66,8 @@
* to disable auto-cancel.
*/
public final class FocusMeteringAction {
- static final MeteringMode DEFAULT_METERINGMODE = MeteringMode.AF_AE_AWB;
+ @MeteringMode
+ static final int DEFAULT_METERINGMODE = MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB;
static final long DEFAULT_AUTOCANCEL_DURATION = 5000;
private final List<MeteringPoint> mMeteringPointsAf;
private final List<MeteringPoint> mMeteringPointsAe;
@@ -171,20 +175,18 @@
* Focus/Metering mode used to specify which 3A regions is activated for corresponding
* {@link MeteringPoint}.
*/
- public enum MeteringMode {
- AF_AE_AWB,
- AF_AE,
- AE_AWB,
- AF_AWB,
- AF_ONLY,
- AE_ONLY,
- AWB_ONLY
+ @IntDef(flag = true, value = {MeteringMode.AF, MeteringMode.AE, MeteringMode.AWB})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface MeteringMode {
+ int AF = 1;
+ int AE = 1 << 1;
+ int AWB = 1 << 2;
}
/**
* The builder used to create the {@link FocusMeteringAction}. App must use
* {@link Builder#from(MeteringPoint)}
- * or {@link Builder#from(MeteringPoint, MeteringMode)} to create the {@link Builder}.
+ * or {@link Builder#from(MeteringPoint, int)} to create the {@link Builder}.
*/
public static class Builder {
@SuppressWarnings("WeakerAccess") /* synthetic accessor */
@@ -204,13 +206,13 @@
this(point, DEFAULT_METERINGMODE);
}
- private Builder(@NonNull MeteringPoint point, @NonNull MeteringMode mode) {
+ private Builder(@NonNull MeteringPoint point, @MeteringMode int mode) {
addPoint(point, mode);
}
/**
* Creates the Builder from a {@link MeteringPoint} with default
- * mode {@link MeteringMode#AF_AE_AWB}.
+ * mode {@link MeteringMode#AF} | {@link MeteringMode#AE} | {@link MeteringMode#AWB}.
*/
@NonNull
public static Builder from(@NonNull MeteringPoint meteringPoint) {
@@ -222,12 +224,13 @@
*/
@NonNull
public static Builder from(@NonNull MeteringPoint meteringPoint,
- @NonNull MeteringMode mode) {
+ @MeteringMode int mode) {
return new Builder(meteringPoint, mode);
}
/**
- * Adds another {@link MeteringPoint} with default mode {@link MeteringMode#AF_AE_AWB}.
+ * Adds another {@link MeteringPoint} with default mode {@link MeteringMode#AF} |
+ * {@link MeteringMode#AE} | {@link MeteringMode#AWB}.
*
* <p>If more points are added than what current device supports for AF/AE/AWB, only the
* first region and then in order up to the number of regions supported by the device
@@ -248,27 +251,23 @@
* will be enabled. If it turns out no added points can be supported on the device, the
* returned {@link ListenableFuture} in
* {@link CameraControl#startFocusAndMetering(FocusMeteringAction)} will fail immediately.
+ *
+ * @param mode Must be a valid {@link MeteringMode}, otherwise an
+ * {@link IllegalArgumentException} is thrown.
*/
@NonNull
- public Builder addPoint(@NonNull MeteringPoint point, @NonNull MeteringMode mode) {
- if (mode == MeteringMode.AF_AE_AWB
- || mode == MeteringMode.AF_AE
- || mode == MeteringMode.AF_AWB
- || mode == MeteringMode.AF_ONLY) {
+ public Builder addPoint(@NonNull MeteringPoint point, @MeteringMode int mode) {
+ Preconditions.checkArgument(
+ (mode >= MeteringMode.AF) && (mode <= (MeteringMode.AF | MeteringMode.AE
+ | MeteringMode.AWB)), "Invalid metering mode " + mode);
+
+ if ((mode & MeteringMode.AF) != 0) {
mMeteringPointsAf.add(point);
}
-
- if (mode == MeteringMode.AF_AE_AWB
- || mode == MeteringMode.AF_AE
- || mode == MeteringMode.AE_AWB
- || mode == MeteringMode.AE_ONLY) {
+ if ((mode & MeteringMode.AE) != 0) {
mMeteringPointsAe.add(point);
}
-
- if (mode == MeteringMode.AF_AE_AWB
- || mode == MeteringMode.AE_AWB
- || mode == MeteringMode.AF_AWB
- || mode == MeteringMode.AWB_ONLY) {
+ if ((mode & MeteringMode.AWB) != 0) {
mMeteringPointsAwb.add(point);
}
return this;
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/FocusMeteringActionTest.java b/camera/camera-core/src/test/java/androidx/camera/core/FocusMeteringActionTest.java
index ee12576..3be8cca 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/FocusMeteringActionTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/FocusMeteringActionTest.java
@@ -57,7 +57,7 @@
@Test
public void fromPointWithAFAEAWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_AE_AWB).build();
+ .from(mPoint1, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB).build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAwb()).containsExactly(mPoint1);
@@ -66,7 +66,7 @@
@Test
public void fromPointWithAFAE() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_AE).build();
+ .from(mPoint1, MeteringMode.AF | MeteringMode.AE).build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAwb()).isEmpty();
@@ -75,7 +75,7 @@
@Test
public void fromPointWithAFAWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_AWB).build();
+ .from(mPoint1, MeteringMode.AF | MeteringMode.AWB).build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAe()).isEmpty();
assertThat(action.getMeteringPointsAwb()).containsExactly(mPoint1);
@@ -84,7 +84,7 @@
@Test
public void fromPointWithAEAWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AE_AWB).build();
+ .from(mPoint1, MeteringMode.AE | MeteringMode.AWB).build();
assertThat(action.getMeteringPointsAf()).isEmpty();
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAwb()).containsExactly(mPoint1);
@@ -93,7 +93,7 @@
@Test
public void fromPointWithAF() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_ONLY).build();
+ .from(mPoint1, MeteringMode.AF).build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAe()).isEmpty();
assertThat(action.getMeteringPointsAwb()).isEmpty();
@@ -102,7 +102,7 @@
@Test
public void fromPointWithAE() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AE_ONLY).build();
+ .from(mPoint1, MeteringMode.AE).build();
assertThat(action.getMeteringPointsAf()).isEmpty();
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAwb()).isEmpty();
@@ -111,7 +111,7 @@
@Test
public void fromPointWithAWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AWB_ONLY).build();
+ .from(mPoint1, MeteringMode.AWB).build();
assertThat(action.getMeteringPointsAf()).isEmpty();
assertThat(action.getMeteringPointsAe()).isEmpty();
assertThat(action.getMeteringPointsAwb()).containsExactly(mPoint1);
@@ -131,9 +131,9 @@
@Test
public void multiplePointsWithSameAF_AE_AWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_AE_AWB)
- .addPoint(mPoint2, MeteringMode.AF_AE_AWB)
- .addPoint(mPoint3, MeteringMode.AF_AE_AWB)
+ .from(mPoint1, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1, mPoint2, mPoint3);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1, mPoint2, mPoint3);
@@ -143,9 +143,9 @@
@Test
public void multiplePointsWithSameAF_AE() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_AE)
- .addPoint(mPoint2, MeteringMode.AF_AE)
- .addPoint(mPoint3, MeteringMode.AF_AE)
+ .from(mPoint1, MeteringMode.AF | MeteringMode.AE)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AE)
+ .addPoint(mPoint3, MeteringMode.AF | MeteringMode.AE)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1, mPoint2, mPoint3);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1, mPoint2, mPoint3);
@@ -155,9 +155,9 @@
@Test
public void multiplePointsWithSameAE_AWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AE_AWB)
- .addPoint(mPoint2, MeteringMode.AE_AWB)
- .addPoint(mPoint3, MeteringMode.AE_AWB)
+ .from(mPoint1, MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AE | MeteringMode.AWB)
.build();
assertThat(action.getMeteringPointsAf()).isEmpty();
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1, mPoint2, mPoint3);
@@ -167,9 +167,9 @@
@Test
public void multiplePointsWithSameAF_AWB() {
FocusMeteringAction action = FocusMeteringAction.Builder
- .from(mPoint1, MeteringMode.AF_AWB)
- .addPoint(mPoint2, MeteringMode.AF_AWB)
- .addPoint(mPoint3, MeteringMode.AF_AWB)
+ .from(mPoint1, MeteringMode.AF | MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AF | MeteringMode.AWB)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1, mPoint2, mPoint3);
assertThat(action.getMeteringPointsAe()).isEmpty();
@@ -178,10 +178,9 @@
@Test
public void multiplePointsWithSameAWBOnly() {
- FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AWB_ONLY)
- .addPoint(mPoint2, MeteringMode.AWB_ONLY)
- .addPoint(mPoint3, MeteringMode.AWB_ONLY)
+ FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1, MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AWB)
.build();
assertThat(action.getMeteringPointsAf()).isEmpty();
assertThat(action.getMeteringPointsAe()).isEmpty();
@@ -191,9 +190,9 @@
@Test
public void multiplePointsWithSameAEOnly() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AE_ONLY)
- .addPoint(mPoint2, MeteringMode.AE_ONLY)
- .addPoint(mPoint3, MeteringMode.AE_ONLY)
+ MeteringMode.AE)
+ .addPoint(mPoint2, MeteringMode.AE)
+ .addPoint(mPoint3, MeteringMode.AE)
.build();
assertThat(action.getMeteringPointsAf()).isEmpty();
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1, mPoint2, mPoint3);
@@ -203,9 +202,9 @@
@Test
public void multiplePointsWithSameAFOnly() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AF_ONLY)
- .addPoint(mPoint2, MeteringMode.AF_ONLY)
- .addPoint(mPoint3, MeteringMode.AF_ONLY)
+ MeteringMode.AF)
+ .addPoint(mPoint2, MeteringMode.AF)
+ .addPoint(mPoint3, MeteringMode.AF)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1, mPoint2, mPoint3);
assertThat(action.getMeteringPointsAe()).isEmpty();
@@ -215,9 +214,9 @@
@Test
public void multiplePointsWithAFOnly_AEOnly_AWBOnly() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AF_ONLY)
- .addPoint(mPoint2, MeteringMode.AE_ONLY)
- .addPoint(mPoint3, MeteringMode.AWB_ONLY)
+ MeteringMode.AF)
+ .addPoint(mPoint2, MeteringMode.AE)
+ .addPoint(mPoint3, MeteringMode.AWB)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint2);
@@ -227,9 +226,9 @@
@Test
public void multiplePointsWithAFAE_AEAWB_AFAWB() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AF_AE)
- .addPoint(mPoint2, MeteringMode.AE_AWB)
- .addPoint(mPoint3, MeteringMode.AF_AWB)
+ MeteringMode.AF | MeteringMode.AE)
+ .addPoint(mPoint2, MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AF | MeteringMode.AWB)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1, mPoint3);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint2, mPoint1);
@@ -239,9 +238,9 @@
@Test
public void multiplePointsWithAFAEAWB_AEAWB_AFOnly() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AF_AE_AWB)
- .addPoint(mPoint2, MeteringMode.AE_AWB)
- .addPoint(mPoint3, MeteringMode.AF_ONLY)
+ MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint2, MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AF)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint1, mPoint3);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1, mPoint2);
@@ -251,9 +250,9 @@
@Test
public void multiplePointsWithAEOnly_AFAWAEB_AEOnly() {
FocusMeteringAction action = FocusMeteringAction.Builder.from(mPoint1,
- MeteringMode.AE_ONLY)
- .addPoint(mPoint2, MeteringMode.AF_AE_AWB)
- .addPoint(mPoint3, MeteringMode.AE_ONLY)
+ MeteringMode.AE)
+ .addPoint(mPoint2, MeteringMode.AF | MeteringMode.AE | MeteringMode.AWB)
+ .addPoint(mPoint3, MeteringMode.AE)
.build();
assertThat(action.getMeteringPointsAf()).containsExactly(mPoint2);
assertThat(action.getMeteringPointsAe()).containsExactly(mPoint1, mPoint2, mPoint3);
diff --git a/camera/camera-view/src/main/java/androidx/camera/view/CameraView.java b/camera/camera-view/src/main/java/androidx/camera/view/CameraView.java
index 8a9671d..e116f88 100644
--- a/camera/camera-view/src/main/java/androidx/camera/view/CameraView.java
+++ b/camera/camera-view/src/main/java/androidx/camera/view/CameraView.java
@@ -795,8 +795,8 @@
Camera camera = mCameraModule.getCamera();
if (camera != null) {
camera.getCameraControl().startFocusAndMetering(
- FocusMeteringAction.Builder.from(afPoint, MeteringMode.AF_ONLY)
- .addPoint(aePoint, MeteringMode.AE_ONLY)
+ FocusMeteringAction.Builder.from(afPoint, MeteringMode.AF)
+ .addPoint(aePoint, MeteringMode.AE)
.build());
} else {
Log.d(TAG, "cannot access camera");