From 542c054c6904021e067364914fbf6b3947c5039b Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期一, 15 十二月 2025 15:33:48 +0800
Subject: [PATCH] 指纹钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java | 247 ++++++++++++++++++++++++++++--------------------
1 files changed, 144 insertions(+), 103 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..9e908d5 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;
@@ -37,6 +39,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 +48,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 +60,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 +68,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;
@@ -523,8 +531,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 +552,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);
+ }
+ checkOpenDebugResult(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 +614,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 +673,9 @@
case 6:
getDB().message.setVisibility(View.GONE);
break;
+ case 7:
+ identify();
+ break;
default:
break;
}
@@ -681,94 +724,76 @@
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 +853,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 +888,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 +902,7 @@
//鎵句笉鍒帮紝鍒犻櫎鎸囩汗
if(deleteID(fingerId)) {
//缁х画鏌ユ寚绾�
- identify();
+ handler.sendEmptyMessageDelayed(7,2000);
}else {
showToast("鏈煡璇㈠埌鐢ㄦ埛");
}
@@ -919,12 +966,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 +975,6 @@
private void identify() {
if (!mDevComm.IsInit())
return;
-
mBCancel = false;
new Thread(new Runnable() {
int w_nRet;
@@ -991,7 +1032,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 +1086,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