package com.basic.security.manager;
|
|
import android.os.SystemClock;
|
|
import com.basic.security.activity.MainActivity;
|
import com.basic.security.base.BaseApplication;
|
import com.basic.security.manager.helper.rm.fragment.CurrentAccountSetting;
|
import com.basic.security.manager.helper.rm.fragment.CurrentAdminFaceLogin;
|
import com.basic.security.manager.helper.rm.base.CurrentBase;
|
import com.basic.security.manager.helper.rm.fragment.CurrentDoorAccessResult;
|
import com.basic.security.manager.helper.rm.fragment.CurrentHome;
|
import com.basic.security.manager.helper.rm.fragment.CurrentPersonManger;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSignUpSuccess;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuAutoNicWaitDetail;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuAutoWaitIdCard;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuLoggedIcCompareSuccess;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuLoggedIcWaitFace;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuLoggedIcWaitIdCard;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuLoggedNicWaitDetail;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuLoggedNicWaitFace;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuLoggedWaitFace;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuAutoWaitAdmin;
|
import com.basic.security.manager.helper.rm.fragment.CurrentSuAutoWaitFace;
|
import com.basic.security.manager.helper.rm.fragment.CurrentVerifyIDCardSuccess;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.ReentrantLock;
|
|
public class RecognizeManager {
|
public static final Lock recongizeLock = new ReentrantLock();
|
public static Map<Long, Map> trackerIdValidIdentityMap = new ConcurrentHashMap<>();
|
|
public static List<CurrentBase> currentList = new ArrayList<>();
|
|
public static void restartWaitFace() {
|
if (recongizeLock.tryLock()) {
|
try {
|
CurrentBase.detectedResult = null;
|
DetectResultManager.detectedResult = null;
|
CompareFeatureResultManager.clear();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
recongizeLock.unlock();
|
}
|
}
|
|
}
|
|
private static void makeChains() {
|
currentList.add(new CurrentSuAutoWaitFace());
|
currentList.add(new CurrentHome());
|
currentList.add(new CurrentAdminFaceLogin());
|
currentList.add(new CurrentSuLoggedNicWaitFace());
|
currentList.add(new CurrentSuLoggedIcWaitFace());
|
currentList.add(new CurrentAccountSetting());
|
currentList.add(new CurrentSuAutoWaitAdmin());
|
currentList.add(new CurrentSuAutoWaitIdCard());
|
currentList.add(new CurrentSuLoggedIcWaitIdCard());
|
currentList.add(new CurrentSuAutoNicWaitDetail());
|
currentList.add(new CurrentSignUpSuccess());
|
currentList.add(new CurrentPersonManger());
|
currentList.add(new CurrentSuLoggedWaitFace());
|
currentList.add(new CurrentSuLoggedNicWaitDetail());
|
currentList.add(new CurrentSuLoggedIcCompareSuccess());
|
currentList.add(new CurrentVerifyIDCardSuccess());
|
currentList.add(new CurrentDoorAccessResult());
|
}
|
|
public static void processRecognizeResult() {
|
new Thread(){
|
public void run() {
|
while(true) {
|
SystemClock.sleep(200);
|
CurrentBase.activity = (MainActivity) BaseApplication.getApplication().activity;
|
if (CurrentBase.activity != null && CurrentBase.activity.mainActivityInitComplete) {
|
makeChains();
|
break;
|
}
|
}
|
IdCardManager.startReadIdCard();
|
while(true) {
|
try {
|
recongizeLock.lock();
|
if (MainActivity.faceDbInitComplete && CurrentBase.activity.shouldDetectFace()) {
|
CurrentBase.startNewDetectResult();
|
for (CurrentBase currentBase : currentList) {
|
if (currentBase.showFragment()) {
|
break;
|
}
|
}
|
}
|
CurrentBase.activity.needTimeoutToBlank();
|
CurrentBase.showFragmentSuccess = false;
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
recongizeLock.unlock();
|
}
|
try {
|
if (CurrentBase.shouldSleepRecognizeThread) {
|
SystemClock.sleep(100);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}.start();
|
}
|
|
}
|