a
554325746@qq.com
2019-12-25 603cb36a5123e46656b06a5deb8d7ac7ff81307f
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
122
123
124
125
126
127
128
129
130
131
132
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> needSignUpPersonListS = new ArrayList<>();
    public static List<Integer> needSignUpPersonIndexListS = new ArrayList<>();
    public static List<FacePosition> doorAccessDeniedListS = new ArrayList<>();
    public static List<FacePosition> doorAccessAllowedListS = new ArrayList<>();
    public static List<FacePosition> doorAccessConfirmListS = new ArrayList<>();
    public static List<FacePosition> timeNotReachPersonListS = 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();
        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;
    }
}