package com.basic.security.manager.helper.rm.base; import com.basic.security.base.BaseFragment; import com.basic.security.manager.DetectResultManager; import com.basic.security.model.ModelAdapter; import com.basic.security.utils.DetectedResult; import com.basic.security.utils.FaceId; import com.basic.security.utils.FacePosition; import com.basic.security.utils.ThreadUtil; import java.util.ArrayList; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class CurrentBaseDetectResult extends CurrentVisitRecord { public static DetectedResult detectedResult; public static long detectedResultTime; public static boolean showFragmentSuccess = false; public static boolean shouldSleepRecognizeThread; public static List needSignUpPersonList = new ArrayList<>(); public static List needSignUpPersonIndexList = new ArrayList<>(); public static List doorAccessDeniedList = new ArrayList<>(); public static List doorAccessAllowedList = new ArrayList<>(); public static List doorAccessConfirmList = new ArrayList<>(); public static List timeNotReachPersonList = new ArrayList<>(); public static List needSignUpPersonListS = new ArrayList<>(); public static List needSignUpPersonIndexListS = new ArrayList<>(); public static List doorAccessDeniedListS = new ArrayList<>(); public static List doorAccessAllowedListS = new ArrayList<>(); public static List doorAccessConfirmListS = new ArrayList<>(); public static List timeNotReachPersonListS = new ArrayList<>(); public static List adminList = new ArrayList<>(); public static List adjustTipsList = new ArrayList<>(); public ModelAdapter validPersonIdentity = null; public ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 2, 1, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100)); public static void startNewDetectResult() { CurrentBase.detectedResult = DetectResultManager.detectedResult; CurrentBase.detectedResultTime = DetectResultManager.lastTimeSetDetectResult; ThreadUtil.printThreadInfo("processRecognizeResult"); CurrentBase.shouldSleepRecognizeThread = true; needSignUpPersonList.clear(); needSignUpPersonIndexList.clear(); doorAccessDeniedList.clear(); doorAccessAllowedList.clear(); timeNotReachPersonList.clear(); doorAccessConfirmList.clear(); needSignUpPersonListS.clear(); needSignUpPersonIndexListS.clear(); doorAccessDeniedListS.clear(); doorAccessAllowedListS.clear(); timeNotReachPersonListS.clear(); doorAccessConfirmListS.clear(); adminList.clear(); adjustTipsList.clear(); } public void faceDetected() { } public boolean processRulesButTimeNotReach() { return false; } public boolean processRules() { return false; } public boolean processOnePerson() { return showFragmentSuccess; } protected boolean processMultiplePerson() { return showFragmentSuccess; } ; public void clearAdjustTips() { } public void printFacePositionList() { String result = "doShowFragment(),"; if (needSignUpPersonList.size() > 0) { result += "needSignUpPersonList().size()=" + needSignUpPersonList.size(); } if (needSignUpPersonIndexList.size() > 0) { result += ",needSignUpPersonIndexList.size()=" + needSignUpPersonIndexList.size(); } if (doorAccessDeniedList.size() > 0) { result += ",doorAccessDeniedList.size()=" + doorAccessDeniedList.size(); } if (doorAccessAllowedList.size() > 0) { result += ",doorAccessAllowedList.size()=" + doorAccessAllowedList.size(); } if (doorAccessConfirmList.size() > 0) { result += ",doorAccessConfirmList.size()=" + doorAccessConfirmList.size(); } if (timeNotReachPersonList.size() > 0) { result += ",timeNotReachPersonList.size()=" + timeNotReachPersonList.size(); } if (adminList.size() > 0) { result += ",adminList.size()=" + adminList.size(); } if (adjustTipsList.size() > 0) { result += ",adjustTipsList.size()=" + adjustTipsList.size(); } // System1.out.println(result); } public boolean signingUpPersonInTheCamera() { boolean samePerson = false; try { byte[] featureData1 = BaseFragment.getFaceFeature(); for (FacePosition facePosition : CurrentBase.detectedResult.facePositions) { byte[] featureData2 = facePosition.featureData; double score = FaceId.instance.compareFeature(featureData1, featureData2); // System1.out.println("是否为同一人 sort =" + score); // 修改分值 原分值 30 if (score >= 30) { samePerson = true; break; } } } catch (Exception e) { e.printStackTrace(); } return samePerson; } }