From 9ccd59974993aa9914daf045aa6f2bbb5152047c Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期二, 28 十月 2025 09:49:08 +0800
Subject: [PATCH] 钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java | 335 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 205 insertions(+), 130 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 302f2ad..bcc9095 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
@@ -14,13 +14,19 @@
import android.text.TextUtils;
import android.text.style.TextAppearanceSpan;
import android.view.View;
+import android.view.ViewTreeObserver;
+import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
+import android.widget.Toast;
import com.baidu.idl.main.facesdk.model.BDFaceSDKCommon;
import com.doumee.keyCabinet.MApplication;
import com.doumee.keyCabinet.R;
import com.doumee.keyCabinet.base.MyBaseActivity;
import com.doumee.keyCabinet.databinding.FaceActivityBinding;
+import com.doumee.keyCabinet.event.FaceStatusChangeEvent;
+import com.doumee.keyCabinet.event.JiujinBeginEvent;
+import com.doumee.keyCabinet.event.JiujinResultEvent;
import com.doumee.keyCabinet.event.TimeClockEvent;
import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
import com.doumee.keyCabinet.utils.BraceletLogUtils;
@@ -28,6 +34,7 @@
import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig;
import com.doumee.lib_coremodel.bean.event.ActionEventData;
import com.doumee.lib_coremodel.util.SpUtil;
+import com.doumee.lib_coremodel.util.StringUtil;
import com.example.datalibrary.callback.CameraDataCallback;
import com.example.datalibrary.callback.FaceDetectCallBack;
import com.example.datalibrary.gatecamera.CameraPreviewManager;
@@ -38,8 +45,13 @@
import com.example.datalibrary.model.LivenessModel;
import com.example.datalibrary.model.User;
import com.example.datalibrary.utils.FaceOnDrawTexturViewUtil;
+import com.example.datalibrary.utils.ToastUtils;
+import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.math.BigDecimal;
import dagger.hilt.android.AndroidEntryPoint;
@@ -73,11 +85,24 @@
getDB().setModel(getVM());
mContext = this;
flag = MApplication.getLoginBean().getFlag();
- statusFsm(flag==0?0:2);
- //todo wmf 瑙e紑
- /*FaceSDKManager.getInstance().initDataBases(this);
- initFaceCheck();*/
+ FaceSDKManager.getInstance().initDataBases(this);
+ initFaceCheck();
initView();
+ if(flag==0){
+ if(MApplication.getConfigBean().getDoubleAuth()==1){
+ statusFsm(0);
+ }else {
+ statusFsm(2);
+ }
+ }else {
+ statusFsm(7);
+ }
+ getDB().tvDjs.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ statusFsm(status);
+ }
+ });
}
@Override
@@ -101,117 +126,103 @@
private void statusFsm(int toStatus){
status = toStatus;
- switch (status){
+ isToChose = false;
+ switch (toStatus){
case 0:
//鍙�-绠$悊鍛樹汉鑴搁獙璇�
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
- getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
- getDB().clRemind.setVisibility(View.VISIBLE);
- getDB().btSk.setVisibility(View.VISIBLE);
-
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clSjSk.setVisibility(View.GONE);
- getDB().clTip1.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.VISIBLE);
+ setFaceModel(0);
break;
case 1:
//鍙�-绠$悊鍛樺埛鍗¢獙璇�
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
- getDB().tvTip.setText("璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�");
- getDB().clRemind.setVisibility(View.GONE);
- getDB().btSk.setVisibility(View.GONE);
-
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clSjSk.setVisibility(View.VISIBLE);
- getDB().clTip1.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.VISIBLE);
+ setFaceModel(2);
break;
case 5:
//鍙�-鍙告満楠岃瘉鏂瑰紡閫夋嫨椤�
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_face);
- getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
- getDB().clRemind.setVisibility(View.VISIBLE);
- getDB().btSk.setVisibility(View.GONE);
-
- getDB().clSjRl.setVisibility(View.VISIBLE);
- getDB().clSjSk.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.GONE);
+ getDB().clSjXuan.setVisibility(View.VISIBLE);
+ getDB().clSjXuan.invalidate();
+ getDB().clSjXuan.requestLayout();
break;
case 2:
//鍙�-鍙告満浜鸿劯楠岃瘉
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
- getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
- getDB().clRemind.setVisibility(View.VISIBLE);
- getDB().btSk.setVisibility(View.VISIBLE);
-
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clSjSk.setVisibility(View.GONE);
- getDB().clTip1.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clSjXuan.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.VISIBLE);
+ setFaceModel(1);
break;
case 3:
//鍙�-鍙告満鍒峰崱楠岃瘉
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
- getDB().tvTip.setText("璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�");
- getDB().clRemind.setVisibility(View.GONE);
- getDB().btSk.setVisibility(View.GONE);
-
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clSjSk.setVisibility(View.VISIBLE);
- getDB().clTip1.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clSjXuan.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.VISIBLE);
+ setFaceModel(2);
break;
case 4:
//鍙�-鍙告満閰掔簿妫�娴�
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("閰掔簿妫�娴�");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_jiujingjiance);
- getDB().tvTip.setText("璇锋嬁璧烽厭绮炬娴嬩华鍚规皵");
- getDB().clRemind.setVisibility(View.GONE);
- getDB().btSk.setVisibility(View.GONE);
-
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clSjSk.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clSjXuan.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.GONE);
+ getDB().clJiu.setVisibility(View.VISIBLE);
+ getDB().clJiu.invalidate();
+ getDB().clJiu.requestLayout();
+ if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getCabinetConfigDataVO()!=null&&
+ MApplication.getConfigBean().getCabinetConfigDataVO().getConcentration()!=null){
+ //寮�濮嬫娴�
+ EventBus.getDefault().post(new JiujinBeginEvent());
+ }else {
+ ToastUtils.toast(this,"鏈幏鍙栧埌閰掔簿娴撳害鎶ヨ鍊�");
+ statusFsm(6);
+ }
break;
case 6:
//鍙�-鍙告満閰掔簿妫�娴嬪け璐�
+ Toast.makeText(mContext, "鍙告満閰掔簿妫�娴嬪け璐�", Toast.LENGTH_SHORT).show();
+ getDB().clJiu.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.VISIBLE);
break;
case 7:
//杩�-鍙告満浜鸿劯楠岃瘉
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
- getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
- getDB().clRemind.setVisibility(View.VISIBLE);
- getDB().btSk.setVisibility(View.VISIBLE);
-
- getDB().clSjSk.setVisibility(View.GONE);
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clTip1.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.VISIBLE);
+ setFaceModel(1);
break;
case 8:
//杩�-鍙告満鍒峰崱楠岃瘉
- getDB().clLogin.setVisibility(View.VISIBLE);
getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
- getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
- getDB().tvTip.setText("璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�");
- getDB().clRemind.setVisibility(View.GONE);
- getDB().btSk.setVisibility(View.GONE);
-
- getDB().clSjSk.setVisibility(View.VISIBLE);
- getDB().clSjRl.setVisibility(View.GONE);
- getDB().clTip1.setVisibility(View.GONE);
+ getDB().clFace.setVisibility(View.GONE);
+ getDB().clCard.setVisibility(View.VISIBLE);
+ setFaceModel(2);
break;
default:
break;
+ }
+ }
+
+ private void setFaceModel(int faceModel){
+ if(faceModel==0){
+ //绠$悊鍛�
+ FaceSDKManager.getInstance().setGroupId("0");
+ isToChose = false;
+ }else if(faceModel==1){
+ //鍙告満
+ FaceSDKManager.getInstance().setGroupId("1");
+ isToChose = false;
+ }else {
+ isToChose = true;
}
}
@@ -222,7 +233,7 @@
switch (type){
case 1:
//鍒囨崲鍒板埛鍗�
- if("0".equals(flag)){
+ if(flag==0){
if(status==0){
statusFsm(1);
}else if(status==2){
@@ -242,23 +253,18 @@
break;
case 4:
//鍒囨崲鍒颁汉鑴�
- if("0".equals(flag)){
+ if(flag==0){
if(status==1){
- statusFsm(5);
+ statusFsm(0);
}else if(status==3){
- statusFsm(6);
+ statusFsm(2);
}
}else {
- startActivity(KeyCabinetActivity.class);
- finish();
+ statusFsm(7);
}
-
- //todo wmf
- //statusFsm("0".equals(flag)?);
break;
case 5:
- startActivity(KeyCabinetActivity.class);
- finish();
+ statusFsm(4);
break;
default:
break;
@@ -287,13 +293,32 @@
CameraPreviewManager.getInstance().startPreview(glMantleSurfacView,
SingleBaseConfig.getBaseConfig().getRgbVideoDirection() , PREFER_WIDTH, PERFER_HEIGH);
getDB().tvJg2.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE);
+
+ //ic鍗¤鍙�
+ getDB().etEwm.requestFocus();
+ getDB().etEwm.setShowSoftInputOnFocus(false);
+ hideSoftKeyboard(getDB().etEwm);
+ getDB().etEwm.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ hideSoftKeyboard(getDB().etEwm);
+ }
+ });
}
+
+ private void hideSoftKeyboard(View view) {
+ InputMethodManager imm = (InputMethodManager)
+ getSystemService(Context.INPUT_METHOD_SERVICE);
+ if (imm != null) {
+ imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ }
+ }
+
@Override
protected void onResume() {
super.onResume();
- //todo wmf 瑙e紑
- //startTestOpenDebugRegisterFunction();
+ startTestOpenDebugRegisterFunction();
}
private void startTestOpenDebugRegisterFunction() {
@@ -329,9 +354,7 @@
handler.sendEmptyMessageDelayed(1,4000);
glMantleSurfacView.setFrame();
bdFaceImageConfig.setData(data);
- //蹇呴』浼氬憳
- String groupId = "0";
- FaceSDKManager.getInstance().onDetectCheck(groupId,bdFaceImageConfig, null, null,
+ FaceSDKManager.getInstance().onDetectCheck(bdFaceImageConfig, null, null,
bdFaceCheckConfig, faceDetectCallBack);
}
}
@@ -352,19 +375,25 @@
@Override
public void onTip(int code, String msg) {
- getDB().clFail.setVisibility(View.VISIBLE);
+ if(isToChose){
+ return;
+ }
+ /*getDB().clFail.setVisibility(View.VISIBLE);
getDB().tv4.setText(msg);
- handler.sendEmptyMessageDelayed(0,1000);
+ handler.sendEmptyMessageDelayed(0,1000);*/
System.out.println("==isOk==>onTip:"+msg);
}
@Override
public void onFaceDetectDarwCallback(LivenessModel livenessModel) {
//System.out.println("==rgbInstance==>onFaceDetectDarwCallback");
+ if(isToChose){
+ return;
+ }
if (isCompareCheck) {
- getDB().clFail.setVisibility(View.VISIBLE);
+ /*getDB().clFail.setVisibility(View.VISIBLE);
getDB().tv4.setText(getString(R.string.face_tip2));
- handler.sendEmptyMessageDelayed(0,1000);
+ handler.sendEmptyMessageDelayed(0,1000);*/
}
// 缁樺埗浜鸿劯妗�
showFrame(livenessModel);
@@ -397,6 +426,26 @@
break;
case 1:
//isCheckFace = false;
+ break;
+ case 3:
+ Toast.makeText(mContext, "閰掔簿妫�鏌ヨ繑鍥�", Toast.LENGTH_SHORT).show();
+ if(new BigDecimal(MApplication.getConfigBean().getCabinetConfigDataVO().getConcentration())
+ .compareTo(resultEvent.getConcentration())>=0){
+ //閰掔簿閫氳繃
+ getDB().clJiujinOk.setVisibility(View.VISIBLE);
+ handler.sendEmptyMessageDelayed(4,1000);
+ }else {
+ //閰掔簿涓嶉�氳繃
+ getVM().alcoholTestAlarm("");
+ Toast.makeText(mContext, "閰掔簿妫�娴嬩笉閫氳繃", Toast.LENGTH_SHORT).show();
+ statusFsm(6);
+ }
+ break;
+ case 4:
+ startActivity(KeyCabinetActivity.class);
+ finish();
+ break;
+ default:
break;
}
}
@@ -431,11 +480,10 @@
handler.removeCallbacksAndMessages(null);
handler = null;
dataCallback = null;
- //CameraPreviewManager.getInstance().destroy();
+ CameraPreviewManager.getInstance().destroy();
faceDetectCallBack = null;
glMantleSurfacView = null;
- //todo wmf 瑙e紑
- //FaceSDKManager.getInstance().destroy();
+ FaceSDKManager.getInstance().destroy();
}
private int resultCount = 0;
@@ -451,11 +499,14 @@
runOnUiThread(new Runnable() {
@Override
public void run() {
+ if(isToChose) {
+ return;
+ }
if (livenessModel == null) {
if (isCompareCheck) {
- getDB().clFail.setVisibility(View.VISIBLE);
+ /*getDB().clFail.setVisibility(View.VISIBLE);
getDB().tv4.setText(getString(R.string.face_tip2));
- handler.sendEmptyMessageDelayed(0,1000);
+ handler.sendEmptyMessageDelayed(0,1000);*/
}
System.out.println("======>浜鸿劯璇嗗埆澶辫触");
return;
@@ -463,37 +514,21 @@
if (livenessModel.isQualityCheck()){
//鏄惁閫氳繃璐ㄩ噺妫�娴�
if (isCompareCheck) {
- getDB().clFail.setVisibility(View.VISIBLE);
+ /*getDB().clFail.setVisibility(View.VISIBLE);
getDB().tv4.setText(getString(R.string.face_tip2));
- handler.sendEmptyMessageDelayed(0,1000);
+ handler.sendEmptyMessageDelayed(0,1000);*/
}
} else {
User user = livenessModel.getUser();
if (user == null) {
mUser = null;
if (isCompareCheck) {
- getDB().clFail.setVisibility(View.VISIBLE);
+ /*getDB().clFail.setVisibility(View.VISIBLE);
getDB().tv4.setText(getString(R.string.face_tip2));
- handler.sendEmptyMessageDelayed(0,1000);
+ handler.sendEmptyMessageDelayed(0,1000);*/
}
} else {
- //浼樺厛浼氬憳
- if("0".equals(user.getGroupId())){
-
- }else {
- if (isCompareCheck) {
- getDB().clFail.setVisibility(View.VISIBLE);
- getDB().tv4.setText(getString(R.string.face_tip2));
- handler.sendEmptyMessageDelayed(0,1000);
- }
- resultCount++;
- if (resultCount >= 3) {
- resultCount = 0;
- }else {
- return;
- }
- }
mUser = user;
if (isCompareCheck) {
getDB().clFail.setVisibility(View.GONE);
@@ -506,19 +541,38 @@
nameText.setTextColor(Color.parseColor("#0dc6ff"));
nameText.setText(FileUtils.spotString(user.getUserName()) + " 娆㈣繋鎮�");*/
}
- if(!isToChose) {
- isToChose = true;
- //璇嗗埆鎴愬姛锛岃烦杞�
- Bundle bundle = new Bundle();
- bundle.putString("busId", user.getUserId());
- bundle.putString("type", "0");
- //Toast.makeText(mContext, user.getUserName(), Toast.LENGTH_SHORT).show();
- //startActivity(ChoseTicketActivity.class, bundle);
+ 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);
+ startActivity(KeyCabinetActivity.class);
+ finish();
}
}
}
}
});
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void FaceStatusChangeEvent(FaceStatusChangeEvent e){
+ if(!isFinishing()){
+ statusFsm(e.getStatus());
+ }
}
boolean isToChose = false;
@@ -533,7 +587,28 @@
super.onPause();
isPause = false;
isTimePause = true;
- //todo wmf 瑙e紑
- //CameraPreviewManager.getInstance().stopPreview();
+ CameraPreviewManager.getInstance().stopPreview();
+ }
+
+ private JiujinResultEvent resultEvent;
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void JiujinResultEvent(JiujinResultEvent e){
+ if(!isFinishing()){
+ //Toast.makeText(mContext, "閰掔簿妫�娴嬭繑鍥烇細"+e.isOk(), Toast.LENGTH_SHORT).show();
+ if(!e.isOk()){
+ statusFsm(6);
+ }else {
+ if(resultEvent==null){
+ resultEvent = e;
+ }else if(resultEvent.getConcentration().compareTo(e.getConcentration())<0){
+ //鍊兼洿澶�
+ resultEvent = e;
+ }
+ if(handler.hasMessages(3)){
+ handler.removeMessages(3);
+ }
+ handler.sendEmptyMessageDelayed(3,1000);
+ }
+ }
}
}
\ No newline at end of file
--
Gitblit v1.9.3