From ba92b976c7fb9f8bbe4a1bf9d06fa8468d26be58 Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期一, 15 十二月 2025 18:01:13 +0800
Subject: [PATCH] 指纹钥匙柜人脸报错

---
 keyCabinet-android/datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java | 1631 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 815 insertions(+), 816 deletions(-)

diff --git a/keyCabinet-android/datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java b/keyCabinet-android/datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java
index cd1a90f..21befa4 100644
--- a/keyCabinet-android/datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java
+++ b/keyCabinet-android/datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java
@@ -55,6 +55,7 @@
     private int mLastFaceId;
 
     private float threholdScore;
+    private String groupId;
 
     public static volatile int initStatus = SDK_UNACTIVATION;
     public static volatile boolean initModelSuccess = false;
@@ -87,6 +88,14 @@
         faceAuth.setCoreConfigure(BDFaceSDKCommon.BDFaceCoreRunMode.BDFACE_LITE_POWER_NO_BIND, 2);
     }
 
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
     public void setActiveLog(boolean isLog) {
         if (faceAuth != null) {
             if (isLog) {
@@ -96,7 +105,11 @@
             }
         }
     }
-
+    public void destroy(){
+        /*if(rgbInstance!=null){
+            rgbInstance = null;
+        }*/
+    }
     public void setCheckMouthMask(boolean checkMouthMask) {
         this.checkMouthMask = checkMouthMask;
     }
@@ -118,7 +131,7 @@
     }
 
     public void initModel(
-        final Context context, BDFaceSDKConfig config, boolean isLog, final SdkInitListener listener) {
+            final Context context, BDFaceSDKConfig config, boolean isLog, final SdkInitListener listener) {
         setActiveLog(isLog);
         initModel(context, config, listener);
     }
@@ -144,12 +157,6 @@
         startInitModelTime = System.currentTimeMillis();
     }
 
-    public void destroy(){
-        if(rgbInstance!=null){
-            rgbInstance = null;
-        }
-    }
-
     public FaceCrop getFaceCrop() {
         return faceModel.getFaceCrop();
     }
@@ -168,7 +175,7 @@
 
     public void initDataBases(Context context) {
         if (FaceApi.getInstance().getmUserNum() != 0) {
-            //ToastUtils.toast(context, "浜鸿劯搴撳姞杞戒腑");
+            ToastUtils.toast(context, "浜鸿劯搴撳姞杞戒腑");
         }
         emptyFrame();
         // 鍒濆鍖栨暟鎹簱
@@ -187,23 +194,23 @@
         }
 
         future3 =
-            es3.submit(
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        faceModel.getFaceSearch().featureClear();
-                        synchronized (faceModel.getFaceSearch()) {
-                            List<User> users = FaceApi.getInstance().getAllUserList();
-                            for (int i = 0; i < users.size(); i++) {
-                                User user = users.get(i);
-                                faceModel.getFaceSearch().pushPersonById(user.getId(), user.getFeature());
+                es3.submit(
+                        new Runnable() {
+                            @Override
+                            public void run() {
+                                faceModel.getFaceSearch().featureClear();
+                                synchronized (faceModel.getFaceSearch()) {
+                                    List<User> users = FaceApi.getInstance().getAllUserList();
+                                    for (int i = 0; i < users.size(); i++) {
+                                        User user = users.get(i);
+                                        faceModel.getFaceSearch().pushPersonById(user.getId(), user.getFeature());
+                                    }
+                                    if (FaceApi.getInstance().getmUserNum() != 0) {
+                                        ToastUtils.toast(context, "浜鸿劯搴撳姞杞芥垚鍔�");
+                                    }
+                                }
                             }
-                            if (FaceApi.getInstance().getmUserNum() != 0) {
-                                //ToastUtils.toast(context, "浜鸿劯搴撳姞杞芥垚鍔�");
-                            }
-                        }
-                    }
-                });
+                        });
     }
 
     private void setFail(LivenessModel livenessModel) {
@@ -235,12 +242,12 @@
 
         // 蹇�熸娴嬭幏鍙栦汉鑴镐俊鎭紝浠呯敤浜庣粯鍒朵汉鑴告锛岃缁嗕汉鑴告暟鎹悗缁幏鍙�
         FaceInfo[] faceInfos =
-            faceModel
-                .getFaceTrack()
-                .track(
-                    BDFaceSDKCommon.DetectType.DETECT_VIS,
-                    BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_RGB_FAST,
-                    rgbInstance);
+                faceModel
+                        .getFaceTrack()
+                        .track(
+                                BDFaceSDKCommon.DetectType.DETECT_VIS,
+                                BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_RGB_FAST,
+                                rgbInstance);
         return faceInfos;
     }
 
@@ -254,18 +261,18 @@
 
     private BDFaceImageInstance getBdImage(BDFaceImageConfig bdFaceImageConfig, boolean darkEnhance) {
         BDFaceImageInstance rgbInstance =
-            new BDFaceImageInstance(
-                bdFaceImageConfig.data,
-                bdFaceImageConfig.srcHeight,
-                bdFaceImageConfig.srcWidth,
-                bdFaceImageConfig.bdFaceImageType,
-                bdFaceImageConfig.direction,
-                bdFaceImageConfig.mirror);
+                new BDFaceImageInstance(
+                        bdFaceImageConfig.data,
+                        bdFaceImageConfig.srcHeight,
+                        bdFaceImageConfig.srcWidth,
+                        bdFaceImageConfig.bdFaceImageType,
+                        bdFaceImageConfig.direction,
+                        bdFaceImageConfig.mirror);
         BDFaceImageInstance rgbInstanceOne;
         // 鍒ゆ柇鏆楀厜鎭㈠
         if (darkEnhance) {
             rgbInstanceOne = faceModel.getDark().faceDarkEnhance(rgbInstance);
-
+            rgbInstance.destory();
         } else {
             rgbInstanceOne = rgbInstance;
         }
@@ -303,22 +310,10 @@
         }
         AtomicInteger isOutoBoundary = new AtomicInteger();
         BDFaceImageInstance cropInstance =
-            faceModel.getFaceCrop().cropFaceByLandmark(imageInstance, landmarks, 2.0f, false, isOutoBoundary);
+                faceModel.getFaceCrop().cropFaceByLandmark(imageInstance, landmarks, 2.0f, false, isOutoBoundary);
         return cropInstance;
     }
 
-    private static BDFaceImageInstance rgbInstance =null;
-    private LivenessModel livenessModel;
-
-    /**
-     * 0:绠$悊鍛橈紝1锛氱敤鎴�
-     * @param groupId
-     */
-    public void setGroupId(String groupId){
-        if(livenessModel!=null){
-            livenessModel.setGroupId(groupId);
-        }
-    }
     /**
      * 妫�娴�-娲讳綋-鐗瑰緛-浜鸿劯妫�绱㈡祦绋�
      *
@@ -329,101 +324,98 @@
      * @param faceDetectCallBack
      */
     public void onDetectCheck(
-        final BDFaceImageConfig bdFaceImageConfig,
-        final BDFaceImageConfig bdNirFaceImageConfig,
-        final BDFaceImageConfig bdDepthFaceImageConfig,
-        final BDFaceCheckConfig bdFaceCheckConfig,
-        final FaceDetectCallBack faceDetectCallBack) {
+            final BDFaceImageConfig bdFaceImageConfig,
+            final BDFaceImageConfig bdNirFaceImageConfig,
+            final BDFaceImageConfig bdDepthFaceImageConfig,
+            final BDFaceCheckConfig bdFaceCheckConfig,
+            final FaceDetectCallBack faceDetectCallBack) {
         if (!FaceSDKManager.initModelSuccess) {
             return;
         }
         long startTime = System.currentTimeMillis();
         // 鍒涘缓妫�娴嬬粨鏋滃瓨鍌ㄦ暟鎹�
-        livenessModel = new LivenessModel();
+        LivenessModel livenessModel = new LivenessModel();
         // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁YUV锛岃浆涓虹畻娉曟娴嬬殑鍥剧墖BGR
         // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝鎵嬫満鍜屽紑鍙戠増闇�瑕佸姩鎬侀�傞厤
-        //System.out.println("==rgbInstance==>鍒濆鍖�");
-        if(rgbInstance!=null){
-            rgbInstance.destory();
-        }
-        rgbInstance = getBdImage(bdFaceImageConfig, bdFaceCheckConfig.darkEnhance);
+        BDFaceImageInstance rgbInstance = getBdImage(bdFaceImageConfig, bdFaceCheckConfig.darkEnhance);
         livenessModel.setTestBDFaceImageInstanceDuration(System.currentTimeMillis() - startTime);
         onTrack(
-            rgbInstance,
-            livenessModel,
-            new DetectListener() {
-                @Override
-                public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
-                    // 澶氬抚鍒ゆ柇
-                    if (!frameSelect(faceInfos[0])) {
-                        livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
-                        if (faceDetectCallBack != null && faceAdoptModel != null) {
-                            //System.out.println("==isOk==>澶氬抚鍒ゆ柇");
-                            faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
-                            faceDetectCallBack.onFaceDetectCallback(faceAdoptModel);
-                        }
+                rgbInstance,
+                livenessModel,
+                new DetectListener() {
+                    @Override
+                    public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
+                        // 澶氬抚鍒ゆ柇
+                        if (!frameSelect(faceInfos[0])) {
+                            livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
+                            if (faceDetectCallBack != null && faceAdoptModel != null) {
+                                faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
+                                faceDetectCallBack.onFaceDetectCallback(faceAdoptModel);
+                            }
+                            rgbInstance.destory();
 
-                        return;
-                    }
-                    // 淇濆瓨浜鸿劯鐗瑰緛鐐�
-                    livenessModel.setLandmarks(faceInfos[0].landmarks);
-                    // 淇濆瓨浜鸿劯鍥剧墖
-                    livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
-                    // 鍙g僵妫�娴嬫暟鎹�
-                    if (checkMouthMask) {
-                        FaceMouthMask mouthMask = getFaceMouthMask();
-                        if (mouthMask != null) {
-                            float[] maskScores = mouthMask.checkMask(rgbInstance, faceInfos);
-                            if (maskScores != null && maskScores.length > 0) {
-                                float maskResult = maskScores[0];
-                                Log.d("mouth_mask", "mask_score:" + maskResult);
-                                if (livenessModel != null) {
-                                    livenessModel.setMouthMaskArray(maskScores);
+                            return;
+                        }
+                        // 淇濆瓨浜鸿劯鐗瑰緛鐐�
+                        livenessModel.setLandmarks(faceInfos[0].landmarks);
+                        // 淇濆瓨浜鸿劯鍥剧墖
+                        livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
+                        // 鍙g僵妫�娴嬫暟鎹�
+                        if (checkMouthMask) {
+                            FaceMouthMask mouthMask = getFaceMouthMask();
+                            if (mouthMask != null) {
+                                float[] maskScores = mouthMask.checkMask(rgbInstance, faceInfos);
+                                if (maskScores != null && maskScores.length > 0) {
+                                    float maskResult = maskScores[0];
+                                    Log.d("mouth_mask", "mask_score:" + maskResult);
+                                    if (livenessModel != null) {
+                                        livenessModel.setMouthMaskArray(maskScores);
+                                    }
                                 }
                             }
                         }
+
+                        // 璋冪敤缁樺埗浜鸿劯妗嗘帴鍙�
+                        if (faceDetectCallBack != null) {
+                            faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
+                        }
+
+                        // 閫佹璇嗗埆
+                        onLivenessCheck(
+                                rgbInstance,
+                                bdNirFaceImageConfig,
+                                bdDepthFaceImageConfig,
+                                bdFaceCheckConfig,
+                                livenessModel,
+                                startTime,
+                                faceDetectCallBack,
+                                faceInfos);
                     }
 
-                    // 璋冪敤缁樺埗浜鸿劯妗嗘帴鍙�
-                    if (faceDetectCallBack != null) {
-                        faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
-                    }
+                    @Override
+                    public void onDetectFail() {
 
-                    // 閫佹璇嗗埆
-                    onLivenessCheck(
-                        rgbInstance,
-                        bdNirFaceImageConfig,
-                        bdDepthFaceImageConfig,
-                        bdFaceCheckConfig,
-                        livenessModel,
-                        startTime,
-                        faceDetectCallBack,
-                        faceInfos);
-                }
+                        emptyFrame();
+                        // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
+                        if (faceDetectCallBack != null) {
+                            faceDetectCallBack.onFaceDetectCallback(null);
+                            livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
 
-                @Override
-                public void onDetectFail() {
-
-                    emptyFrame();
-                    // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
-                    if (faceDetectCallBack != null) {
-                        faceDetectCallBack.onFaceDetectCallback(null);
-                        livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
-                        //System.out.println("==isOk==>娴佺▼缁撴潫");
 //                        SaveImageManager.getInstance().saveImage(livenessModel, bdFaceCheckConfig.bdLiveConfig);
-                        faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
-                        faceDetectCallBack.onTip(0, "鏈娴嬪埌浜鸿劯");
+                            faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
+                            faceDetectCallBack.onTip(0, "鏈娴嬪埌浜鸿劯");
+                        }
+                        rgbInstance.destory();
                     }
-                }
-            });
+                });
     }
 
     private float silentLive(
-        BDFaceImageInstance rgbInstance,
-        BDFaceSDKCommon.LiveType type,
-        float[] landmarks,
-        List<Boolean> list,
-        float liveScore) {
+            BDFaceImageInstance rgbInstance,
+            BDFaceSDKCommon.LiveType type,
+            float[] landmarks,
+            List<Boolean> list,
+            float liveScore) {
         float score = 0;
         if (landmarks != null) {
             synchronized (faceModel.getFaceLive()) {
@@ -466,11 +458,11 @@
      * @return
      */
     private float[] silentLives(
-        BDFaceImageInstance rgbInstance,
-        BDFaceSDKCommon.LiveType type,
-        FaceInfo[] faceInfos,
-        List<Boolean> list,
-        float liveScore) {
+            BDFaceImageInstance rgbInstance,
+            BDFaceSDKCommon.LiveType type,
+            FaceInfo[] faceInfos,
+            List<Boolean> list,
+            float liveScore) {
         float[] scores = {0, 0, 0}; // 鏈�澶氭娴�3涓汉鑴�
         if (faceInfos != null) {
             synchronized (faceModel.getFaceLive()) {
@@ -479,7 +471,7 @@
 
                 for (int i = 0; i < size; i++) {
                     scores[i] =
-                        faceModel.getFaceLive().silentLive(type, rgbInstance, faceInfos[i].landmarks, liveScore);
+                            faceModel.getFaceLive().silentLive(type, rgbInstance, faceInfos[i].landmarks, liveScore);
                 }
             }
         }
@@ -487,11 +479,11 @@
     }
 
     private void onDetect(
-        BDFaceCheckConfig bdFaceCheckConfig,
-        BDFaceImageInstance rgbInstance,
-        FaceInfo[] fastFaceInfos,
-        LivenessModel livenessModel,
-        DetectListener detectListener) {
+            BDFaceCheckConfig bdFaceCheckConfig,
+            BDFaceImageInstance rgbInstance,
+            FaceInfo[] fastFaceInfos,
+            LivenessModel livenessModel,
+            DetectListener detectListener) {
 
         long accurateTime = System.currentTimeMillis();
         FaceInfo[] faceInfos;
@@ -499,14 +491,14 @@
         if (bdFaceCheckConfig != null) {
             bdFaceCheckConfig.bdFaceDetectListConfig.usingQuality = true;
             faceInfos =
-                faceModel
-                    .getFaceDetect()
-                    .detect(
-                        BDFaceSDKCommon.DetectType.DETECT_VIS,
-                        BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_RGB_ACCURATE,
-                        rgbInstance,
-                        fastFaceInfos,
-                        bdFaceCheckConfig.bdFaceDetectListConfig);
+                    faceModel
+                            .getFaceDetect()
+                            .detect(
+                                    BDFaceSDKCommon.DetectType.DETECT_VIS,
+                                    BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_RGB_ACCURATE,
+                                    rgbInstance,
+                                    fastFaceInfos,
+                                    bdFaceCheckConfig.bdFaceDetectListConfig);
 
         } else {
             faceInfos = faceModel.getFaceDetect().detect(BDFaceSDKCommon.DetectType.DETECT_VIS, rgbInstance);
@@ -515,7 +507,7 @@
         livenessModel.setAccurateTime(System.currentTimeMillis() - accurateTime);
 
         if (faceInfos == null || faceInfos.length <= 0) {
-
+            rgbInstance.destory();
             detectListener.onDetectFail();
             return;
         }
@@ -544,100 +536,101 @@
      * @param faceDetectCallBack
      */
     public void onLivenessCheck(
-        final BDFaceImageInstance rgbInstance,
-        final BDFaceImageConfig nirBDFaceImageConfig,
-        final BDFaceImageConfig depthBDFaceImageConfig,
-        final BDFaceCheckConfig bdFaceCheckConfig,
-        final LivenessModel livenessModel,
-        final long startTime,
-        final FaceDetectCallBack faceDetectCallBack,
-        final FaceInfo[] fastFaceInfos) {
+            final BDFaceImageInstance rgbInstance,
+            final BDFaceImageConfig nirBDFaceImageConfig,
+            final BDFaceImageConfig depthBDFaceImageConfig,
+            final BDFaceCheckConfig bdFaceCheckConfig,
+            final LivenessModel livenessModel,
+            final long startTime,
+            final FaceDetectCallBack faceDetectCallBack,
+            final FaceInfo[] fastFaceInfos) {
+
         if (future2 != null && !future2.isDone()) {
             // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
-            //future2.cancel(true);
-
-            //System.out.println("==isOk==>涔嬪墠娌$粨鏉�");
+            rgbInstance.destory();
             return;
         }
 
         future2 =
-            es2.submit(
-                new Runnable() {
+                es2.submit(
+                        new Runnable() {
 
-                    @Override
-                    public void run() {
+                            @Override
+                            public void run() {
 
-                        // 鑾峰彇BDFaceCheckConfig閰嶇疆淇℃伅
-                        if (bdFaceCheckConfig == null) {
+                                // 鑾峰彇BDFaceCheckConfig閰嶇疆淇℃伅
+                                if (bdFaceCheckConfig == null) {
+                                    rgbInstance.destory();
 
-                            return;
-                        }
-                        onDetect(
-                            bdFaceCheckConfig,
-                            rgbInstance,
-                            fastFaceInfos,
-                            livenessModel,
-                            new DetectListener() {
+                                    return;
+                                }
+                                onDetect(
+                                        bdFaceCheckConfig,
+                                        rgbInstance,
+                                        fastFaceInfos,
+                                        livenessModel,
+                                        new DetectListener() {
 
-                                @Override
-                                public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
+                                            @Override
+                                            public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
 
-                                    // 浜鸿劯id璧嬪��
-                                    if (mLastFaceId != fastFaceInfos[0].faceID) {
-                                        mLastFaceId = fastFaceInfos[0].faceID;
-                                        mRgbLiveList.clear();
-                                        mNirLiveList.clear();
-                                    }
+                                                // 浜鸿劯id璧嬪��
+                                                if (mLastFaceId != fastFaceInfos[0].faceID) {
+                                                    mLastFaceId = fastFaceInfos[0].faceID;
+                                                    mRgbLiveList.clear();
+                                                    mNirLiveList.clear();
+                                                }
 
-                                    if (bdFaceCheckConfig == null) {
+                                                if (bdFaceCheckConfig == null) {
+                                                    rgbInstance.destory();
+                                                    livenessModel.clearIdentifyResults();
+                                                    if (faceDetectCallBack != null) {
+                                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
+                                                    }
+                                                    return;
+                                                }
 
-                                        livenessModel.clearIdentifyResults();
-                                        if (faceDetectCallBack != null) {
-                                            faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                        }
-                                        return;
-                                    }
+                                                // 鏈�浼樹汉鑴告帶鍒�
+                                                if (!onBestImageCheck(livenessModel, bdFaceCheckConfig, faceDetectCallBack)) {
+                                                    livenessModel.setQualityCheck(true);
+                                                    livenessModel.clearIdentifyResults();
+                                                    rgbInstance.destory();
+                                                    if (faceDetectCallBack != null) {
+                                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
+                                                    }
+                                                    return;
+                                                }
 
-                                    // 鏈�浼樹汉鑴告帶鍒�
-                                    if (!onBestImageCheck(livenessModel, bdFaceCheckConfig, faceDetectCallBack)) {
-                                        livenessModel.setQualityCheck(true);
-                                        livenessModel.clearIdentifyResults();
+                                                // 璐ㄩ噺妫�娴嬫湭閫氳繃,閿�姣丅DFaceImageInstance锛岀粨鏉熷嚱鏁�
 
-                                        if (faceDetectCallBack != null) {
-                                            faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                        }
-                                        return;
-                                    }
+                                                if (!onQualityCheck(
+                                                        faceInfos, bdFaceCheckConfig.bdQualityConfig, faceDetectCallBack)) {
+                                                    livenessModel.setQualityCheck(true);
+                                                    livenessModel.clearIdentifyResults();
+                                                    rgbInstance.destory();
+                                                    if (faceDetectCallBack != null) {
+                                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
+                                                    }
 
-                                    // 璐ㄩ噺妫�娴嬫湭閫氳繃,閿�姣丅DFaceImageInstance锛岀粨鏉熷嚱鏁�
+                                                    return;
+                                                }
 
-                                    if (!onQualityCheck(
-                                            faceInfos, bdFaceCheckConfig.bdQualityConfig, faceDetectCallBack)) {
-                                        livenessModel.setQualityCheck(true);
-                                        livenessModel.clearIdentifyResults();
+                                                livenessModel.setQualityCheck(false);
+                                                // 鑾峰彇LivenessConfig liveCheckMode 閰嶇疆閫夐」锛氥�愪笉浣跨敤娲讳綋锛�0銆戯紱銆怰GB娲讳綋锛�1銆戯紱銆怰GB+NIR娲讳綋锛�2銆戯紱銆怰GB+Depth娲讳綋锛�3銆戯紱銆怰GB+NIR+Depth娲讳綋锛�4銆�
+                                                // TODO 娲讳綋妫�娴�
+                                                float[] rgbScores = {-1};
+                                                BDLiveConfig bdLiveConfig = bdFaceCheckConfig.bdLiveConfig;
+                                                boolean isLiveCheck = bdFaceCheckConfig.bdLiveConfig != null;
 
-                                        if (faceDetectCallBack != null) {
-                                            faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                        }
-                                        return;
-                                    }
-
-                                    livenessModel.setQualityCheck(false);
-                                    // 鑾峰彇LivenessConfig liveCheckMode 閰嶇疆閫夐」锛氥�愪笉浣跨敤娲讳綋锛�0銆戯紱銆怰GB娲讳綋锛�1銆戯紱銆怰GB+NIR娲讳綋锛�2銆戯紱銆怰GB+Depth娲讳綋锛�3銆戯紱銆怰GB+NIR+Depth娲讳綋锛�4銆�
-                                    // TODO 娲讳綋妫�娴�
-                                    float[] rgbScores = {-1};
-                                    BDLiveConfig bdLiveConfig = bdFaceCheckConfig.bdLiveConfig;
-                                    boolean isLiveCheck = bdFaceCheckConfig.bdLiveConfig != null;
-
-                                    if (isLiveCheck) {
-                                        long startRgbTime = System.currentTimeMillis();
-                                        rgbScores =
-                                            silentLives(
-                                                rgbInstance,
-                                                BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_RGB,
-                                                faceInfos,
-                                                mRgbLiveList,
-                                                bdLiveConfig.rgbLiveScore);
+                                                if (isLiveCheck) {
+                                                    long startRgbTime = System.currentTimeMillis();
+                                                    rgbScores =
+                                                            silentLives(
+                                                                    rgbInstance,
+                                                                    BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_RGB,
+                                                                    faceInfos,
+                                                                    mRgbLiveList,
+                                                                    bdLiveConfig.rgbLiveScore);
                                         /* if (rgbScores != null){
                                             int size = rgbScores.length;
                                             Log.d("Attend", "score size:" + size);
@@ -646,222 +639,223 @@
                                             }
                                         } */
 
-                                        if (faceInfos.length == 1) {
-                                            livenessModel.setRgbLivenessScore(rgbScores[0]);
-                                        }
-                                        livenessModel.setRgbLivenessScores(rgbScores);
-                                        livenessModel.setRgbLivenessDuration(System.currentTimeMillis() - startRgbTime);
-                                    }
+                                                    if (faceInfos.length == 1) {
+                                                        livenessModel.setRgbLivenessScore(rgbScores[0]);
+                                                    }
+                                                    livenessModel.setRgbLivenessScores(rgbScores);
+                                                    livenessModel.setRgbLivenessDuration(System.currentTimeMillis() - startRgbTime);
+                                                }
 
-                                    // TODO nir娲讳綋妫�娴�
-                                    float nirScore = -1;
-                                    FaceInfo[] faceInfosIr = null;
-                                    BDFaceImageInstance nirInstance = null;
-                                    boolean isHaveNirImage = nirBDFaceImageConfig != null && isLiveCheck;
-                                    if (isHaveNirImage) {
-                                        // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁YUV-IR锛岃浆涓虹畻娉曟娴嬬殑鍥剧墖BGR
-                                        // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝鎵嬫満鍜屽紑鍙戠増闇�瑕佸姩鎬侀�傞厤
-                                        long nirInstanceTime = System.currentTimeMillis();
-                                        nirInstance = getBdImage(nirBDFaceImageConfig, false);
+                                                // TODO nir娲讳綋妫�娴�
+                                                float nirScore = -1;
+                                                FaceInfo[] faceInfosIr = null;
+                                                BDFaceImageInstance nirInstance = null;
+                                                boolean isHaveNirImage = nirBDFaceImageConfig != null && isLiveCheck;
+                                                if (isHaveNirImage) {
+                                                    // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁YUV-IR锛岃浆涓虹畻娉曟娴嬬殑鍥剧墖BGR
+                                                    // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝鎵嬫満鍜屽紑鍙戠増闇�瑕佸姩鎬侀�傞厤
+                                                    long nirInstanceTime = System.currentTimeMillis();
+                                                    nirInstance = getBdImage(nirBDFaceImageConfig, false);
 
-                                        livenessModel.setBdNirFaceImageInstance(nirInstance.getImage());
-                                        livenessModel.setNirInstanceTime(System.currentTimeMillis() - nirInstanceTime);
+                                                    livenessModel.setBdNirFaceImageInstance(nirInstance.getImage());
+                                                    livenessModel.setNirInstanceTime(System.currentTimeMillis() - nirInstanceTime);
 
-                                        // 閬垮厤RGB妫�娴嬪叧閿偣鍦↖R瀵归綈娲讳綋绋冲畾锛屽鍔犵孩澶栨娴�
-                                        long startIrDetectTime = System.currentTimeMillis();
-                                        BDFaceDetectListConf bdFaceDetectListConf = new BDFaceDetectListConf();
-                                        bdFaceDetectListConf.usingDetect = true;
-                                        faceInfosIr =
-                                            faceModel
-                                                .getFaceNirDetect()
-                                                .detect(
-                                                    BDFaceSDKCommon.DetectType.DETECT_NIR,
-                                                    BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_NIR_ACCURATE,
-                                                    nirInstance,
-                                                    null,
-                                                    bdFaceDetectListConf);
-                                        livenessModel.setIrLivenessDuration(
-                                            System.currentTimeMillis() - startIrDetectTime);
-                                        //                    LogUtils.e(TIME_TAG, "detect ir time = " + livenessModel.getIrLivenessDuration());
-                                        if (faceInfosIr != null && faceInfosIr.length > 0) {
-                                            FaceInfo faceInfoIr = faceInfosIr[0];
-                                            nirScore =
-                                                silentLive(
-                                                    nirInstance,
-                                                    BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_NIR,
-                                                    faceInfoIr.landmarks,
-                                                    mNirLiveList,
-                                                    bdLiveConfig.nirLiveScore);
-                                            livenessModel.setIrLivenessScore(nirScore);
-                                            //                        LogUtils.e(TIME_TAG, "live ir time = " + livenessModel.getIrLivenessDuration());
-                                        }
-                                    }
+                                                    // 閬垮厤RGB妫�娴嬪叧閿偣鍦↖R瀵归綈娲讳綋绋冲畾锛屽鍔犵孩澶栨娴�
+                                                    long startIrDetectTime = System.currentTimeMillis();
+                                                    BDFaceDetectListConf bdFaceDetectListConf = new BDFaceDetectListConf();
+                                                    bdFaceDetectListConf.usingDetect = true;
+                                                    faceInfosIr =
+                                                            faceModel
+                                                                    .getFaceNirDetect()
+                                                                    .detect(
+                                                                            BDFaceSDKCommon.DetectType.DETECT_NIR,
+                                                                            BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_NIR_ACCURATE,
+                                                                            nirInstance,
+                                                                            null,
+                                                                            bdFaceDetectListConf);
+                                                    livenessModel.setIrLivenessDuration(
+                                                            System.currentTimeMillis() - startIrDetectTime);
+                                                    //                    LogUtils.e(TIME_TAG, "detect ir time = " + livenessModel.getIrLivenessDuration());
+                                                    if (faceInfosIr != null && faceInfosIr.length > 0) {
+                                                        FaceInfo faceInfoIr = faceInfosIr[0];
+                                                        nirScore =
+                                                                silentLive(
+                                                                        nirInstance,
+                                                                        BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_NIR,
+                                                                        faceInfoIr.landmarks,
+                                                                        mNirLiveList,
+                                                                        bdLiveConfig.nirLiveScore);
+                                                        livenessModel.setIrLivenessScore(nirScore);
+                                                        //                        LogUtils.e(TIME_TAG, "live ir time = " + livenessModel.getIrLivenessDuration());
+                                                    }
+                                                }
 
-                                    // TODO depth娲讳綋妫�娴�
-                                    float depthScore = -1;
-                                    boolean isHaveDepthImage = depthBDFaceImageConfig != null && isLiveCheck;
-                                    if (depthBDFaceImageConfig != null) {
-                                        // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝閫傞厤Atlas 闀滃ご锛岀洰鍓嶅鍜岄珮400*640锛屽叾浠栨憚鍍忓ご闇�瑕佸姩鎬佽皟鏁�,浜鸿劯72 涓叧閿偣x 鍧愭爣鍚戝乏绉诲姩80涓儚绱犵偣
-                                        float[] depthLandmark = new float[faceInfos[0].landmarks.length];
-                                        BDFaceImageInstance depthInstance;
-                                        if (bdFaceCheckConfig.cameraType == 1) {
-                                            System.arraycopy(
-                                                faceInfos[0].landmarks,
-                                                0,
-                                                depthLandmark,
-                                                0,
-                                                faceInfos[0].landmarks.length);
-                                            for (int i = 0; i < 144; i = i + 2) {
-                                                depthLandmark[i] -= 80;
-                                            }
-                                        } else {
-                                            depthLandmark = faceInfos[0].landmarks;
-                                        }
-                                        depthInstance = getBdImage(depthBDFaceImageConfig, false);
-                                        livenessModel.setBdDepthFaceImageInstance(depthInstance.getImage());
-                                        // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁Depth
-                                        long startDepthTime = System.currentTimeMillis();
-                                        depthScore =
-                                            faceModel
-                                                .getFaceLive()
-                                                .silentLive(
-                                                    BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_DEPTH,
-                                                    depthInstance,
-                                                    depthLandmark);
-                                        livenessModel.setDepthLivenessScore(depthScore);
-                                        livenessModel.setDepthtLivenessDuration(
-                                            System.currentTimeMillis() - startDepthTime);
-                                        //                    LogUtils.e(TIME_TAG, "live depth time = " + livenessModel.getDepthtLivenessDuration());
-                                        depthInstance.destory();
-                                    }
+                                                // TODO depth娲讳綋妫�娴�
+                                                float depthScore = -1;
+                                                boolean isHaveDepthImage = depthBDFaceImageConfig != null && isLiveCheck;
+                                                if (depthBDFaceImageConfig != null) {
+                                                    // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝閫傞厤Atlas 闀滃ご锛岀洰鍓嶅鍜岄珮400*640锛屽叾浠栨憚鍍忓ご闇�瑕佸姩鎬佽皟鏁�,浜鸿劯72 涓叧閿偣x 鍧愭爣鍚戝乏绉诲姩80涓儚绱犵偣
+                                                    float[] depthLandmark = new float[faceInfos[0].landmarks.length];
+                                                    BDFaceImageInstance depthInstance;
+                                                    if (bdFaceCheckConfig.cameraType == 1) {
+                                                        System.arraycopy(
+                                                                faceInfos[0].landmarks,
+                                                                0,
+                                                                depthLandmark,
+                                                                0,
+                                                                faceInfos[0].landmarks.length);
+                                                        for (int i = 0; i < 144; i = i + 2) {
+                                                            depthLandmark[i] -= 80;
+                                                        }
+                                                    } else {
+                                                        depthLandmark = faceInfos[0].landmarks;
+                                                    }
+                                                    depthInstance = getBdImage(depthBDFaceImageConfig, false);
+                                                    livenessModel.setBdDepthFaceImageInstance(depthInstance.getImage());
+                                                    // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁Depth
+                                                    long startDepthTime = System.currentTimeMillis();
+                                                    depthScore =
+                                                            faceModel
+                                                                    .getFaceLive()
+                                                                    .silentLive(
+                                                                            BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_DEPTH,
+                                                                            depthInstance,
+                                                                            depthLandmark);
+                                                    livenessModel.setDepthLivenessScore(depthScore);
+                                                    livenessModel.setDepthtLivenessDuration(
+                                                            System.currentTimeMillis() - startDepthTime);
+                                                    //                    LogUtils.e(TIME_TAG, "live depth time = " + livenessModel.getDepthtLivenessDuration());
+                                                    depthInstance.destory();
+                                                }
 
-                                    boolean isRgbScoreCheck = false;
-                                    boolean isNirScoreCheck = false;
-                                    boolean isDepthScoreCheck = false;
-                                    if (isLiveCheck) {
-                                        int size = rgbScores.length;
-                                        for (int i = 0; i < size; i++) {
-                                            if (rgbScores[i] > bdLiveConfig.rgbLiveScore) {
-                                                isRgbScoreCheck = true;
-                                            }
-                                        }
-                                        // isRgbScoreCheck = true; // liujinhui for test
-                                        //   isRgbScoreCheck = (rgbScores[0] > bdLiveConfig.rgbLiveScore);
-                                        isNirScoreCheck =
-                                            (isHaveNirImage ? nirScore > bdLiveConfig.nirLiveScore : true);
-                                        isDepthScoreCheck =
-                                            (isHaveDepthImage ? depthScore > bdLiveConfig.depthLiveScore : true);
-                                    }
+                                                boolean isRgbScoreCheck = false;
+                                                boolean isNirScoreCheck = false;
+                                                boolean isDepthScoreCheck = false;
+                                                if (isLiveCheck) {
+                                                    int size = rgbScores.length;
+                                                    for (int i = 0; i < size; i++) {
+                                                        if (rgbScores[i] > bdLiveConfig.rgbLiveScore) {
+                                                            isRgbScoreCheck = true;
+                                                        }
+                                                    }
+                                                    // isRgbScoreCheck = true; // liujinhui for test
+                                                    //   isRgbScoreCheck = (rgbScores[0] > bdLiveConfig.rgbLiveScore);
+                                                    isNirScoreCheck =
+                                                            (isHaveNirImage ? nirScore > bdLiveConfig.nirLiveScore : true);
+                                                    isDepthScoreCheck =
+                                                            (isHaveDepthImage ? depthScore > bdLiveConfig.depthLiveScore : true);
+                                                }
 
-                                    // 濡傛灉璁剧疆涓轰笉杩涜娲讳綋妫�娴�
-                                    int liveCheckMode = livenessModel.getLiveType();
-                                    if (liveCheckMode == 0){
-                                        isRgbScoreCheck = true;
-                                    }
-                                    // TODO 鐗瑰緛鎻愬彇+浜鸿劯妫�绱�
-                                    if (!isLiveCheck || (isRgbScoreCheck && isNirScoreCheck && isDepthScoreCheck)) {
-                                        if (livenessModel != null) {
-                                            livenessModel.clearIdentifyResults();
-                                            livenessModel.setUser(null);
-                                        }
-
-                                        synchronized (faceModel.getFaceSearch()) {
-                                            if (faceInfos != null) {
-                                                int size = faceInfos.length;
-
-                                                for (int i = 0; i < size; i++) {
-                                                    // 鐗瑰緛鎻愬彇
-                                                    // 妯$硦缁撴灉杩囨护,鎴村彛缃╂椂鍊欙紝涓嶈繘琛岃繃婊�
-                                                    if (!checkMouthMask) {
-                                                        float blur = faceInfos[i].bluriness;
-                                                        BDFaceOcclusion occlusion = faceInfos[i].occlusion;
-                                                        float leftEye = occlusion.leftEye;
-                                                        // "宸︾溂閬尅"
-                                                        float rightEye = occlusion.rightEye;
-                                                        // "鍙崇溂閬尅"
-                                                        float nose = occlusion.nose;
-                                                        // "榧诲瓙閬尅缃俊搴�"
-                                                        float mouth = occlusion.mouth;
-                                                        // "鍢村反閬尅缃俊搴�"
-                                                        float leftCheek = occlusion.leftCheek;
-                                                        // "宸﹁劯閬尅"
-                                                        float rightCheek = occlusion.rightCheek;
-                                                        // "鍙宠劯閬尅"
-                                                        float chin = occlusion.chin;
-                                                        // 鍔ㄦ�佸簳搴撻檺鍒�
-                                                        faceModel
-                                                                .getFaceSearch()
-                                                                .setNeedJoinDB(
-                                                                        selectQuality(
-                                                                                blur,
-                                                                                leftEye,
-                                                                                rightEye,
-                                                                                nose,
-                                                                                mouth,
-                                                                                leftCheek,
-                                                                                rightCheek,
-                                                                                chin));
+                                                // 濡傛灉璁剧疆涓轰笉杩涜娲讳綋妫�娴�
+                                                int liveCheckMode = livenessModel.getLiveType();
+                                                if (liveCheckMode == 0){
+                                                    isRgbScoreCheck = true;
+                                                }
+                                                // TODO 鐗瑰緛鎻愬彇+浜鸿劯妫�绱�
+                                                if (!isLiveCheck || (isRgbScoreCheck && isNirScoreCheck && isDepthScoreCheck)) {
+                                                    if (livenessModel != null) {
+                                                        livenessModel.clearIdentifyResults();
+                                                        livenessModel.setUser(null);
                                                     }
 
-                                                    if (bdLiveConfig != null){
-                                                        onFeatureChecks(
-                                                                i,
-                                                                rgbInstance,
-                                                                bdFaceCheckConfig,
-                                                                faceInfos,
-                                                                faceInfosIr,
-                                                                nirInstance,
-                                                                livenessModel,
-                                                                bdFaceCheckConfig.secondFeature,
-                                                                bdFaceCheckConfig.featureCheckMode,
-                                                                bdFaceCheckConfig.activeModel,
-                                                                rgbScores,
-                                                                bdLiveConfig.rgbLiveScore);
-                                                    } else{
-                                                        onFeatureChecks(
-                                                                i,
-                                                                rgbInstance,
-                                                                bdFaceCheckConfig,
-                                                                faceInfos,
-                                                                faceInfosIr,
-                                                                nirInstance,
-                                                                livenessModel,
-                                                                bdFaceCheckConfig.secondFeature,
-                                                                bdFaceCheckConfig.featureCheckMode,
-                                                                bdFaceCheckConfig.activeModel,
-                                                                rgbScores,
-                                                                -1);
-                                                    }
+                                                    synchronized (faceModel.getFaceSearch()) {
+                                                        if (faceInfos != null) {
+                                                            int size = faceInfos.length;
 
+                                                            for (int i = 0; i < size; i++) {
+                                                                // 鐗瑰緛鎻愬彇
+                                                                // 妯$硦缁撴灉杩囨护,鎴村彛缃╂椂鍊欙紝涓嶈繘琛岃繃婊�
+                                                                if (!checkMouthMask) {
+                                                                    float blur = faceInfos[i].bluriness;
+                                                                    BDFaceOcclusion occlusion = faceInfos[i].occlusion;
+                                                                    float leftEye = occlusion.leftEye;
+                                                                    // "宸︾溂閬尅"
+                                                                    float rightEye = occlusion.rightEye;
+                                                                    // "鍙崇溂閬尅"
+                                                                    float nose = occlusion.nose;
+                                                                    // "榧诲瓙閬尅缃俊搴�"
+                                                                    float mouth = occlusion.mouth;
+                                                                    // "鍢村反閬尅缃俊搴�"
+                                                                    float leftCheek = occlusion.leftCheek;
+                                                                    // "宸﹁劯閬尅"
+                                                                    float rightCheek = occlusion.rightCheek;
+                                                                    // "鍙宠劯閬尅"
+                                                                    float chin = occlusion.chin;
+                                                                    // 鍔ㄦ�佸簳搴撻檺鍒�
+                                                                    faceModel
+                                                                            .getFaceSearch()
+                                                                            .setNeedJoinDB(
+                                                                                    selectQuality(
+                                                                                            blur,
+                                                                                            leftEye,
+                                                                                            rightEye,
+                                                                                            nose,
+                                                                                            mouth,
+                                                                                            leftCheek,
+                                                                                            rightCheek,
+                                                                                            chin));
+                                                                }
+
+                                                                if (bdLiveConfig != null){
+                                                                    onFeatureChecks(
+                                                                            i,
+                                                                            rgbInstance,
+                                                                            bdFaceCheckConfig,
+                                                                            faceInfos,
+                                                                            faceInfosIr,
+                                                                            nirInstance,
+                                                                            livenessModel,
+                                                                            bdFaceCheckConfig.secondFeature,
+                                                                            bdFaceCheckConfig.featureCheckMode,
+                                                                            bdFaceCheckConfig.activeModel,
+                                                                            rgbScores,
+                                                                            bdLiveConfig.rgbLiveScore);
+                                                                }
+                                                                else{
+                                                                    onFeatureChecks(
+                                                                            i,
+                                                                            rgbInstance,
+                                                                            bdFaceCheckConfig,
+                                                                            faceInfos,
+                                                                            faceInfosIr,
+                                                                            nirInstance,
+                                                                            livenessModel,
+                                                                            bdFaceCheckConfig.secondFeature,
+                                                                            bdFaceCheckConfig.featureCheckMode,
+                                                                            bdFaceCheckConfig.activeModel,
+                                                                            rgbScores,
+                                                                            -1);
+                                                                }
+
+                                                            }
+                                                        }
+                                                    }
+                                                }
+
+                                                // 娴佺▼缁撴潫,璁板綍鏈�缁堟椂闂�
+                                                livenessModel.setAllDetectDuration(System.currentTimeMillis() - startTime);
+                                                //                LogUtils.e(TIME_TAG, "all process time = " + livenessModel.getAllDetectDuration());
+                                                // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
+                                                rgbInstance.destory();
+                                                if (nirInstance != null) {
+                                                    nirInstance.destory();
+                                                }
+                                                // 鏄剧ず鏈�缁堢粨鏋滄彁绀�
+                                                if (faceDetectCallBack != null) {
+                                                    faceDetectCallBack.onFaceDetectCallback(livenessModel);
                                                 }
                                             }
-                                        }
-                                    }
 
-                                    // 娴佺▼缁撴潫,璁板綍鏈�缁堟椂闂�
-                                    livenessModel.setAllDetectDuration(System.currentTimeMillis() - startTime);
-                                    //                LogUtils.e(TIME_TAG, "all process time = " + livenessModel.getAllDetectDuration());
-                                    // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
+                                            @Override
+                                            public void onDetectFail() {
 
-                                    if (nirInstance != null) {
-                                        nirInstance.destory();
-                                    }
-                                    // 鏄剧ず鏈�缁堢粨鏋滄彁绀�
-                                    if (faceDetectCallBack != null) {
-                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                    }
-                                }
-
-                                @Override
-                                public void onDetectFail() {
-
-                                    if (faceDetectCallBack != null) {
-                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                    }
-                                }
-                            });
-                    }
-                });
+                                                if (faceDetectCallBack != null) {
+                                                    faceDetectCallBack.onFaceDetectCallback(livenessModel);
+                                                }
+                                            }
+                                        });
+                            }
+                        });
     }
 
     /**
@@ -872,7 +866,7 @@
      * @return
      */
     public boolean onBestImageCheck(
-        LivenessModel livenessModel, BDFaceCheckConfig bdFaceCheckConfig, FaceDetectCallBack faceDetectCallBack) {
+            LivenessModel livenessModel, BDFaceCheckConfig bdFaceCheckConfig, FaceDetectCallBack faceDetectCallBack) {
         boolean isBestImageCheck = false;
         if (livenessModel != null && livenessModel.getFaceInfos() != null) {
             FaceInfo[] faceInfos = livenessModel.getFaceInfos();
@@ -899,15 +893,15 @@
      * @param featureType      鐗瑰緛鎶藉彇妯℃�佹墽琛� 銆愮敓娲荤収锛�1銆戯紱銆愯瘉浠剁収锛�2銆戯紱銆愭贩鍚堟ā鎬侊細3銆戯紱
      */
     private void onFeatureCheck(
-        BDFaceImageInstance rgbInstance,
-        BDFaceCheckConfig bdFaceCheckConfig,
-        float[] landmark,
-        FaceInfo[] faceInfos,
-        BDFaceImageInstance nirInstance,
-        LivenessModel livenessModel,
-        byte[] secondFeature,
-        final int featureCheckMode,
-        final int featureType) {
+            BDFaceImageInstance rgbInstance,
+            BDFaceCheckConfig bdFaceCheckConfig,
+            float[] landmark,
+            FaceInfo[] faceInfos,
+            BDFaceImageInstance nirInstance,
+            LivenessModel livenessModel,
+            byte[] secondFeature,
+            final int featureCheckMode,
+            final int featureType) {
         // 濡傛灉涓嶆娊鍙栫壒寰侊紝鐩存帴杩斿洖
         if (featureCheckMode == 1) {
             return;
@@ -921,9 +915,9 @@
             BDQualityConfig bdQualityConfig = bdFaceCheckConfig.bdQualityConfig;
             boolean isIllum = bdQualityConfig != null ? illumScore < bdQualityConfig.illum : false;
             BDFaceSDKCommon.FeatureType type =
-                isIllum
-                    ? BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_NIR
-                    : BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO;
+                    isIllum
+                            ? BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_NIR
+                            : BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO;
             BDFaceImageInstance bdFaceImageInstance = isIllum ? nirInstance : rgbInstance;
             float[] landmarks = isIllum ? faceInfos[0].landmarks : landmark;
 
@@ -933,33 +927,33 @@
             livenessModel.setFeature(feature);
             // 浜鸿劯妫�绱�
             featureSearch(
-                featureCheckMode,
-                livenessModel,
-                bdFaceCheckConfig,
-                feature,
-                secondFeature,
-                featureSize,
-                BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
+                    featureCheckMode,
+                    livenessModel,
+                    bdFaceCheckConfig,
+                    feature,
+                    secondFeature,
+                    featureSize,
+                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
         } else {
             // 鐢熸椿鐓ф绱�
             long startFeatureTime = System.currentTimeMillis();
             float featureSize =
-                faceModel
-                    .getFaceFeature()
-                    .feature(
-                        BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO, rgbInstance, landmark, feature);
+                    faceModel
+                            .getFaceFeature()
+                            .feature(
+                                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO, rgbInstance, landmark, feature);
             livenessModel.setFeatureDuration(System.currentTimeMillis() - startFeatureTime);
             livenessModel.setFeature(feature);
             livenessModel.setFeatureDuration(System.currentTimeMillis() - startFeatureTime);
             // 浜鸿劯妫�绱�
             featureSearch(
-                featureCheckMode,
-                livenessModel,
-                bdFaceCheckConfig,
-                feature,
-                secondFeature,
-                featureSize,
-                BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
+                    featureCheckMode,
+                    livenessModel,
+                    bdFaceCheckConfig,
+                    feature,
+                    secondFeature,
+                    featureSize,
+                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
         }
     }
 
@@ -977,21 +971,22 @@
      * @param liveScore 鍙鍏夋椿浣撻槇鍊�
      */
     private void onFeatureChecks(
-        int index,
-        BDFaceImageInstance rgbInstance,
-        BDFaceCheckConfig bdFaceCheckConfig,
-        FaceInfo[] rgbFaceInfos,
-        FaceInfo[] faceInfos,
-        BDFaceImageInstance nirInstance,
-        LivenessModel livenessModel,
-        byte[] secondFeature,
-        final int featureCheckMode,
-        final int featureType,
-        float[] rgbScores,
-        float liveScore) {
+            int index,
+            BDFaceImageInstance rgbInstance,
+            BDFaceCheckConfig bdFaceCheckConfig,
+            FaceInfo[] rgbFaceInfos,
+            FaceInfo[] faceInfos,
+            BDFaceImageInstance nirInstance,
+            LivenessModel livenessModel,
+            byte[] secondFeature,
+            final int featureCheckMode,
+            final int featureType,
+            float[] rgbScores,
+            float liveScore) {
         // 濡傛灉涓嶆娊鍙栫壒寰侊紝鐩存帴杩斿洖
 
         if (featureCheckMode == 1) {
+
             return;
         }
         byte[] feature = new byte[512];
@@ -1004,9 +999,9 @@
             BDQualityConfig bdQualityConfig = bdFaceCheckConfig.bdQualityConfig;
             boolean isIllum = bdQualityConfig != null ? illumScore < bdQualityConfig.illum : false;
             BDFaceSDKCommon.FeatureType type =
-                isIllum
-                    ? BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_NIR
-                    : BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO;
+                    isIllum
+                            ? BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_NIR
+                            : BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO;
             BDFaceImageInstance bdFaceImageInstance = isIllum ? nirInstance : rgbInstance;
 
             if (rgbFaceInfos == null) {
@@ -1033,19 +1028,20 @@
             livenessModel.setFeature(feature);
             // 浜鸿劯妫�绱�
             featureSearchs(
-                index,
-                featureCheckMode,
-                livenessModel,
-                bdFaceCheckConfig,
-                feature,
-                secondFeature,
-                featureSize,
-                BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
+                    index,
+                    featureCheckMode,
+                    livenessModel,
+                    bdFaceCheckConfig,
+                    feature,
+                    secondFeature,
+                    featureSize,
+                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
 
         } else {
             // 鐢熸椿鐓ф绱�
             long startFeatureTime = System.currentTimeMillis();
             if (rgbFaceInfos == null) {
+
                 return;
             }
 
@@ -1063,27 +1059,28 @@
             }
 
             float featureSize =
-                faceModel
-                    .getFaceFeature()
-                    .feature(
-                        BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO,
-                        rgbInstance,
-                        rgbFaceInfos[index].landmarks,
-                        feature);
+                    faceModel
+                            .getFaceFeature()
+                            .feature(
+                                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO,
+                                    rgbInstance,
+                                    rgbFaceInfos[index].landmarks,
+                                    feature);
 
             livenessModel.setFeatureDuration(System.currentTimeMillis() - startFeatureTime);
             livenessModel.setFeature(feature);
             livenessModel.setFeatureDuration(System.currentTimeMillis() - startFeatureTime);
             // 浜鸿劯妫�绱�
+
             featureSearchs(
-                index,
-                featureCheckMode,
-                livenessModel,
-                bdFaceCheckConfig,
-                feature,
-                secondFeature,
-                featureSize,
-                BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
+                    index,
+                    featureCheckMode,
+                    livenessModel,
+                    bdFaceCheckConfig,
+                    feature,
+                    secondFeature,
+                    featureSize,
+                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO);
         }
     }
 
@@ -1098,13 +1095,13 @@
      * @param type             鐗瑰緛鎻愬彇绫诲瀷
      */
     private void featureSearch(
-        final int featureCheckMode,
-        LivenessModel livenessModel,
-        BDFaceCheckConfig bdFaceCheckConfig,
-        byte[] feature,
-        byte[] secondFeature,
-        float featureSize,
-        BDFaceSDKCommon.FeatureType type) {
+            final int featureCheckMode,
+            LivenessModel livenessModel,
+            BDFaceCheckConfig bdFaceCheckConfig,
+            byte[] feature,
+            byte[] secondFeature,
+            float featureSize,
+            BDFaceSDKCommon.FeatureType type) {
 
         // 濡傛灉鍙彁鍘荤壒寰侊紝涓嶅仛妫�绱紝姝ゅ杩斿洖
         if (featureCheckMode == 2) {
@@ -1118,7 +1115,7 @@
             // TODO 闃堝�煎彲浠ユ牴鎹笉鍚屾ā鍨嬭皟鏁�
             if (featureCheckMode == 3) {
                 List<? extends Feature> featureResult =
-                    faceModel.getFaceSearch().search(type, bdFaceCheckConfig.scoreThreshold, 1, feature, false);
+                        faceModel.getFaceSearch().search(type, bdFaceCheckConfig.scoreThreshold, 1, feature, false);
 
                 // TODO 杩斿洖top num = 1 涓暟鎹泦鍚堬紝姝ゅ鍙互浠绘剰璁剧疆锛屼細杩斿洖姣斿浠庡ぇ鍒板皬鎺掑簭鐨刵um 涓暟鎹泦鍚�
                 if (featureResult != null && featureResult.size() > 0) {
@@ -1151,13 +1148,13 @@
             } else if (featureCheckMode == 4) {
                 // 鐩墠浠呮敮鎸�
                 float score =
-                    faceModel
-                        .getFaceSearch()
-                        .compare(
-                            BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_ID_PHOTO,
-                            livenessModel.getFeature(),
-                            secondFeature,
-                            true);
+                        faceModel
+                                .getFaceSearch()
+                                .compare(
+                                        BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_ID_PHOTO,
+                                        livenessModel.getFeature(),
+                                        secondFeature,
+                                        true);
                 livenessModel.setScore(score);
                 if (score > threholdScore) {
                     /*faceId = livenessModel.getFaceInfo().faceID;
@@ -1185,14 +1182,14 @@
      * @param type             鐗瑰緛鎻愬彇绫诲瀷
      */
     private void featureSearchs(
-        final int index,
-        final int featureCheckMode,
-        LivenessModel livenessModel,
-        BDFaceCheckConfig bdFaceCheckConfig,
-        byte[] feature,
-        byte[] secondFeature,
-        float featureSize,
-        BDFaceSDKCommon.FeatureType type) {
+            final int index,
+            final int featureCheckMode,
+            LivenessModel livenessModel,
+            BDFaceCheckConfig bdFaceCheckConfig,
+            byte[] feature,
+            byte[] secondFeature,
+            float featureSize,
+            BDFaceSDKCommon.FeatureType type) {
 
         // 濡傛灉鍙彁鍘荤壒寰侊紝涓嶅仛妫�绱紝姝ゅ杩斿洖
 
@@ -1200,40 +1197,46 @@
             livenessModel.setFeatureCode(featureSize);
             return;
         }
+
         // 濡傛灉鎻愬彇鐗瑰緛+妫�绱紝璋冪敤search 鏂规硶
         if (featureSize == FEATURE_SIZE / 4) {
             long startFeature = System.currentTimeMillis();
             // 鐗瑰緛鎻愬彇鎴愬姛
+
             // TODO 闃堝�煎彲浠ユ牴鎹笉鍚屾ā鍨嬭皟鏁�
             if (featureCheckMode == 3) {
-                //System.out.println("==isOk==>44");
+
                 List<? extends Feature> featureResult =
-                    faceModel.getFaceSearch().search(type, bdFaceCheckConfig.scoreThreshold, 5, feature, false);
-                //System.out.println("==isOk==>45");
+                        faceModel.getFaceSearch().search(type, bdFaceCheckConfig.scoreThreshold, 2, feature, false);
+
                 // TODO 杩斿洖top num = 1 涓暟鎹泦鍚堬紝姝ゅ鍙互浠绘剰璁剧疆锛屼細杩斿洖姣斿浠庡ぇ鍒板皬鎺掑簭鐨刵um 涓暟鎹泦鍚�
                 if (featureResult != null && featureResult.size() > 0) {
-                    //System.out.println("==isOk==>鍖归厤鍒版暟閲�"+featureResult.size());
-                    User user = null;
-                    Feature topFeature = null;
-                    if(TextUtils.isEmpty(livenessModel.getGroupId())){
-                        //涓虹┖锛岄渶瑕佹帓搴忥紝浼樺厛鍙栦細鍛�
-                        for(Feature feat:featureResult) {
-                            threholdScore = bdFaceCheckConfig.scoreThreshold;
-                            if (feat != null && feat.getScore() > threholdScore) {
-                                User userOld = FaceApi.getInstance().getUserListById(feat.getId());
-                                //System.out.println("==isOk==>鍖归厤鍒扮被鍨�:"+userOld.getUserName());
-                                if("1".equals(userOld.getGroupId())){
-                                    user = userOld;
-                                    topFeature = feat;
-                                    break;
-                                }else if(user==null){
-                                    user = userOld;
-                                    topFeature = feat;
-                                }
+                    if(TextUtils.isEmpty(groupId)){
+                        // 鑾峰彇绗竴涓暟鎹�
+                        Feature topFeature = featureResult.get(0);
+                        // 鍒ゆ柇绗竴涓槇鍊兼槸鍚﹀ぇ浜庤瀹氶槇鍊硷紝濡傛灉澶т簬锛屾绱㈡垚鍔�
+                        threholdScore = bdFaceCheckConfig.scoreThreshold;
+                        if (topFeature != null && topFeature.getScore() > threholdScore) {
+                            // 褰撳墠featureEntity 鍙湁id+feature 绱㈠紩锛屽湪鏁版嵁搴撲腑鏌ュ埌瀹屾暣淇℃伅
+                            User user = FaceApi.getInstance().getUserListById(topFeature.getId());
+                            if (user != null) {
+                                IdentifyResult idResult = new IdentifyResult(user, index, topFeature.getScore());
+                                // Log.d("Attend", "add user:" + user.getUserInfo() + " index:" + index);
+                                livenessModel.addIdentifyResult(idResult);
+                                livenessModel.setUser(user);
+                                livenessModel.setFeatureScore(topFeature.getScore());
+
+                                setFail(livenessModel);
+                            } else {
+                                setFail(livenessModel);
                             }
+                        } else {
+                            setFail(livenessModel);
                         }
                     }else {
                         //鍙彇璇ョ被鍨嬬敤鎴�
+                        User user = null;
+                        Feature topFeature = null;
                         for(Feature feat:featureResult) {
                             // 鑾峰彇鏁版嵁
                             // 鍒ゆ柇闃堝�兼槸鍚﹀ぇ浜庤瀹氶槇鍊硷紝濡傛灉澶т簬锛屾绱㈡垚鍔�
@@ -1242,24 +1245,23 @@
                                 //System.out.println("==isOk==>50");
                                 // 褰撳墠featureEntity 鍙湁id+feature 绱㈠紩锛屽湪鏁版嵁搴撲腑鏌ュ埌瀹屾暣淇℃伅
                                 User userOld = FaceApi.getInstance().getUserListById(feat.getId());
-                                if(livenessModel.getGroupId().equals(userOld.getGroupId())){
+                                if(groupId.equals(userOld.getGroupId())){
                                     user = userOld;
                                     topFeature = feat;
                                     break;
                                 }
                             }
                         }
-                    }
-                    if (user != null) {
-                        //System.out.println("==isOk==>鍖归厤鍒�");
-                        IdentifyResult idResult = new IdentifyResult(user, index, topFeature.getScore());
-                        livenessModel.addIdentifyResult(idResult);
-                        livenessModel.setUser(user);
-                        livenessModel.setFeatureScore(topFeature.getScore());
-                        setFail(livenessModel);
-                    } else {
-                        //IdentifyResult idResult = new IdentifyResult(user, index, topFeature.getScore());
-                        setFail(livenessModel);
+                        if (user != null&&topFeature!=null) {
+                            //System.out.println("==isOk==>鍖归厤鍒�");
+                            IdentifyResult idResult = new IdentifyResult(user, index, topFeature.getScore());
+                            livenessModel.addIdentifyResult(idResult);
+                            livenessModel.setUser(user);
+                            livenessModel.setFeatureScore(topFeature.getScore());
+                            setFail(livenessModel);
+                        } else {
+                            setFail(livenessModel);
+                        }
                     }
                 } else {
                     setFail(livenessModel);
@@ -1267,13 +1269,13 @@
             } else if (featureCheckMode == 4) {
                 // 鐩墠浠呮敮鎸�
                 float score =
-                    faceModel
-                        .getFaceSearch()
-                        .compare(
-                            BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_ID_PHOTO,
-                            livenessModel.getFeature(),
-                            secondFeature,
-                            true);
+                        faceModel
+                                .getFaceSearch()
+                                .compare(
+                                        BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_ID_PHOTO,
+                                        livenessModel.getFeature(),
+                                        secondFeature,
+                                        true);
                 livenessModel.setScore(score);
                 if (score > threholdScore) {
                     /*faceId = livenessModel.getFaceInfo().faceID;
@@ -1300,11 +1302,11 @@
      * @param faceDetectCallBack
      */
     public void onDetectSilentLiveCheck(
-        final BDFaceImageConfig bdFaceImageConfig,
-        final BDFaceImageConfig bdNirFaceImageConfig,
-        final BDFaceImageConfig bdDepthFaceImageConfig,
-        final BDFaceCheckConfig bdFaceCheckConfig,
-        final FaceDetectCallBack faceDetectCallBack) {
+            final BDFaceImageConfig bdFaceImageConfig,
+            final BDFaceImageConfig bdNirFaceImageConfig,
+            final BDFaceImageConfig bdDepthFaceImageConfig,
+            final BDFaceCheckConfig bdFaceCheckConfig,
+            final FaceDetectCallBack faceDetectCallBack) {
         long startTime = System.currentTimeMillis();
         // 鍒涘缓妫�娴嬬粨鏋滃瓨鍌ㄦ暟鎹�
         LivenessModel livenessModel = new LivenessModel();
@@ -1313,44 +1315,44 @@
         BDFaceImageInstance rgbInstance = getBdImage(bdFaceImageConfig, bdFaceCheckConfig.darkEnhance);
         livenessModel.setTestBDFaceImageInstanceDuration(System.currentTimeMillis() - startTime);
         onTrack(
-            rgbInstance,
-            livenessModel,
-            new DetectListener() {
-                @Override
-                public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
+                rgbInstance,
+                livenessModel,
+                new DetectListener() {
+                    @Override
+                    public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
 
-                    // 淇濆瓨浜鸿劯鐗瑰緛鐐�
-                    livenessModel.setLandmarks(faceInfos[0].landmarks);
-                    // 淇濆瓨浜鸿劯鍥剧墖
-                    livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
-                    // 璋冪敤缁樺埗浜鸿劯妗嗘帴鍙�
-                    if (faceDetectCallBack != null) {
-                        faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
-                    }
-                    // 閫佹璇嗗埆
-                    onSilentLivenessCheck(
-                        rgbInstance,
-                        bdNirFaceImageConfig,
-                        bdDepthFaceImageConfig,
-                        bdFaceCheckConfig,
-                        livenessModel,
-                        startTime,
-                        faceDetectCallBack,
-                        faceInfos);
-                }
-
-                @Override
-                public void onDetectFail() {
-                    // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
-                    if (faceDetectCallBack != null) {
-                        faceDetectCallBack.onFaceDetectCallback(null);
+                        // 淇濆瓨浜鸿劯鐗瑰緛鐐�
+                        livenessModel.setLandmarks(faceInfos[0].landmarks);
+                        // 淇濆瓨浜鸿劯鍥剧墖
                         livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
-                        faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
-                        faceDetectCallBack.onTip(0, "鏈娴嬪埌浜鸿劯");
+                        // 璋冪敤缁樺埗浜鸿劯妗嗘帴鍙�
+                        if (faceDetectCallBack != null) {
+                            faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
+                        }
+                        // 閫佹璇嗗埆
+                        onSilentLivenessCheck(
+                                rgbInstance,
+                                bdNirFaceImageConfig,
+                                bdDepthFaceImageConfig,
+                                bdFaceCheckConfig,
+                                livenessModel,
+                                startTime,
+                                faceDetectCallBack,
+                                faceInfos);
                     }
 
-                }
-            });
+                    @Override
+                    public void onDetectFail() {
+                        // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
+                        if (faceDetectCallBack != null) {
+                            faceDetectCallBack.onFaceDetectCallback(null);
+                            livenessModel.setBdFaceImageInstance(rgbInstance.getImage());
+                            faceDetectCallBack.onFaceDetectDarwCallback(livenessModel);
+                            faceDetectCallBack.onTip(0, "鏈娴嬪埌浜鸿劯");
+                        }
+                        rgbInstance.destory();
+                    }
+                });
     }
 
     /**
@@ -1364,206 +1366,206 @@
      * @param faceDetectCallBack
      */
     public void onSilentLivenessCheck(
-        final BDFaceImageInstance rgbInstance,
-        final BDFaceImageConfig nirBDFaceImageConfig,
-        final BDFaceImageConfig depthBDFaceImageConfig,
-        final BDFaceCheckConfig bdFaceCheckConfig,
-        final LivenessModel livenessModel,
-        final long startTime,
-        final FaceDetectCallBack faceDetectCallBack,
-        final FaceInfo[] fastFaceInfos) {
+            final BDFaceImageInstance rgbInstance,
+            final BDFaceImageConfig nirBDFaceImageConfig,
+            final BDFaceImageConfig depthBDFaceImageConfig,
+            final BDFaceCheckConfig bdFaceCheckConfig,
+            final LivenessModel livenessModel,
+            final long startTime,
+            final FaceDetectCallBack faceDetectCallBack,
+            final FaceInfo[] fastFaceInfos) {
 
         if (future2 != null && !future2.isDone()) {
             // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
-
+            rgbInstance.destory();
             return;
         }
 
         future2 =
-            es2.submit(
-                new Runnable() {
+                es2.submit(
+                        new Runnable() {
 
-                    @Override
-                    public void run() {
-                        onDetect(
-                            bdFaceCheckConfig,
-                            rgbInstance,
-                            fastFaceInfos,
-                            livenessModel,
-                            new DetectListener() {
-                                @Override
-                                public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
-                                    // 浜鸿劯id璧嬪��
-                                    if (mLastFaceId != fastFaceInfos[0].faceID) {
-                                        mLastFaceId = fastFaceInfos[0].faceID;
-                                        mRgbLiveList.clear();
-                                        mNirLiveList.clear();
-                                    }
-                                    if (bdFaceCheckConfig == null) {
-
-                                        if (faceDetectCallBack != null) {
-                                            faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                        }
-                                        return;
-                                    }
-                                    // 鏈�浼樹汉鑴告帶鍒�
-                                    if (!onBestImageCheck(livenessModel, bdFaceCheckConfig, faceDetectCallBack)) {
-                                        livenessModel.setQualityCheck(true);
-
-                                        if (faceDetectCallBack != null) {
-                                            faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                        }
-                                        return;
-                                    }
-                                    onQualityCheck(
-                                        faceInfos,
-                                        bdFaceCheckConfig.bdQualityConfig,
-                                        faceDetectCallBack,
-                                        new QualityListener() {
+                            @Override
+                            public void run() {
+                                onDetect(
+                                        bdFaceCheckConfig,
+                                        rgbInstance,
+                                        fastFaceInfos,
+                                        livenessModel,
+                                        new DetectListener() {
                                             @Override
-                                            public void onQualitySuccess() {
-                                                livenessModel.setQualityCheck(false);
-                                                // 鑾峰彇LivenessConfig liveCheckMode 閰嶇疆閫夐」锛氥�愪笉浣跨敤娲讳綋锛�0銆戯紱銆怰GB娲讳綋锛�1銆戯紱銆怰GB+NIR娲讳綋锛�2銆戯紱銆怰GB+Depth娲讳綋锛�3銆戯紱銆怰GB+NIR+Depth娲讳綋锛�4銆�
-                                                // TODO 娲讳綋妫�娴�
-                                                BDLiveConfig bdLiveConfig = bdFaceCheckConfig.bdLiveConfig;
-                                                boolean isLiveCheck = bdFaceCheckConfig.bdLiveConfig != null;
-                                                if (isLiveCheck) {
-                                                    long startRgbTime = System.currentTimeMillis();
-                                                    boolean rgbLiveStatus =
-                                                        faceModel
-                                                            .getFaceLive()
-                                                            .strategySilentLive(
-                                                                BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_RGB,
-                                                                rgbInstance,
-                                                                faceInfos[0],
-                                                                bdLiveConfig.framesThreshold,
-                                                                bdLiveConfig.rgbLiveScore);
-                                                    livenessModel.setRGBLiveStatus(rgbLiveStatus);
-                                                    livenessModel.setRgbLivenessDuration(
-                                                        System.currentTimeMillis() - startRgbTime);
+                                            public void onDetectSuccess(FaceInfo[] faceInfos, BDFaceImageInstance rgbInstance) {
+                                                // 浜鸿劯id璧嬪��
+                                                if (mLastFaceId != fastFaceInfos[0].faceID) {
+                                                    mLastFaceId = fastFaceInfos[0].faceID;
+                                                    mRgbLiveList.clear();
+                                                    mNirLiveList.clear();
                                                 }
-                                                // TODO nir娲讳綋妫�娴�
-                                                BDFaceImageInstance nirInstance = null;
-                                                boolean isHaveNirImage = nirBDFaceImageConfig != null && isLiveCheck;
-                                                if (isHaveNirImage) {
-
-                                                    // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁YUV-IR锛岃浆涓虹畻娉曟娴嬬殑鍥剧墖BGR
-                                                    // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝鎵嬫満鍜屽紑鍙戠増闇�瑕佸姩鎬侀�傞厤
-                                                    nirInstance = getBdImage(nirBDFaceImageConfig, false);
-                                                    livenessModel.setBdNirFaceImageInstance(nirInstance.getImage());
-
-                                                    // 閬垮厤RGB妫�娴嬪叧閿偣鍦↖R瀵归綈娲讳綋绋冲畾锛屽鍔犵孩澶栨娴�
-                                                    long startIrDetectTime = System.currentTimeMillis();
-                                                    BDFaceDetectListConf bdFaceDetectListConf =
-                                                        new BDFaceDetectListConf();
-                                                    bdFaceDetectListConf.usingDetect = true;
-                                                    FaceInfo[] faceInfosIr =
-                                                        faceModel
-                                                            .getFaceNirDetect()
-                                                            .detect(
-                                                                BDFaceSDKCommon.DetectType.DETECT_NIR,
-                                                                BDFaceSDKCommon.AlignType
-                                                                    .BDFACE_ALIGN_TYPE_NIR_ACCURATE,
-                                                                nirInstance,
-                                                                null,
-                                                                bdFaceDetectListConf);
-                                                    bdFaceDetectListConf.usingDetect = false;
-                                                    livenessModel.setIrLivenessDuration(
-                                                        System.currentTimeMillis() - startIrDetectTime);
-                                                    //                    LogUtils.e(TIME_TAG, "detect ir time = " + livenessModel.getIrLivenessDuration());
-
-                                                    if (faceInfosIr != null && faceInfosIr.length > 0) {
-                                                        FaceInfo faceInfoIr = faceInfosIr[0];
-                                                        long startNirTime = System.currentTimeMillis();
-                                                        boolean nirLiveStatus =
-                                                            faceModel
-                                                                .getFaceLive()
-                                                                .strategySilentLive(
-                                                                    BDFaceSDKCommon.LiveType
-                                                                        .BDFACE_SILENT_LIVE_TYPE_NIR,
-                                                                    nirInstance,
-                                                                    faceInfoIr,
-                                                                    bdLiveConfig.framesThreshold,
-                                                                    bdLiveConfig.nirLiveScore);
-                                                        livenessModel.setNIRLiveStatus(nirLiveStatus);
-                                                        livenessModel.setIrLivenessDuration(
-                                                            System.currentTimeMillis() - startNirTime);
+                                                if (bdFaceCheckConfig == null) {
+                                                    rgbInstance.destory();
+                                                    if (faceDetectCallBack != null) {
+                                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
                                                     }
-
-                                                    nirInstance.destory();
+                                                    return;
                                                 }
-                                                // TODO depth娲讳綋妫�娴�
-                                                if (depthBDFaceImageConfig != null) {
-                                                    fastFaceInfos[0].landmarks = faceInfos[0].landmarks;
-                                                    // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝閫傞厤Atlas 闀滃ご锛岀洰鍓嶅鍜岄珮400*640锛屽叾浠栨憚鍍忓ご闇�瑕佸姩鎬佽皟鏁�,浜鸿劯72 涓叧閿偣x 鍧愭爣鍚戝乏绉诲姩80涓儚绱犵偣
-                                                    float[] depthLandmark = new float[faceInfos[0].landmarks.length];
-                                                    BDFaceImageInstance depthInstance;
-                                                    if (bdFaceCheckConfig.cameraType == 1) {
-                                                        System.arraycopy(
-                                                            faceInfos[0].landmarks,
-                                                            0,
-                                                            depthLandmark,
-                                                            0,
-                                                            faceInfos[0].landmarks.length);
-                                                        for (int i = 0; i < 144; i = i + 2) {
-                                                            depthLandmark[i] -= 80;
-                                                        }
-                                                        fastFaceInfos[0].landmarks = depthLandmark;
+                                                // 鏈�浼樹汉鑴告帶鍒�
+                                                if (!onBestImageCheck(livenessModel, bdFaceCheckConfig, faceDetectCallBack)) {
+                                                    livenessModel.setQualityCheck(true);
+                                                    rgbInstance.destory();
+                                                    if (faceDetectCallBack != null) {
+                                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
                                                     }
-
-                                                    depthInstance = getBdImage(depthBDFaceImageConfig, false);
-                                                    livenessModel.setBdDepthFaceImageInstance(depthInstance.getImage());
-                                                    // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁Depth
-                                                    long startDepthTime = System.currentTimeMillis();
-                                                    boolean depthLiveStatus =
-                                                        faceModel
-                                                            .getFaceLive()
-                                                            .strategySilentLive(
-                                                                BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_DEPTH,
-                                                                depthInstance,
-                                                                fastFaceInfos[0],
-                                                                bdLiveConfig.framesThreshold,
-                                                                bdLiveConfig.nirLiveScore);
-                                                    livenessModel.setDepthLiveStatus(depthLiveStatus);
-                                                    livenessModel.setDepthtLivenessDuration(
-                                                        System.currentTimeMillis() - startDepthTime);
-                                                    depthInstance.destory();
+                                                    return;
                                                 }
-                                                // 娴佺▼缁撴潫,璁板綍鏈�缁堟椂闂�
-                                                livenessModel.setAllDetectDuration(
-                                                    System.currentTimeMillis() - startTime);
-                                                //                LogUtils.e(TIME_TAG, "all process time = " + livenessModel.getAllDetectDuration());
-                                                // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
+                                                onQualityCheck(
+                                                        faceInfos,
+                                                        bdFaceCheckConfig.bdQualityConfig,
+                                                        faceDetectCallBack,
+                                                        new QualityListener() {
+                                                            @Override
+                                                            public void onQualitySuccess() {
+                                                                livenessModel.setQualityCheck(false);
+                                                                // 鑾峰彇LivenessConfig liveCheckMode 閰嶇疆閫夐」锛氥�愪笉浣跨敤娲讳綋锛�0銆戯紱銆怰GB娲讳綋锛�1銆戯紱銆怰GB+NIR娲讳綋锛�2銆戯紱銆怰GB+Depth娲讳綋锛�3銆戯紱銆怰GB+NIR+Depth娲讳綋锛�4銆�
+                                                                // TODO 娲讳綋妫�娴�
+                                                                BDLiveConfig bdLiveConfig = bdFaceCheckConfig.bdLiveConfig;
+                                                                boolean isLiveCheck = bdFaceCheckConfig.bdLiveConfig != null;
+                                                                if (isLiveCheck) {
+                                                                    long startRgbTime = System.currentTimeMillis();
+                                                                    boolean rgbLiveStatus =
+                                                                            faceModel
+                                                                                    .getFaceLive()
+                                                                                    .strategySilentLive(
+                                                                                            BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_RGB,
+                                                                                            rgbInstance,
+                                                                                            faceInfos[0],
+                                                                                            bdLiveConfig.framesThreshold,
+                                                                                            bdLiveConfig.rgbLiveScore);
+                                                                    livenessModel.setRGBLiveStatus(rgbLiveStatus);
+                                                                    livenessModel.setRgbLivenessDuration(
+                                                                            System.currentTimeMillis() - startRgbTime);
+                                                                }
+                                                                // TODO nir娲讳綋妫�娴�
+                                                                BDFaceImageInstance nirInstance = null;
+                                                                boolean isHaveNirImage = nirBDFaceImageConfig != null && isLiveCheck;
+                                                                if (isHaveNirImage) {
 
-                                                // 鏄剧ず鏈�缁堢粨鏋滄彁绀�
-                                                if (faceDetectCallBack != null) {
-                                                    faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                                }
+                                                                    // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁YUV-IR锛岃浆涓虹畻娉曟娴嬬殑鍥剧墖BGR
+                                                                    // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝鎵嬫満鍜屽紑鍙戠増闇�瑕佸姩鎬侀�傞厤
+                                                                    nirInstance = getBdImage(nirBDFaceImageConfig, false);
+                                                                    livenessModel.setBdNirFaceImageInstance(nirInstance.getImage());
+
+                                                                    // 閬垮厤RGB妫�娴嬪叧閿偣鍦↖R瀵归綈娲讳綋绋冲畾锛屽鍔犵孩澶栨娴�
+                                                                    long startIrDetectTime = System.currentTimeMillis();
+                                                                    BDFaceDetectListConf bdFaceDetectListConf =
+                                                                            new BDFaceDetectListConf();
+                                                                    bdFaceDetectListConf.usingDetect = true;
+                                                                    FaceInfo[] faceInfosIr =
+                                                                            faceModel
+                                                                                    .getFaceNirDetect()
+                                                                                    .detect(
+                                                                                            BDFaceSDKCommon.DetectType.DETECT_NIR,
+                                                                                            BDFaceSDKCommon.AlignType
+                                                                                                    .BDFACE_ALIGN_TYPE_NIR_ACCURATE,
+                                                                                            nirInstance,
+                                                                                            null,
+                                                                                            bdFaceDetectListConf);
+                                                                    bdFaceDetectListConf.usingDetect = false;
+                                                                    livenessModel.setIrLivenessDuration(
+                                                                            System.currentTimeMillis() - startIrDetectTime);
+                                                                    //                    LogUtils.e(TIME_TAG, "detect ir time = " + livenessModel.getIrLivenessDuration());
+
+                                                                    if (faceInfosIr != null && faceInfosIr.length > 0) {
+                                                                        FaceInfo faceInfoIr = faceInfosIr[0];
+                                                                        long startNirTime = System.currentTimeMillis();
+                                                                        boolean nirLiveStatus =
+                                                                                faceModel
+                                                                                        .getFaceLive()
+                                                                                        .strategySilentLive(
+                                                                                                BDFaceSDKCommon.LiveType
+                                                                                                        .BDFACE_SILENT_LIVE_TYPE_NIR,
+                                                                                                nirInstance,
+                                                                                                faceInfoIr,
+                                                                                                bdLiveConfig.framesThreshold,
+                                                                                                bdLiveConfig.nirLiveScore);
+                                                                        livenessModel.setNIRLiveStatus(nirLiveStatus);
+                                                                        livenessModel.setIrLivenessDuration(
+                                                                                System.currentTimeMillis() - startNirTime);
+                                                                    }
+
+                                                                    nirInstance.destory();
+                                                                }
+                                                                // TODO depth娲讳綋妫�娴�
+                                                                if (depthBDFaceImageConfig != null) {
+                                                                    fastFaceInfos[0].landmarks = faceInfos[0].landmarks;
+                                                                    // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝閫傞厤Atlas 闀滃ご锛岀洰鍓嶅鍜岄珮400*640锛屽叾浠栨憚鍍忓ご闇�瑕佸姩鎬佽皟鏁�,浜鸿劯72 涓叧閿偣x 鍧愭爣鍚戝乏绉诲姩80涓儚绱犵偣
+                                                                    float[] depthLandmark = new float[faceInfos[0].landmarks.length];
+                                                                    BDFaceImageInstance depthInstance;
+                                                                    if (bdFaceCheckConfig.cameraType == 1) {
+                                                                        System.arraycopy(
+                                                                                faceInfos[0].landmarks,
+                                                                                0,
+                                                                                depthLandmark,
+                                                                                0,
+                                                                                faceInfos[0].landmarks.length);
+                                                                        for (int i = 0; i < 144; i = i + 2) {
+                                                                            depthLandmark[i] -= 80;
+                                                                        }
+                                                                        fastFaceInfos[0].landmarks = depthLandmark;
+                                                                    }
+
+                                                                    depthInstance = getBdImage(depthBDFaceImageConfig, false);
+                                                                    livenessModel.setBdDepthFaceImageInstance(depthInstance.getImage());
+                                                                    // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁Depth
+                                                                    long startDepthTime = System.currentTimeMillis();
+                                                                    boolean depthLiveStatus =
+                                                                            faceModel
+                                                                                    .getFaceLive()
+                                                                                    .strategySilentLive(
+                                                                                            BDFaceSDKCommon.LiveType.BDFACE_SILENT_LIVE_TYPE_DEPTH,
+                                                                                            depthInstance,
+                                                                                            fastFaceInfos[0],
+                                                                                            bdLiveConfig.framesThreshold,
+                                                                                            bdLiveConfig.nirLiveScore);
+                                                                    livenessModel.setDepthLiveStatus(depthLiveStatus);
+                                                                    livenessModel.setDepthtLivenessDuration(
+                                                                            System.currentTimeMillis() - startDepthTime);
+                                                                    depthInstance.destory();
+                                                                }
+                                                                // 娴佺▼缁撴潫,璁板綍鏈�缁堟椂闂�
+                                                                livenessModel.setAllDetectDuration(
+                                                                        System.currentTimeMillis() - startTime);
+                                                                //                LogUtils.e(TIME_TAG, "all process time = " + livenessModel.getAllDetectDuration());
+                                                                // 娴佺▼缁撴潫閿�姣佸浘鐗囷紝寮�濮嬩笅涓�甯у浘鐗囨娴嬶紝鍚︾潃鍐呭瓨娉勯湶
+                                                                rgbInstance.destory();
+                                                                // 鏄剧ず鏈�缁堢粨鏋滄彁绀�
+                                                                if (faceDetectCallBack != null) {
+                                                                    faceDetectCallBack.onFaceDetectCallback(livenessModel);
+                                                                }
+                                                            }
+
+                                                            @Override
+                                                            public void onQualityFail(String detectFail, String occlusionFail) {
+                                                                livenessModel.setQualityOcclusion(occlusionFail);
+                                                                livenessModel.setQualityDetect(detectFail);
+                                                                livenessModel.setQualityCheck(true);
+                                                                rgbInstance.destory();
+                                                                if (faceDetectCallBack != null) {
+                                                                    faceDetectCallBack.onFaceDetectCallback(livenessModel);
+                                                                }
+                                                            }
+                                                        });
                                             }
 
                                             @Override
-                                            public void onQualityFail(String detectFail, String occlusionFail) {
-                                                livenessModel.setQualityOcclusion(occlusionFail);
-                                                livenessModel.setQualityDetect(detectFail);
-                                                livenessModel.setQualityCheck(true);
+                                            public void onDetectFail() {
 
                                                 if (faceDetectCallBack != null) {
                                                     faceDetectCallBack.onFaceDetectCallback(livenessModel);
                                                 }
                                             }
                                         });
-                                }
-
-                                @Override
-                                public void onDetectFail() {
-
-                                    if (faceDetectCallBack != null) {
-                                        faceDetectCallBack.onFaceDetectCallback(livenessModel);
-                                    }
-                                }
-                            });
-                    }
-                });
+                            }
+                        });
     }
 
     private void onTrack(BDFaceImageInstance rgbInstance, LivenessModel livenessModel, DetectListener detectListener) {
@@ -1632,10 +1634,10 @@
      * @return
      */
     public void onQualityCheck(
-        final FaceInfo[] faceInfos,
-        final BDQualityConfig bdQualityConfig,
-        final FaceDetectCallBack faceDetectCallBack,
-        final QualityListener qualityListener) {
+            final FaceInfo[] faceInfos,
+            final BDQualityConfig bdQualityConfig,
+            final FaceDetectCallBack faceDetectCallBack,
+            final QualityListener qualityListener) {
 
         if (bdQualityConfig == null) {
             qualityListener.onQualitySuccess();
@@ -1720,7 +1722,7 @@
                     }
                 }
                 if (!TextUtils.isEmpty(stringBufferDetected.toString())
-                    || !TextUtils.isEmpty(stringBufferOcclusion.toString())) {
+                        || !TextUtils.isEmpty(stringBufferOcclusion.toString())) {
                     if (!TextUtils.isEmpty(stringBufferDetected.toString())) {
                         detectFail = stringBufferDetected.toString();
                     }
@@ -1748,9 +1750,9 @@
      * @return
      */
     public boolean onQualityCheck(
-        final FaceInfo[] faceInfos,
-        final BDQualityConfig bdQualityConfig,
-        final FaceDetectCallBack faceDetectCallBack) {
+            final FaceInfo[] faceInfos,
+            final BDQualityConfig bdQualityConfig,
+            final FaceDetectCallBack faceDetectCallBack) {
 
         if (bdQualityConfig == null) {
             return true;
@@ -1848,7 +1850,7 @@
      * @return
      */
     public boolean onPersonQualityCheck(
-        final FaceInfo faceInfo, final BDQualityConfig bdQualityConfig, final FaceDetectCallBack faceDetectCallBack) {
+            final FaceInfo faceInfo, final BDQualityConfig bdQualityConfig, final FaceDetectCallBack faceDetectCallBack) {
 
         if (bdQualityConfig == null) {
             return true;
@@ -1930,31 +1932,28 @@
      * rightCheek 鍙宠噳閬搵寰楀垎
      */
     private boolean selectQuality(
-        float bluriness,
-        float leftEye,
-        float rightEye,
-        float nose,
-        float mouth,
-        float leftCheek,
-        float rightCheek,
-        float chin) {
+            float bluriness,
+            float leftEye,
+            float rightEye,
+            float nose,
+            float mouth,
+            float leftCheek,
+            float rightCheek,
+            float chin) {
 
         return bluriness < 0.5
-            && leftEye < 0.75
-            && rightEye < 0.75
-            && nose < 0.75
-            && mouth < 0.75
-            && leftCheek < 0.75
-            && rightCheek < 0.75
-            && chin < 0.7;
+                && leftEye < 0.75
+                && rightEye < 0.75
+                && nose < 0.75
+                && mouth < 0.75
+                && leftCheek < 0.75
+                && rightCheek < 0.75
+                && chin < 0.7;
     }
 
     // 浜鸿瘉鏍搁獙鐗瑰緛鎻愬彇
     public float personDetect(
-        final Bitmap bitmap, final byte[] feature, final BDFaceCheckConfig bdFaceCheckConfig, Context context) {
-        if(bitmap==null||bitmap.isRecycled()){
-            return -1;
-        }
+            final Bitmap bitmap, final byte[] feature, final BDFaceCheckConfig bdFaceCheckConfig, Context context) {
         BDFaceImageInstance rgbInstance = new BDFaceImageInstance(bitmap);
         float ret = -1;
         FaceInfo[] faceInfos;
@@ -1962,14 +1961,14 @@
         if (bdFaceCheckConfig != null) {
             bdFaceCheckConfig.bdFaceDetectListConfig.usingDetect = true;
             faceInfos =
-                faceModel
-                    .getFaceDetectPerson()
-                    .detect(
-                        BDFaceSDKCommon.DetectType.DETECT_VIS,
-                        BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_RGB_ACCURATE,
-                        rgbInstance,
-                        null,
-                        bdFaceCheckConfig.bdFaceDetectListConfig);
+                    faceModel
+                            .getFaceDetectPerson()
+                            .detect(
+                                    BDFaceSDKCommon.DetectType.DETECT_VIS,
+                                    BDFaceSDKCommon.AlignType.BDFACE_ALIGN_TYPE_RGB_ACCURATE,
+                                    rgbInstance,
+                                    null,
+                                    bdFaceCheckConfig.bdFaceDetectListConfig);
         } else {
             faceInfos = faceModel.getFaceDetectPerson().detect(BDFaceSDKCommon.DetectType.DETECT_VIS, rgbInstance);
         }
@@ -1977,19 +1976,19 @@
             // 鍒ゆ柇璐ㄩ噺妫�娴嬶紝閽堝妯$硦搴︺�侀伄鎸°�佽搴�
             if (onPersonQualityCheck(faceInfos[0], bdQualityConfig, new FaceQualityBack(context))) {
                 ret =
-                    faceModel
-                        .getFacePersonFeature()
-                        .feature(
-                            BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO,
-                            rgbInstance,
-                            faceInfos[0].landmarks,
-                            feature);
+                        faceModel
+                                .getFacePersonFeature()
+                                .feature(
+                                        BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO,
+                                        rgbInstance,
+                                        faceInfos[0].landmarks,
+                                        feature);
             }
         } else {
-
+            rgbInstance.destory();
             return -1;
         }
-
+        rgbInstance.destory();
         return ret;
     }
 }

--
Gitblit v1.9.3