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(); } }