diff options
Diffstat (limited to 'core/java/android/hardware/camera2/impl/CameraMetadataNative.java')
-rw-r--r-- | core/java/android/hardware/camera2/impl/CameraMetadataNative.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java index e42bdf5..072c5bb 100644 --- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java +++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java @@ -518,21 +518,31 @@ public class CameraMetadataNative extends CameraMetadata implements Parcelable { } } - Face[] faces = new Face[numFaces]; + ArrayList<Face> faceList = new ArrayList<Face>(); if (faceDetectMode == CaptureResult.STATISTICS_FACE_DETECT_MODE_SIMPLE) { for (int i = 0; i < numFaces; i++) { - faces[i] = new Face(faceRectangles[i], faceScores[i]); + if (faceScores[i] <= Face.SCORE_MAX && + faceScores[i] >= Face.SCORE_MIN) { + faceList.add(new Face(faceRectangles[i], faceScores[i])); + } } } else { // CaptureResult.STATISTICS_FACE_DETECT_MODE_FULL for (int i = 0; i < numFaces; i++) { - Point leftEye = new Point(faceLandmarks[i*6], faceLandmarks[i*6+1]); - Point rightEye = new Point(faceLandmarks[i*6+2], faceLandmarks[i*6+3]); - Point mouth = new Point(faceLandmarks[i*6+4], faceLandmarks[i*6+5]); - faces[i] = new Face(faceRectangles[i], faceScores[i], faceIds[i], - leftEye, rightEye, mouth); + if (faceScores[i] <= Face.SCORE_MAX && + faceScores[i] >= Face.SCORE_MIN && + faceIds[i] >= 0) { + Point leftEye = new Point(faceLandmarks[i*6], faceLandmarks[i*6+1]); + Point rightEye = new Point(faceLandmarks[i*6+2], faceLandmarks[i*6+3]); + Point mouth = new Point(faceLandmarks[i*6+4], faceLandmarks[i*6+5]); + Face face = new Face(faceRectangles[i], faceScores[i], faceIds[i], + leftEye, rightEye, mouth); + faceList.add(face); + } } } + Face[] faces = new Face[faceList.size()]; + faceList.toArray(faces); return faces; } |