There is not enough info about camera2 face recognition mechanism. I used Camera2 sample from Google: android-Camera2Basic
I set face recognition mode to FULL.
mPreviewRequestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE,
CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL);
Also I checked
STATISTICS_INFO_MAX_FACE_COUNT
and STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES
:
int max_count = characteristics.get(
CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT);
int modes [] = characteristics.get(
CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
Output: maxCount : 5 , modes : [0, 2]
My CaptureCallback:
private CameraCaptureSession.CaptureCallback mCaptureCallback
= new CameraCaptureSession.CaptureCallback() {
private void process(CaptureResult result) {
Integer mode = result.get(CaptureResult.STATISTICS_FACE_DETECT_MODE);
Face [] faces = result.get(CaptureResult.STATISTICS_FACES);
if(faces != null && mode != null)
Log.e("tag", "faces : " + faces.length + " , mode : " + mode );
}
@Override
public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request,
CaptureResult partialResult) {
process(partialResult);
}
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
TotalCaptureResult result) {
process(result);
}
Output: faces : 0 , mode : 2
public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2;
Faces length is constantly 0. Looks like it doesn't recognise a face properly or I missed something.
I know approach with FaceDetector. I just wanted to check how it works with new camera2 Face.
I think your phone is not working good with the Google Face detection. Are you sure that it use HAL3 and can use API2?.
For example, in my code I'm using face detection without any problem like this:
Here is the checkFaces method:
my custom Face class:
finally with this method you can draw the faces correctly(you can use the default android one, but rectangles doesn't work so good in 4:3 or 16:9 sizes or when you rotate the phone:
What I'm doing is drawing the faces based in the screen ratio and size. Feel free to ask if you need something else about camera2API.
https://github.com/rajktariya/Android-Camera2-Front-with-Face-Detection
found this working sample for both front camera with face detection
My attempts were on android 5.0(API 21). After update to 5.1(API 22) it started working without code changes.
I found that only in case STATE_PREVIEW, you can process the result to show faces lenth. Change from
to
Please try this to see if it works.