DeteMin
2020-03-31 77c62e023d2dc31200fc696158df84b3aee90ee7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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<FacePosition> needSignUpPersonList = new ArrayList<>();
    public static List<Integer> needSignUpPersonIndexList = new ArrayList<>();
    public static List<FacePosition> doorAccessDeniedList = new ArrayList<>();
    public static List<FacePosition> doorAccessAllowedList = new ArrayList<>();
    public static List<FacePosition> doorAccessConfirmList = new ArrayList<>();
    public static List<FacePosition> timeNotReachPersonList = new ArrayList<>();
    public static List<FacePosition> adminList = new ArrayList<>();
    public static List<FacePosition> 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();
        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();
        }
//        System.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);
//                System.out.println("是否为同一人 sort =" + score);
                // 修改分值 原分值 30
                if (score >= 30) {
                    samePerson = true;
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return samePerson;
    }
 
}