package com.basic.security.fragment;
|
|
import android.content.pm.PackageManager;
|
import android.graphics.Outline;
|
import android.support.annotation.NonNull;
|
import android.support.v4.content.ContextCompat;
|
import android.view.View;
|
import android.view.ViewOutlineProvider;
|
|
import com.basic.security.R;
|
import com.basic.security.fragment.helper.CfCompareFeature;
|
import com.basic.security.manager.RecognizeManager;
|
import com.basic.security.utils.Constants;
|
import com.basic.security.utils.DetectListener;
|
import com.basic.security.utils.DetectedResult;
|
import com.basic.security.utils.FaceId;
|
import com.basic.security.widget.H264Player;
|
|
import org.androidannotations.annotations.AfterViews;
|
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.UiThread;
|
import org.androidannotations.annotations.ViewById;
|
|
@EFragment(R.layout.fragment_camera)
|
public class CameraFragment extends CfCompareFeature {
|
|
private static final int CAMERA_OK = 1024;
|
@ViewById
|
public View overlay;
|
@ViewById
|
H264Player h264Player;
|
private boolean initCamera = false;
|
|
@Override
|
public void show() {
|
rgb_camera.setVisibility(View.VISIBLE);
|
}
|
|
@Override
|
public void hide() {
|
rgb_camera.setVisibility(View.INVISIBLE);
|
}
|
|
@UiThread
|
public void showOverlay() {
|
overlay.setVisibility(View.VISIBLE);
|
}
|
|
@UiThread
|
public void hideOverlay() {
|
if (overlay != null) {
|
overlay.setVisibility(View.INVISIBLE);
|
}
|
}
|
|
@AfterViews
|
public void afterViews() {
|
if (!Constants.simulate_camera) {
|
h264Player.setVisibility(View.GONE);
|
}
|
if (ContextCompat.checkSelfPermission(mainActivity(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
|
requestPermissions(new String[]{android.Manifest.permission.CAMERA}, CAMERA_OK);
|
} else {
|
openCamera();
|
}
|
// compareFeature();
|
}
|
|
@Override
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
switch (requestCode) {
|
case CAMERA_OK:
|
openCamera();
|
resetCamera();
|
break;
|
default:
|
break;
|
}
|
}
|
|
public void resetCamera() {
|
if (Constants.isHuaWeiPad) {
|
gray_camera.reset();
|
} else {
|
rgb_camera.reset();
|
}
|
}
|
|
private void openCamera() {
|
|
rgb_camera.setOutlineProvider(new ViewOutlineProvider() {
|
@Override
|
public void getOutline(View view, Outline outline) {
|
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), getActivity().getResources().getDimension(R.dimen.corner_radius));
|
}
|
});
|
rgb_camera.setClipToOutline(true);
|
if (getActivity() == null) {
|
return;
|
}
|
|
FaceId.initSdk(getActivity(), rgb_camera, gray_camera, new DetectListener() {
|
@Override
|
public void faceDetected(DetectedResult detectedResult) {
|
// System.out.println("CameraFragment.faceDetected detectedResult.facePositions.size()="+detectedResult.facePositions.size());
|
if (detectedResult.facePositions.size() > 0) {
|
if (mainActivity().currentFragment == mainActivity().fragment_su_auto_wait_face
|
|| mainActivity().currentFragment == mainActivity().fragment_admin_face_login
|
|| mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_face
|
|| mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_face) {
|
mainActivity().refreshCurrentFragmentShowTime();
|
}
|
lastTimeDetectedFaceInCamera = System.currentTimeMillis();
|
addDetectedResult(detectedResult);
|
}
|
}
|
});
|
RecognizeManager.processRecognizeResult();
|
clearAllFaceRectWhenTimeout();
|
}
|
|
}
|