Merge "Unhide some camera2 data class constructors to tests."

This commit is contained in:
Austin Borger
2022-06-15 16:54:45 +00:00
committed by Android (Google) Code Review
5 changed files with 85 additions and 43 deletions

View File

@@ -18147,12 +18147,14 @@ package android.hardware.camera2 {
package android.hardware.camera2.params {
public final class BlackLevelPattern {
ctor public BlackLevelPattern(@NonNull int[]);
method public void copyTo(int[], int);
method public int getOffsetForIndex(int, int);
field public static final int COUNT = 4; // 0x4
}
public final class Capability {
ctor public Capability(int, int, int, float, float);
method @NonNull public android.util.Size getMaxStreamingSize();
method public int getMode();
method @NonNull public android.util.Range<java.lang.Float> getZoomRatioRange();
@@ -18167,6 +18169,7 @@ package android.hardware.camera2.params {
}
public final class DeviceStateSensorOrientationMap {
ctor public DeviceStateSensorOrientationMap(@NonNull long[]);
method public int getSensorOrientation(long);
field public static final long FOLDED = 4L; // 0x4L
field public static final long NORMAL = 0L; // 0x0L
@@ -18201,6 +18204,8 @@ package android.hardware.camera2.params {
}
public final class Face {
ctor public Face(@NonNull android.graphics.Rect, int, int, @NonNull android.graphics.Point, @NonNull android.graphics.Point, @NonNull android.graphics.Point);
ctor public Face(@NonNull android.graphics.Rect, int);
method public android.graphics.Rect getBounds();
method public int getId();
method public android.graphics.Point getLeftEyePosition();

View File

@@ -16,6 +16,7 @@
package android.hardware.camera2.params;
import android.annotation.NonNull;
import android.annotation.Nullable;
import java.util.Arrays;
@@ -43,13 +44,16 @@ public final class BlackLevelPattern {
* a 2x2 pattern corresponding to the color filter arrangement. Offsets are
* given in row-column scan order.</p>
*
* <p>This constructor is public to allow for easier application testing by
* creating custom object instances. It's not necessary to construct these
* objects during normal use of the camera API.</p>
*
* @param offsets an array containing a 2x2 pattern of offsets.
*
* @throws IllegalArgumentException if the given array has an incorrect length.
* @throws NullPointerException if the given array is null.
* @hide
*/
public BlackLevelPattern(int[] offsets) {
public BlackLevelPattern(@NonNull int[] offsets) {
if (offsets == null) {
throw new NullPointerException("Null offsets array passed to constructor");
}

View File

@@ -48,6 +48,14 @@ public final class Capability {
/**
* Create a new Capability object.
*
* <p>The mode argument can be any integer value. maxStreamingWidth and maxStreamingHeight
* must be non-negative, while minZoomRatio and maxZoomRatio must be strictly
* positive.</p>
*
* <p>This constructor is public to allow for easier application testing by
* creating custom object instances. It's not necessary to construct these
* objects during normal use of the camera API.</p>
*
* @param mode supported mode for a camera capability.
* @param maxStreamingWidth The width of the maximum streaming size for this mode
* @param maxStreamingHeight The height of the maximum streaming size for this mode
@@ -55,7 +63,6 @@ public final class Capability {
* @param maxZoomRatio the maximum zoom ratio this mode supports
*
* @throws IllegalArgumentException if any of the argument is not valid
* @hide
*/
public Capability(int mode, int maxStreamingWidth, int maxStreamingHeight,
float minZoomRatio, float maxZoomRatio) {

View File

@@ -17,6 +17,7 @@
package android.hardware.camera2.params;
import android.annotation.LongDef;
import android.annotation.NonNull;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.utils.HashCodeHelpers;
@@ -72,8 +73,19 @@ public final class DeviceStateSensorOrientationMap {
/**
* Create a new immutable DeviceStateOrientationMap instance.
*
* <p>The array is a list of pairs of elements (angle, deviceState):</p>
*
* <code>[angle0, state0, angle1, state1,..., angleN, stateN]</code>
*
* <p>Each pair describes the camera sensor orientation when the device is in the
* matching deviceState. The angle is in degrees, and must be a multiple of 90.</p>
*
* <p>This constructor takes over the array; do not write to the array afterwards.</p>
*
* <p>This constructor is public to allow for easier application testing by
* creating custom object instances. It's not necessary to construct these
* objects during normal use of the camera API.</p>
*
* @param elements
* An array of elements describing the map
*
@@ -82,10 +94,8 @@ public final class DeviceStateSensorOrientationMap {
* invalid element values
* @throws NullPointerException
* if {@code elements} is {@code null}
*
* @hide
*/
public DeviceStateSensorOrientationMap(final long[] elements) {
public DeviceStateSensorOrientationMap(@NonNull final long[] elements) {
mElements = Objects.requireNonNull(elements, "elements must not be null");
if ((elements.length % 2) != 0) {
throw new IllegalArgumentException("Device state sensor orientation map length " +

View File

@@ -17,6 +17,8 @@
package android.hardware.camera2.params;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.camera2.CameraCharacteristics;
@@ -49,12 +51,12 @@ public final class Face {
*/
public static final int SCORE_MAX = 100;
private final Rect mBounds;
private final int mScore;
private final int mId;
private final Point mLeftEye;
private final Point mRightEye;
private final Point mMouth;
private Rect mBounds;
private int mScore;
private int mId;
private Point mLeftEye;
private Point mRightEye;
private Point mMouth;
/**
* Create a new face with all fields set.
@@ -67,6 +69,10 @@ public final class Face {
* mouthPositions are guaranteed to be {@code null}. Otherwise, each of leftEyePosition,
* rightEyePosition, and mouthPosition may be independently null or not-null.</p>
*
* <p>This constructor is public to allow for easier application testing by
* creating custom object instances. It's not necessary to construct these
* objects during normal use of the camera API.</p>
*
* @param bounds Bounds of the face.
* @param score Confidence level between {@value #SCORE_MIN}-{@value #SCORE_MAX}.
* @param id A unique ID per face visible to the tracker.
@@ -81,11 +87,48 @@ public final class Face {
* or if id is {@value #ID_UNSUPPORTED} and
* leftEyePosition/rightEyePosition/mouthPosition aren't all null,
* or else if id is negative.
*
* @hide
*/
public Face(Rect bounds, int score, int id,
Point leftEyePosition, Point rightEyePosition, Point mouthPosition) {
public Face(@NonNull Rect bounds, int score, int id,
@NonNull Point leftEyePosition, @NonNull Point rightEyePosition,
@NonNull Point mouthPosition) {
init(bounds, score, id, leftEyePosition, rightEyePosition, mouthPosition);
}
/**
* Create a new face without the optional fields.
*
* <p>The id, leftEyePosition, rightEyePosition, and mouthPosition are considered optional.
* If the id is {@value #ID_UNSUPPORTED} then the leftEyePosition, rightEyePosition, and
* mouthPositions are guaranteed to be {@code null}. Otherwise, each of leftEyePosition,
* rightEyePosition, and mouthPosition may be independently null or not-null. When devices
* report the value of key {@link CaptureResult#STATISTICS_FACE_DETECT_MODE} as
* {@link CameraMetadata#STATISTICS_FACE_DETECT_MODE_SIMPLE} in {@link CaptureResult},
* the face id of each face is expected to be {@value #ID_UNSUPPORTED}, the leftEyePosition,
* rightEyePosition, and mouthPositions are expected to be {@code null} for each face.</p>
*
* <p>This constructor is public to allow for easier application testing by
* creating custom object instances. It's not necessary to construct these
* objects during normal use of the camera API.</p>
*
* @param bounds Bounds of the face.
* @param score Confidence level between {@value #SCORE_MIN}-{@value #SCORE_MAX}.
*
* @throws IllegalArgumentException
* if bounds is {@code null},
* or if the confidence is not in the range of
* {@value #SCORE_MIN}-{@value #SCORE_MAX}.
*/
public Face(@NonNull Rect bounds, int score) {
init(bounds, score, ID_UNSUPPORTED,
/*leftEyePosition*/null, /*rightEyePosition*/null, /*mouthPosition*/null);
}
/**
* Initialize the object (shared by constructors).
*/
private void init(@NonNull Rect bounds, int score, int id,
@Nullable Point leftEyePosition, @Nullable Point rightEyePosition,
@Nullable Point mouthPosition) {
checkNotNull("bounds", bounds);
if (score < SCORE_MIN || score > SCORE_MAX) {
throw new IllegalArgumentException("Confidence out of range");
@@ -106,33 +149,6 @@ public final class Face {
mMouth = mouthPosition;
}
/**
* Create a new face without the optional fields.
*
* <p>The id, leftEyePosition, rightEyePosition, and mouthPosition are considered optional.
* If the id is {@value #ID_UNSUPPORTED} then the leftEyePosition, rightEyePosition, and
* mouthPositions are guaranteed to be {@code null}. Otherwise, each of leftEyePosition,
* rightEyePosition, and mouthPosition may be independently null or not-null. When devices
* report the value of key {@link CaptureResult#STATISTICS_FACE_DETECT_MODE} as
* {@link CameraMetadata#STATISTICS_FACE_DETECT_MODE_SIMPLE} in {@link CaptureResult},
* the face id of each face is expected to be {@value #ID_UNSUPPORTED}, the leftEyePosition,
* rightEyePosition, and mouthPositions are expected to be {@code null} for each face.</p>
*
* @param bounds Bounds of the face.
* @param score Confidence level between {@value #SCORE_MIN}-{@value #SCORE_MAX}.
*
* @throws IllegalArgumentException
* if bounds is {@code null},
* or if the confidence is not in the range of
* {@value #SCORE_MIN}-{@value #SCORE_MAX}.
*
* @hide
*/
public Face(Rect bounds, int score) {
this(bounds, score, ID_UNSUPPORTED,
/*leftEyePosition*/null, /*rightEyePosition*/null, /*mouthPosition*/null);
}
/**
* Bounds of the face.
*