From 338e7ed513d21d1468c0908fdca2ea4097ee0621 Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期三, 10 十二月 2025 18:42:42 +0800
Subject: [PATCH] 指纹钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java | 556 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 483 insertions(+), 73 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 e935ae4..ca5959f 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
@@ -9,6 +9,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.SystemClock;
import android.text.Editable;
import android.text.SpannableString;
import android.text.Spanned;
@@ -25,21 +26,29 @@
import com.doumee.keyCabinet.MApplication;
import com.doumee.keyCabinet.R;
import com.doumee.keyCabinet.base.MyBaseActivity;
+import com.doumee.keyCabinet.dao.DaoManager;
+import com.doumee.keyCabinet.dao.FingerPrintDo;
import com.doumee.keyCabinet.databinding.FaceActivityBinding;
import com.doumee.keyCabinet.event.FaceStatusChangeEvent;
+import com.doumee.keyCabinet.event.HttpEvent;
import com.doumee.keyCabinet.event.JiujinBeginEvent;
import com.doumee.keyCabinet.event.JiujinResultEvent;
+import com.doumee.keyCabinet.event.RefreshFingerEvent;
import com.doumee.keyCabinet.event.TimeClockEvent;
import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
import com.doumee.keyCabinet.utils.BraceletLogUtils;
import com.doumee.keyCabinet.utils.face.FaceUtils;
import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig;
+import com.doumee.keyCabinet.utils.usb.DevComm;
+import com.doumee.keyCabinet.utils.usb.IUsbConnState;
import com.doumee.lib_coremodel.bean.event.ActionEventData;
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;
import com.example.datalibrary.gatecamera.CameraPreviewManager;
import com.example.datalibrary.gl.view.GlMantleSurfacView;
import com.example.datalibrary.manager.FaceSDKManager;
@@ -55,6 +64,8 @@
import org.greenrobot.eventbus.ThreadMode;
import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
import dagger.hilt.android.AndroidEntryPoint;
@@ -111,6 +122,7 @@
@Override
public void initData(@Nullable Bundle savedInstanceState) {
//getPermission();
+ initDev();
}
@Override
@@ -120,6 +132,12 @@
private SpannableString getErrPhoneText(){
String phone = MApplication.getConfigBean().getLinkPhone();
+ if(phone==null){
+ String text = "濡傛湁闂璇疯仈绯荤鐞嗗憳";
+ SpannableString styledText = new SpannableString(text);
+ styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return styledText;
+ }
String text = "濡傛湁闂璇疯仈绯荤鐞嗗憳"+phone;
SpannableString styledText = new SpannableString(text);
styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -130,27 +148,41 @@
private void statusFsm(int toStatus){
status = toStatus;
isToChose = false;
+ getDB().etEwm.requestFocus();
switch (toStatus){
case 0:
//鍙�-绠$悊鍛樹汉鑴搁獙璇�
getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
getDB().clCard.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clFace.setVisibility(View.VISIBLE);
setFaceModel(0);
+ setFingerStatus(1);
+ break;
+ case 10:
+ //鍙�-绠$悊鍛樻寚绾归獙璇�
+ getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.VISIBLE);
+ setFaceModel(2);
+ setFingerStatus(0);
break;
case 1:
//鍙�-绠$悊鍛樺埛鍗¢獙璇�
getDB().etEwm.setText("");
- getDB().etEwm.requestFocus();
getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
getDB().clFace.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clCard.setVisibility(View.VISIBLE);
setFaceModel(2);
+ setFingerStatus(1);
break;
case 5:
//鍙�-鍙告満楠岃瘉鏂瑰紡閫夋嫨椤�
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
getDB().clFace.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clCard.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.GONE);
getDB().clSjXuan.setVisibility(View.VISIBLE);
@@ -161,9 +193,21 @@
//鍙�-鍙告満浜鸿劯楠岃瘉
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
getDB().clCard.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clSjXuan.setVisibility(View.GONE);
getDB().clFace.setVisibility(View.VISIBLE);
setFaceModel(1);
+ setFingerStatus(1);
+ break;
+ case 11:
+ //鍙�-鍙告満鎸囩汗楠岃瘉
+ getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clSjXuan.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.VISIBLE);
+ setFaceModel(2);
+ setFingerStatus(0);
break;
case 3:
//鍙�-鍙告満鍒峰崱楠岃瘉
@@ -171,15 +215,18 @@
getDB().etEwm.requestFocus();
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
getDB().clFace.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clSjXuan.setVisibility(View.GONE);
getDB().clCard.setVisibility(View.VISIBLE);
setFaceModel(2);
+ setFingerStatus(1);
break;
case 4:
//鍙�-鍙告満閰掔簿妫�娴�
getDB().tvTitle.setText("閰掔簿妫�娴�");
getDB().clFace.setVisibility(View.GONE);
getDB().clCard.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clSjXuan.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.GONE);
getDB().clJiu.setVisibility(View.VISIBLE);
@@ -198,15 +245,26 @@
//鍙�-鍙告満閰掔簿妫�娴嬪け璐�
//Toast.makeText(mContext, "鍙告満閰掔簿妫�娴嬪け璐�", Toast.LENGTH_SHORT).show();
getDB().clJiu.setVisibility(View.GONE);
- getDB().tvJg1.setText("閰掔簿妫�娴嬪紓甯革紝璇烽噸鏂版娴�");
+ getDB().tvJg1.setText("閰掔簿妫�娴嬫搷浣滀笉褰擄紝璇烽噸鏂版娴�");
getDB().clTip1.setVisibility(View.VISIBLE);
break;
case 7:
//杩�-鍙告満浜鸿劯楠岃瘉
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
getDB().clCard.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.GONE);
getDB().clFace.setVisibility(View.VISIBLE);
setFaceModel(1);
+ setFingerStatus(1);
+ break;
+ case 12:
+ //杩�-鍙告満鎸囩汗楠岃瘉
+ getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clZw.setVisibility(View.VISIBLE);
+ setFaceModel(2);
+ setFingerStatus(0);
break;
case 8:
//杩�-鍙告満鍒峰崱楠岃瘉
@@ -216,6 +274,7 @@
getDB().clFace.setVisibility(View.GONE);
getDB().clCard.setVisibility(View.VISIBLE);
setFaceModel(2);
+ setFingerStatus(1);
break;
case 9:
//鍙�-鍙告満閰掔簿妫�娴嬪け璐�
@@ -242,21 +301,57 @@
}
}
+ private void setFingerStatus(int fs){
+ if(fs==0){
+ //寮�濮嬫娴�
+ identify();
+ }else {
+ //鍏抽棴妫�娴�
+ mBCancel = true;
+ }
+ }
+
private Bitmap bitmap;
private byte[] secondFeature = new byte[512];
@Override
protected void doRegister(int type, ActionEventData data) {
switch (type){
case 1:
- //鍒囨崲鍒板埛鍗�
if(flag==0){
- if(status==0){
+ //鍒囨崲鍒扮鐞嗗憳鍒峰崱
+ if(status==0||status==10){
statusFsm(1);
- }else if(status==2){
+ }else if(status==2||status==11){
statusFsm(3);
}
}else {
+ //杩�-鍙告満鍒峰崱楠岃瘉
statusFsm(8);
+ }
+ break;
+ case 9:
+ //鎸囩汗楠岃瘉
+ if(status==0) {
+ statusFsm(10);
+ }else {
+ statusFsm(12);
+ }
+ break;
+ case 10:
+ //鍙告満鎸囩汗楠岃瘉
+ statusFsm(11);
+ break;
+ case 11:
+ //鍒峰崱-->鎸囩汗楠岃瘉
+ if(flag==0){
+ if(status==1){
+ statusFsm(10);
+ }else {
+ statusFsm(11);
+ }
+ }else {
+ //杩�-鍙告満鎸囩汗
+ statusFsm(12);
}
break;
case 2:
@@ -270,9 +365,9 @@
case 4:
//鍒囨崲鍒颁汉鑴�
if(flag==0){
- if(status==1){
+ if(status==1||status==10){
statusFsm(0);
- }else if(status==3){
+ }else if(status==3||status==11){
statusFsm(2);
}
}else {
@@ -290,13 +385,29 @@
//鍙告満ic鍗℃垚鍔�
if(flag==0) {
//鍙�
- statusFsm(4);
+ if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getAlcoholStatus()==1) {
+ //闈為厭绮炬娴�
+ startActivity(KeyCabinetActivity.class);
+ finish();
+ }else {
+ //閰掔簿妫�娴�
+ statusFsm(4);
+ }
}else {
//杩�
startActivity(KeyCabinetActivity.class);
finish();
}
break;
+ case 8:
+ getDB().message.setText(data.getData().get("obj").toString());
+ getDB().message.setVisibility(View.VISIBLE);
+ handler.sendEmptyMessageDelayed(6,2000);
+ getDB().message.invalidate();
+ getDB().message.requestLayout();
+ EventBus.getDefault().post(new HttpEvent("ic鍗�+++++++"+data.getData().get("type").toString()));
+ break;
+
default:
break;
}
@@ -328,7 +439,7 @@
//ic鍗¤鍙�
getDB().etEwm.requestFocus();
getDB().etEwm.setFocusable(true);
- getDB().etEwm.setShowSoftInputOnFocus(true);
+ getDB().etEwm.setShowSoftInputOnFocus(false);
hideSoftKeyboard(getDB().etEwm);
getDB().etEwm.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
@@ -336,6 +447,7 @@
hideSoftKeyboard(getDB().etEwm);
}
});
+
getDB().etEwm.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -354,6 +466,8 @@
return;
}
if(status!=1&&status!=3&&status!=8){
+ getDB().etEwm.setText("");
+ getDB().etEwm.requestFocus();
return;
}
if(handler.hasMessages(5)){
@@ -425,10 +539,24 @@
//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 (Exception e){
+ e.printStackTrace();
+ ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊2:"+e.getMessage());
}
- checkOpenDebugResult(livenessModel);
+
}
@Override
@@ -439,7 +567,7 @@
/*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
@@ -467,11 +595,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());
}
}
@@ -491,6 +623,7 @@
if(new BigDecimal(MApplication.getConfigBean().getCabinetConfigDataVO().getConcentration())
.compareTo(resultEvent.getConcentration())>=0){
//閰掔簿閫氳繃
+ getVM().alcoholTestAlarm(resultEvent.getConcentration().toString());
getDB().clJiujinOk.setVisibility(View.VISIBLE);
handler.sendEmptyMessageDelayed(4,1000);
}else {
@@ -498,6 +631,8 @@
getVM().alcoholTestAlarm(resultEvent.getConcentration().toString());
//Toast.makeText(mContext, "閰掔簿妫�娴嬭秴鏍�", Toast.LENGTH_SHORT).show();
statusFsm(9);
+ //鍐嶆娴嬶紝灏嗗0闊冲叧闂�
+ EventBus.getDefault().post(new JiujinBeginEvent());
}
break;
case 4:
@@ -515,6 +650,12 @@
}
getDB().etEwm.setText("");
getDB().etEwm.requestFocus();
+ break;
+ case 6:
+ getDB().message.setVisibility(View.GONE);
+ break;
+ case 7:
+ identify();
break;
default:
break;
@@ -555,88 +696,103 @@
faceDetectCallBack = null;
glMantleSurfacView = null;
FaceSDKManager.getInstance().destroy();
+ mBCancel = true;
+ if(mDevComm!=null){
+ mDevComm.CloseComm();
+ }
}
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) {
+ try {
+ if (isFinishing()) {
+ return;
+ }
+ if (handler == null) {
+ return;
+ }
+ // 褰撴湭妫�娴嬪埌浜鸿劯UI鏄剧ず
+ 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) {
+ //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;
- if (isCompareCheck) {
+ }
+ } 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);*/
- }
+ }
- } else {
- mUser = user;
- if (isCompareCheck) {
- getDB().clFail.setVisibility(View.GONE);
- if(handler.hasMessages(0)) {
- handler.removeMessages(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);
+ }
/*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()) + " 娆㈣繋鎮�");*/
- }
- 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);
- 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 (Exception e){
+ e.printStackTrace();
+ ToastView.show(MApplication.mContext,"浜鸿劯鎶ラ敊锛�"+e.getMessage());
+ }
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -665,6 +821,9 @@
@Subscribe(threadMode = ThreadMode.MAIN)
public void JiujinResultEvent(JiujinResultEvent e){
if(!isFinishing()){
+ if(status!=4&&status!=6){
+ return;
+ }
//Toast.makeText(mContext, "閰掔簿妫�娴嬭繑鍥烇細"+e.isOk(), Toast.LENGTH_SHORT).show();
if(!e.isOk()){
getDB().clJiujinProgress.setVisibility(View.GONE);
@@ -685,4 +844,255 @@
}
}
+ /**------------------------鎸囩汗妯″潡--------------------------*/
+
+ private void getUserIdByFingerId(int fingerId){
+ runOnUiThread(new Runnable() {
+ @Override
+ 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(3);
+ if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getAlcoholStatus()==1) {
+ //闈為厭绮炬娴�
+ startActivity(KeyCabinetActivity.class);
+ finish();
+ }else {
+ //閰掔簿妫�娴�
+ EventBus.getDefault().post(new FaceStatusChangeEvent(4));
+ }
+ }else if(status==12){
+ //杩�-鍙告満
+ if(!map.containsKey("1")){
+ showToast("鎮ㄥ綋鍓嶄笉鏄徃鏈�");
+ handler.sendEmptyMessageDelayed(7,2000);
+ return;
+ }
+ MApplication.getLoginBean().setMemberId(printDo.getMemberId());
+ MApplication.getLoginBean().setAuthType(3);
+ startActivity(KeyCabinetActivity.class);
+ finish();
+ }
+ }else {
+ //鎵句笉鍒帮紝鍒犻櫎鎸囩汗
+ if(deleteID(fingerId)) {
+ //缁х画鏌ユ寚绾�
+ handler.sendEmptyMessageDelayed(7,2000);
+ }else {
+ showToast("鏈煡璇㈠埌鐢ㄦ埛");
+ }
+ }
+ }
+ });
+ }
+
+ private static DevComm mDevComm;
+ //鏄惁缁撴潫褰曞叆
+ private boolean mBCancel = true;
+ private byte[] m_binImage = new byte[1024 * 100];
+ private final IUsbConnState m_IConnectionHandler = new IUsbConnState() {
+ @Override
+ public void onUsbConnected() {
+ //String[] w_strInfo = new String[1];
+ /*if (mDevComm.Run_TestConnection() == DevComm.ERR_SUCCESS) {
+ if (mDevComm.Run_GetDeviceInfo(w_strInfo) == DevComm.ERR_SUCCESS) {
+
+ getVM().addInfo("杩炴帴usb鎴愬姛");
+ }else {
+ getVM().addInfo("杩炴帴璁惧澶辫触1锛�" + mDevComm.Run_GetDeviceInfo(w_strInfo));
+ }
+ } else {
+ getVM().addInfo("杩炴帴璁惧澶辫触2锛�" + mDevComm.Run_TestConnection());
+ }*/
+ }
+
+ @Override
+ public void onUsbPermissionDenied() {
+ Toast.makeText(mContext, "鏃犺澶囨潈闄�", Toast.LENGTH_SHORT).show();
+ }
+
+ @Override
+ public void onDeviceNotFound() {
+ Toast.makeText(mContext, "鏈彂鐜版寚绾硅澶�", Toast.LENGTH_SHORT).show();
+ }
+ };
+
+ private void initDev(){
+ mDevComm = new DevComm(this, m_IConnectionHandler);
+ openDevice();
+ }
+ /**
+ * 寮�鍚澶�
+ */
+ private void openDevice() {
+ String[] w_strInfo = new String[1];
+
+ if (mDevComm != null) {
+ if (!mDevComm.IsInit()) {
+ if (mDevComm.OpenComm("USB", 19200) == false) {
+ EventBus.getDefault().post(new HttpEvent("鍒濆鍖栬澶囧け璐�"));
+ return;
+ }
+ }
+ if (mDevComm.Run_TestConnection() == DevComm.ERR_SUCCESS) {
+ if (mDevComm.Run_GetDeviceInfo(w_strInfo) == DevComm.ERR_SUCCESS) {
+ EventBus.getDefault().post(new HttpEvent("寮�鍚澶囨垚鍔�"));
+ } else {
+ 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()));
+ }
+ });
+ mDevComm.CloseComm();
+ }
+ }
+ }
+
+ private void identify() {
+ if (!mDevComm.IsInit())
+ return;
+ mBCancel = false;
+ new Thread(new Runnable() {
+ int w_nRet;
+ int[] w_nID = new int[1];
+ int[] w_nLearned = new int[1];
+ int[] w_nWidth = new int[1];
+ int[] w_nHeight = new int[1];
+
+ @Override
+ public void run() {
+
+ while (true) {
+ if(mBCancel){
+ //鍋滄
+ return;
+ }
+ if (capturing() < 0)
+ return;
+ //鏉惧紑鎵嬫寚
+
+ // Up Cpatured Image
+ if (mDevComm.m_nConnected == 2) {
+ w_nRet = mDevComm.Run_UpImage(0, m_binImage, w_nWidth, w_nHeight);
+
+ if (w_nRet != DevComm.ERR_SUCCESS) {
+ showToast(DevComm.GetErrorMsg(w_nRet));
+ return;
+ }
+ }
+
+ // Create template
+ w_nRet = mDevComm.Run_Generate(0);
+
+ if (w_nRet != DevComm.ERR_SUCCESS) {
+ if (w_nRet == DevComm.ERR_CONNECTION) {
+ showToast(DevComm.GetErrorMsg(w_nRet));
+ return;
+ } else {
+ SystemClock.sleep(1000);
+ continue;
+ }
+ }
+
+ // Identify
+ w_nRet = mDevComm.Run_Search(0, 1, 500, w_nID, w_nLearned);
+ if(mBCancel){
+ //鍋滄
+ return;
+ }
+ if (w_nRet == DevComm.ERR_SUCCESS) {
+ //鎵惧埌浜�
+ //showToast("鎵惧埌浜嗭紝"+w_nID[0]);
+ getUserIdByFingerId(w_nID[0]);
+ break;
+ //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("鏈娴嬪埌璇ユ寚绾�");
+ /*m_strPost = String.format("\r\nMatch Time : %dms", m_nPassedTime);
+ m_strPost = GetErrorMsg(w_nRet) + m_strPost;*/
+ }
+ }
+ }
+ }).start();
+ }
+
+ /**
+ * 鑾峰彇鎸囩汗
+ * @return
+ */
+ private int capturing() {
+ int w_nRet;
+ while (true) {
+ if(isFinishing()){
+ break;
+ }
+ w_nRet = mDevComm.Run_GetImage();
+
+ if (w_nRet == DevComm.ERR_CONNECTION) {
+ showToast("閫氫俊閿欒!");
+ return -1;
+ } else if (w_nRet == DevComm.ERR_SUCCESS) {
+ break;
+ }
+ if (mBCancel) {
+ return -1;
+ }
+ }
+ return 0;
+ }
+
+ private boolean deleteID(int fingerId) {
+ int m_nUserID = fingerId;
+ int w_nRet;
+
+ if (!mDevComm.IsInit())
+ return false;
+
+ w_nRet = mDevComm.Run_DelChar(m_nUserID, m_nUserID);
+ if (w_nRet != DevComm.ERR_SUCCESS&&w_nRet!=DevComm.ERR_TMPL_EMPTY) {
+ //鍒犻櫎澶辫触
+ return false;
+ }
+ return true;
+ }
+
+ private void showToast(String msg){
+ if(!isFinishing()){
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ ToastView.show(MApplication.mContext,msg);
+ }
+ });
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3