Камера Приемник распознавания лиц не работает при увеличении камеры - PullRequest
0 голосов
/ 16 мая 2018

Я добавил слушателя FaceDetection в мою камеру после запуска предварительного просмотра. Поэтому, когда лицо обнаруживает, я получаю обратный вызов и, на основании которого, я вычисляю соотношение площади лица и экрана предварительного просмотра. При некотором значении, если процент ниже, я увеличиваю камеру.

Но проблема в том, что после увеличения функция распознавания лиц не работает, не получая обратный вызов для FaceDetectionListener.

public class FaceDetectionListener implements Camera.FaceDetectionListener {

@Override
public void onFaceDetection( final Camera.Face[] faces, Camera camera ) {
    Log.i(TAG, "onFaceDetection " + faces.length);
    if ( faces.length > 0 ) {

        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                Rect uRect = null;
                //Do something after 100ms
                for ( int i = 0; i < faces.length; i++ ) {
                    int left = faces[i].rect.left;
                    int right = faces[i].rect.right;
                    int top = faces[i].rect.top;
                    int bottom = faces[i].rect.bottom;
                    uRect = new Rect(left, top, right, bottom);

                    Log.d("FaceDetection", "face detected: " + faces.length +
                            " Face 1 Location Left: " + left +
                            " Right: " + right + " Top: " + top + " Bottom: " + bottom + " Area: " + (uRect.height() * uRect.width()));

                }

                FaceDetect faceDetect = new FaceDetect();
                faceDetect.setArea(uRect.height() * uRect.width());

                EventBus.getDefault().post(faceDetect);
            }
        }, 500);

    }
}

}

Коды масштабирования -

 private synchronized void zoomCamera( int zoomValue ) {
    Log.i(TAG, "Camera Zoomed : " + zoomValue);
    if ( mCamera.getParameters().isZoomSupported() ) {
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setRecordingHint(true);
        parameters.setZoom(zoomValue);
        mCamera.setParameters(parameters);

        Log.i(TAG, "Camera ZOOMED : ");

    }

}
...