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/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java |  268 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 162 insertions(+), 106 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
index 99bf869..b763f31 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
@@ -5,6 +5,7 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.hardware.Camera;
 import android.os.Bundle;
 import android.os.Handler;
@@ -15,6 +16,7 @@
 import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.TextWatcher;
+import android.text.format.DateUtils;
 import android.text.style.TextAppearanceSpan;
 import android.view.View;
 import android.view.ViewTreeObserver;
@@ -29,6 +31,7 @@
 import com.doumee.keyCabinet.dao.DaoManager;
 import com.doumee.keyCabinet.dao.FingerPrintDo;
 import com.doumee.keyCabinet.databinding.FaceActivityBinding;
+import com.doumee.keyCabinet.event.FaceCheckResultEvent;
 import com.doumee.keyCabinet.event.FaceStatusChangeEvent;
 import com.doumee.keyCabinet.event.HttpEvent;
 import com.doumee.keyCabinet.event.JiujinBeginEvent;
@@ -37,6 +40,7 @@
 import com.doumee.keyCabinet.event.TimeClockEvent;
 import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
 import com.doumee.keyCabinet.utils.BraceletLogUtils;
+import com.doumee.keyCabinet.utils.CrashHandler;
 import com.doumee.keyCabinet.utils.face.FaceUtils;
 import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig;
 import com.doumee.keyCabinet.utils.usb.DevComm;
@@ -45,6 +49,7 @@
 import com.doumee.lib_coremodel.util.SpUtil;
 import com.doumee.lib_coremodel.util.StringUtil;
 import com.doumee.lib_coremodel.view.ToastView;
+import com.example.datalibrary.api.FaceApi;
 import com.example.datalibrary.callback.CameraDataCallback;
 import com.example.datalibrary.callback.FaceDetectCallBack;
 import com.example.datalibrary.db.DBManager;
@@ -56,6 +61,7 @@
 import com.example.datalibrary.model.LivenessModel;
 import com.example.datalibrary.model.User;
 import com.example.datalibrary.utils.FaceOnDrawTexturViewUtil;
+import com.example.datalibrary.utils.FileUtils;
 import com.example.datalibrary.utils.ToastUtils;
 
 import org.greenrobot.eventbus.EventBus;
@@ -63,6 +69,9 @@
 import org.greenrobot.eventbus.ThreadMode;
 
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 import dagger.hilt.android.AndroidEntryPoint;
 
@@ -315,10 +324,12 @@
         switch (type){
             case 1:
                 if(flag==0){
-                    //鍒囨崲鍒扮鐞嗗憳鍒峰崱
+                    //Toast.makeText(mContext, "status:" + status, Toast.LENGTH_SHORT).show();
                     if(status==0||status==10){
+                        //鍒囨崲鍒扮鐞嗗憳鍒峰崱
                         statusFsm(1);
                     }else if(status==2||status==11){
+                        //鍒囨崲鍒板徃鏈哄埛鍗�
                         statusFsm(3);
                     }
                 }else {
@@ -328,8 +339,12 @@
                 break;
             case 9:
                 //鎸囩汗楠岃瘉
-                if(status==0) {
-                    statusFsm(10);
+                if(flag==0){
+                    if(status==0) {
+                        statusFsm(10);
+                    }else {
+                        statusFsm(11);
+                    }
                 }else {
                     statusFsm(12);
                 }
@@ -362,6 +377,7 @@
             case 4:
                 //鍒囨崲鍒颁汉鑴�
                 if(flag==0){
+                    //Toast.makeText(mContext, "status:" + status, Toast.LENGTH_SHORT).show();
                     if(status==1||status==10){
                         statusFsm(0);
                     }else if(status==3||status==11){
@@ -523,8 +539,16 @@
                 handler.sendEmptyMessageDelayed(1,4000);
                 glMantleSurfacView.setFrame();
                 bdFaceImageConfig.setData(data);
-                FaceSDKManager.getInstance().onDetectCheck(bdFaceImageConfig, null, null,
-                        bdFaceCheckConfig, faceDetectCallBack);
+                try {
+                    FaceSDKManager.getInstance().onDetectCheck(bdFaceImageConfig, null, null,
+                            bdFaceCheckConfig, faceDetectCallBack);
+                }catch (RuntimeException e){
+                    e.printStackTrace();
+                    ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊0:"+e.getMessage());
+                }catch (Exception e){
+                    e.printStackTrace();
+                    ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊0:"+e.getMessage());
+                }
             }
         }
     };
@@ -536,21 +560,41 @@
             //System.out.println("==rgbInstance==>onFaceDetectCallback   "+livenessModel);
             // 寮�鍙戞ā寮�
             //isCheckFace = false;
-            if(handler.hasMessages(1)){
-                handler.removeMessages(1);
+            try {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if(handler==null){
+                            return;
+                        }
+                        if(handler.hasMessages(1)){
+                            handler.removeMessages(1);
+                        }
+                        EventBus.getDefault().post(new FaceCheckResultEvent(livenessModel));
+                    }
+                });
+            }catch (RuntimeException e){
+                e.printStackTrace();
+                ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊2:"+e.getMessage());
+            }catch (Exception e){
+                e.printStackTrace();
+                ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊2:"+e.getMessage());
             }
-            checkOpenDebugResult(livenessModel);
+
         }
 
         @Override
         public void onTip(int code, String msg) {
+            if(1==code) {
+                SpUtil.saveString(CrashHandler.FILE_NAME + StringUtil.DateToStr(new Date()), msg);
+            }
             if(isToChose){
                 return;
             }
             /*getDB().clFail.setVisibility(View.VISIBLE);
             getDB().tv4.setText(msg);
             handler.sendEmptyMessageDelayed(0,1000);*/
-            System.out.println("==isOk==>onTip:"+msg);
+            //System.out.println("==isOk==>onTip:"+msg);
         }
 
         @Override
@@ -578,11 +622,15 @@
         if (livenessModel == null){
             return;
         }
-
-        if (isPause){
-            glMantleSurfacView.onGlDraw(livenessModel.getTrackFaceInfo() ,
-                    livenessModel.getBdFaceImageInstance() ,
-                    FaceOnDrawTexturViewUtil.drawFaceColor(mUser , livenessModel));
+        try {
+            if (isPause){
+                glMantleSurfacView.onGlDraw(livenessModel.getTrackFaceInfo() ,
+                        livenessModel.getBdFaceImageInstance() ,
+                        FaceOnDrawTexturViewUtil.drawFaceColor(mUser , livenessModel));
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊1:"+e.getMessage());
         }
     }
 
@@ -633,6 +681,9 @@
                 case 6:
                     getDB().message.setVisibility(View.GONE);
                     break;
+                case 7:
+                    identify();
+                    break;
                 default:
                     break;
             }
@@ -678,97 +729,86 @@
         }
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void FaceCheckResultEvent(FaceCheckResultEvent e){
+        if(!isFinishing()){
+            checkOpenDebugResult(e.getLivenessModel());
+        }
+    }
+
     private int resultCount = 0;
     // ***************寮�鍙戞ā寮忕粨鏋滆緭鍑�*************
     private void checkOpenDebugResult(final LivenessModel livenessModel) {
-        if(isFinishing()){
-            return;
-        }
-        if(handler==null){
-            return;
-        }
-        // 褰撴湭妫�娴嬪埌浜鸿劯UI鏄剧ず
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                if(isToChose) {
-                    return;
-                }
-                if (livenessModel == null) {
-                    if (isCompareCheck) {
-                        /*getDB().clFail.setVisibility(View.VISIBLE);
-                        getDB().tv4.setText(getString(R.string.face_tip2));
-                        handler.sendEmptyMessageDelayed(0,1000);*/
-                    }
-                    System.out.println("======>浜鸿劯璇嗗埆澶辫触");
-                    return;
-                }
-                if (livenessModel.isQualityCheck()){
-                    //鏄惁閫氳繃璐ㄩ噺妫�娴�
-                    if (isCompareCheck) {
-                        /*getDB().clFail.setVisibility(View.VISIBLE);
-                        getDB().tv4.setText(getString(R.string.face_tip2));
-                        handler.sendEmptyMessageDelayed(0,1000);*/
-                    }
-                } else {
-                    User user = livenessModel.getUser();
-                    if (user == null) {
-                        mUser = null;
-                        //EventBus.getDefault().post(new HttpEvent("浜鸿劯鐢ㄦ埛妫�娴嬪け璐�------->"+(status==0?"绠$悊鍛樹汉鑴告娴嬶細":"鍙告満浜鸿劯妫�娴嬶細")));
-                        if (isCompareCheck) {
-                            /*getDB().clFail.setVisibility(View.VISIBLE);
-                            getDB().tv4.setText(getString(R.string.face_tip2));
-                            handler.sendEmptyMessageDelayed(0,1000);*/
-                        }
+        try {
+            if (isFinishing()) {
+                return;
+            }
+            if (handler == null) {
+                return;
+            }
+            // 褰撴湭妫�娴嬪埌浜鸿劯UI鏄剧ず
+            if (isToChose) {
+                return;
+            }
+            if (livenessModel == null) {
 
-                    } else {
-                        mUser = user;
-                        /*EventBus.getDefault().post(new HttpEvent("浜鸿劯鐢ㄦ埛------->"+(status==0?"绠$悊鍛樹汉鑴告娴嬶細":"鍙告満浜鸿劯妫�娴嬶細")
-                                +(user.getGroupId().equals("0")?"绠$悊鍛�":"鍙告満")));*/
-                        if (isCompareCheck) {
-                            getDB().clFail.setVisibility(View.GONE);
-                            if(handler.hasMessages(0)) {
-                                handler.removeMessages(0);
-                            }
-                            /*textHuanying.setVisibility(View.GONE);
-                            userNameLayout.setVisibility(View.VISIBLE);
-                            nameImage.setImageResource(R.mipmap.ic_tips_gate_success);
-                            nameText.setTextColor(Color.parseColor("#0dc6ff"));
-                            nameText.setText(FileUtils.spotString(user.getUserName()) + " 娆㈣繋鎮�");*/
+                return;
+            }
+            if (livenessModel.isQualityCheck()) {
+                //鏄惁閫氳繃璐ㄩ噺妫�娴�
+
+            } else {
+                User user = livenessModel.getUser();
+                if (user == null) {
+                    mUser = null;
+                    //EventBus.getDefault().post(new HttpEvent("浜鸿劯鐢ㄦ埛妫�娴嬪け璐�------->"+(status==0?"绠$悊鍛樹汉鑴告娴嬶細":"鍙告満浜鸿劯妫�娴嬶細")));
+                } else {
+                    mUser = user;
+                        //EventBus.getDefault().post(new HttpEvent("浜鸿劯鐢ㄦ埛------->"+(status==0?"绠$悊鍛樹汉鑴告娴嬶細":"鍙告満浜鸿劯妫�娴嬶細")+(user.getGroupId().equals("0")?"绠$悊鍛�":"鍙告満")));
+                    if (isCompareCheck) {
+                        getDB().clFail.setVisibility(View.GONE);
+                        if (handler.hasMessages(0)) {
+                            handler.removeMessages(0);
                         }
-                        isToChose = true;
-                        //璇嗗埆鎴愬姛锛岃烦杞�
-                        if(status==0){
-                            //鍙�-绠$悊鍛�
-                            MApplication.getLoginBean().setAutoMemberId(Integer.parseInt(user.getUserId()));
-                            //handler.sendEmptyMessageDelayed(7,0);
-                            EventBus.getDefault().post(new FaceStatusChangeEvent(5));
-                        }else if(status==2){
-                            //鍙�-鍙告満
-                            CameraPreviewManager.getInstance().stopPreview();
-                            MApplication.getLoginBean().setMemberId(Integer.parseInt(user.getUserId()));
-                            MApplication.getLoginBean().setAuthType(0);
-                            //handler.sendEmptyMessageDelayed(8,0);
-                            //Toast.makeText(mContext, "鏄惁閰掔簿妫�娴嬶細"+MApplication.getConfigBean().getAlcoholStatus(), Toast.LENGTH_SHORT).show();
-                            if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getAlcoholStatus()==1) {
-                                //闈為厭绮炬娴�
-                                startActivity(KeyCabinetActivity.class);
-                                finish();
-                            }else {
-                                //閰掔簿妫�娴�
-                                EventBus.getDefault().post(new FaceStatusChangeEvent(4));
-                            }
-                        }else if(status==7){
-                            //杩�-鍙告満
-                            MApplication.getLoginBean().setMemberId(Integer.parseInt(user.getUserId()));
-                            MApplication.getLoginBean().setAuthType(0);
+                    }
+                    isToChose = true;
+                    //璇嗗埆鎴愬姛锛岃烦杞�
+                    if (status == 0) {
+                        //鍙�-绠$悊鍛�
+                        MApplication.getLoginBean().setAutoMemberId(Integer.parseInt(user.getUserId()));
+                        //handler.sendEmptyMessageDelayed(7,0);
+                        EventBus.getDefault().post(new FaceStatusChangeEvent(5));
+                    } else if (status == 2) {
+                        //鍙�-鍙告満
+                        CameraPreviewManager.getInstance().stopPreview();
+                        MApplication.getLoginBean().setMemberId(Integer.parseInt(user.getUserId()));
+                        MApplication.getLoginBean().setAuthType(0);
+                        //handler.sendEmptyMessageDelayed(8,0);
+                        //Toast.makeText(mContext, "鏄惁閰掔簿妫�娴嬶細"+MApplication.getConfigBean().getAlcoholStatus(), Toast.LENGTH_SHORT).show();
+                        if (MApplication.getConfigBean() != null && MApplication.getConfigBean().getAlcoholStatus() == 1) {
+                            //闈為厭绮炬娴�
                             startActivity(KeyCabinetActivity.class);
                             finish();
+                        } else {
+                            //閰掔簿妫�娴�
+                            EventBus.getDefault().post(new FaceStatusChangeEvent(4));
                         }
+                    } else if (status == 7) {
+                        //杩�-鍙告満
+                        MApplication.getLoginBean().setMemberId(Integer.parseInt(user.getUserId()));
+                        MApplication.getLoginBean().setAuthType(0);
+                        startActivity(KeyCabinetActivity.class);
+                        finish();
                     }
                 }
             }
-        });
+        }catch (RuntimeException e){
+            e.printStackTrace();
+            ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊锛�"+e.getMessage());
+        }catch (Exception e){
+            e.printStackTrace();
+            ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊锛�"+e.getMessage());
+        }
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -828,14 +868,31 @@
             public void run() {
                 FingerPrintDo printDo = DaoManager.getFingerPrintDao().getByFingerId(fingerId);
                 if(printDo!=null){
+                    List<User> users = FaceApi.getInstance().getAllUserList();
+                    HashMap<String,String> map = new HashMap<>();
+                    for(User u:users){
+                        if(u.getUserId().equals(printDo.getMemberId()+"")){
+                            map.put(u.getGroupId(),"");
+                        }
+                    }
                     if(status==10){
                         //鍙�-绠$悊鍛樻寚绾归獙璇�
+                        if(!map.containsKey("0")){
+                            showToast("鎮ㄥ綋鍓嶄笉鏄鐞嗗憳");
+                            handler.sendEmptyMessageDelayed(7,2000);
+                            return;
+                        }
                         MApplication.getLoginBean().setAutoMemberId(printDo.getMemberId());
                         EventBus.getDefault().post(new FaceStatusChangeEvent(5));
                     }else if(status==11){
                         //鍙�-鍙告満鎸囩汗楠岃瘉
+                        if(!map.containsKey("1")){
+                            showToast("鎮ㄥ綋鍓嶄笉鏄徃鏈�");
+                            handler.sendEmptyMessageDelayed(7,2000);
+                            return;
+                        }
                         MApplication.getLoginBean().setMemberId(printDo.getMemberId());
-                        MApplication.getLoginBean().setAuthType(2);
+                        MApplication.getLoginBean().setAuthType(3);
                         if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getAlcoholStatus()==1) {
                             //闈為厭绮炬娴�
                             startActivity(KeyCabinetActivity.class);
@@ -846,8 +903,13 @@
                         }
                     }else if(status==12){
                         //杩�-鍙告満
+                        if(!map.containsKey("1")){
+                            showToast("鎮ㄥ綋鍓嶄笉鏄徃鏈�");
+                            handler.sendEmptyMessageDelayed(7,2000);
+                            return;
+                        }
                         MApplication.getLoginBean().setMemberId(printDo.getMemberId());
-                        MApplication.getLoginBean().setAuthType(2);
+                        MApplication.getLoginBean().setAuthType(3);
                         startActivity(KeyCabinetActivity.class);
                         finish();
                     }
@@ -855,7 +917,7 @@
                     //鎵句笉鍒帮紝鍒犻櫎鎸囩汗
                     if(deleteID(fingerId)) {
                         //缁х画鏌ユ寚绾�
-                        identify();
+                        handler.sendEmptyMessageDelayed(7,2000);
                     }else {
                         showToast("鏈煡璇㈠埌鐢ㄦ埛");
                     }
@@ -919,12 +981,7 @@
                     EventBus.getDefault().post(new HttpEvent("杩炴帴璁惧澶辫触3," + mDevComm.Run_GetDeviceInfo(w_strInfo)));
                 }
             } else {
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        EventBus.getDefault().post(new HttpEvent("杩炴帴璁惧澶辫触4,"+mDevComm.Run_TestConnection()));
-                    }
-                });
+                EventBus.getDefault().post(new HttpEvent("杩炴帴璁惧澶辫触4,"+mDevComm.Run_TestConnection()));
                 mDevComm.CloseComm();
             }
         }
@@ -933,7 +990,6 @@
     private void identify() {
         if (!mDevComm.IsInit())
             return;
-
         mBCancel = false;
         new Thread(new Runnable() {
             int w_nRet;
@@ -991,7 +1047,7 @@
                         //m_strPost = String.format("Result : Success\r\nTemplate No : %d, Learn Result : %d\r\nMatch Time : %dms", w_nID[0], w_nLearned[0], m_nPassedTime);
                     } else {
                         //娌℃壘鍒�
-                        //showToast("娌℃壘鍒�");
+                        showToast("鏈娴嬪埌璇ユ寚绾�");
                         /*m_strPost = String.format("\r\nMatch Time : %dms", m_nPassedTime);
                         m_strPost = GetErrorMsg(w_nRet) + m_strPost;*/
                     }
@@ -1045,7 +1101,7 @@
             runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
-                    Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
+                    ToastView.show(MApplication.mContext,msg);
                 }
             });
         }

--
Gitblit v1.9.3