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 trackerIdValidIdentityMap = new ConcurrentHashMap<>(); public static List 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(); } }