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/res/layout/popup_menu_home.xml                                    |   35 -
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/base/MyBaseActivity.java               |    2 
 keyCabinet-android/app/src/main/res/layout/face_activity.xml                                      |  707 +++++++++++++++++++---------
 keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml                              |   12 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java                |    4 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java              |  335 ++++++++-----
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java                 |    6 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java                    |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java              |  113 ++-
 keyCabinet-android/app/src/main/res/values/styles.xml                                             |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java                    |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinBeginEvent.java            |    4 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java     |    9 
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/img_loading.png                                 |    0 
 keyCabinet-android/datalibrary/src/main/java/com/example/datalibrary/manager/FaceSDKManager.java  |   17 
 keyCabinet-android/app/src/main/res/layout/main_activity.xml                                      |   32 +
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_pass.png                                     |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java           |    4 
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_viewfinder.png                               |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java                    |    4 
 /dev/null                                                                                         |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java                         |    3 
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png                              |    0 
 keyCabinet-android/app/src/main/res/drawable/shape_jiujin_ok.xml                                  |    6 
 keyCabinet-android/lib_coremodel/src/main/res/layout/toast_view.xml                               |    2 
 keyCabinet-android/app/src/main/AndroidManifest.xml                                               |    3 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/FaceStatusChangeEvent.java       |   17 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java        |    3 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java |   17 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinResultEvent.java           |   29 +
 keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java                |   21 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java       |    2 
 32 files changed, 896 insertions(+), 497 deletions(-)

diff --git a/keyCabinet-android/app/src/main/AndroidManifest.xml b/keyCabinet-android/app/src/main/AndroidManifest.xml
index 4ee6977..31877b1 100644
--- a/keyCabinet-android/app/src/main/AndroidManifest.xml
+++ b/keyCabinet-android/app/src/main/AndroidManifest.xml
@@ -44,7 +44,8 @@
             android:exported="false" />
         <activity
             android:name="com.doumee.keyCabinet.ui.face.FaceActivity"
-            android:exported="false" />
+            android:exported="false"
+            android:windowSoftInputMode="stateAlwaysHidden|adjustPan"/>
         <activity
             android:name="com.doumee.keyCabinet.ui.main.MainActivity"
             android:exported="true"
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/base/MyBaseActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/base/MyBaseActivity.java
index dfab7c0..b9533e3 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/base/MyBaseActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/base/MyBaseActivity.java
@@ -103,7 +103,7 @@
             if(isFinishing()){
                 return;
             }
-            timeChange(String.format(getString(R.string.time_djs),millisUntilFinished/1000));
+            timeChange((millisUntilFinished/1000)+"s");
         }
     };
 
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java
index f102a58..f271c05 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java
@@ -5,7 +5,7 @@
 //浜鸿劯
 public class FaceUserBean {
     private String faceImg;
-    private String memberId;
+    private Integer memberId;
     private String memberName;
 
     //0:绠$悊鍛橈紝1锛氱敤鎴�
@@ -21,11 +21,11 @@
         this.faceImg = faceImg;
     }
 
-    public String getMemberId() {
+    public Integer getMemberId() {
         return memberId;
     }
 
-    public void setMemberId(String memberId) {
+    public void setMemberId(Integer memberId) {
         this.memberId = memberId;
     }
 
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java
index 7a6d3be..8563de9 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java
@@ -3,7 +3,7 @@
 //褰撳墠鐧诲綍淇℃伅
 public class LoginBean {
     private Integer autoMemberId;
-    private Integer memberId = 6572;
+    private Integer memberId;
 
     //鐢ㄦ埛楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱
     private int authType;
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/FaceStatusChangeEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/FaceStatusChangeEvent.java
new file mode 100644
index 0000000..e92bc0f
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/FaceStatusChangeEvent.java
@@ -0,0 +1,17 @@
+package com.doumee.keyCabinet.event;
+
+public class FaceStatusChangeEvent {
+    private int status;
+
+    public FaceStatusChangeEvent(int status) {
+        this.status = status;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinBeginEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinBeginEvent.java
new file mode 100644
index 0000000..e097e49
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinBeginEvent.java
@@ -0,0 +1,4 @@
+package com.doumee.keyCabinet.event;
+
+public class JiujinBeginEvent {
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinResultEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinResultEvent.java
new file mode 100644
index 0000000..e763199
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/JiujinResultEvent.java
@@ -0,0 +1,29 @@
+package com.doumee.keyCabinet.event;
+
+import java.math.BigDecimal;
+
+public class JiujinResultEvent {
+    private boolean isOk;
+    private BigDecimal concentration;
+
+    public JiujinResultEvent(boolean isOk, BigDecimal concentration) {
+        this.isOk = isOk;
+        this.concentration = concentration;
+    }
+
+    public boolean isOk() {
+        return isOk;
+    }
+
+    public void setOk(boolean ok) {
+        isOk = ok;
+    }
+
+    public BigDecimal getConcentration() {
+        return concentration;
+    }
+
+    public void setConcentration(BigDecimal concentration) {
+        this.concentration = concentration;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
index b2cf275..423637c 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
@@ -22,7 +22,8 @@
 
 public interface Apis {
     //娴嬭瘯鏈�
-    String HTTP = "http://192.168.1.45:10010/";
+    //String HTTP = "http://192.168.1.45:10010/";
+    String HTTP = "http://192.168.0.212/system_gateway/";
     String HEAT_HTTP = "do?c=220301";
     /**
      * 鏌ヨ鐗堟湰淇℃伅
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
index 0c5ee94..24a18a7 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
@@ -205,12 +205,12 @@
                                 if (ret == 128) {
                                     Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getMemberName());
                                     //鎻掑叆鏁版嵁搴�
-                                    User user = FaceApi.getInstance().getByUserId(bean.getGroupId(), bean.getMemberId());
+                                    User user = FaceApi.getInstance().getByUserId(bean.getGroupId(), bean.getMemberId().toString());
                                     boolean isSave = false;
                                     if (user == null) {
                                         //鏂板
                                         isSave = FaceApi.getInstance().registerUserIntoDBmanager(bean.getGroupId(),
-                                                bean.getMemberId(), bean.getMemberName(), bean.getFaceImg(), JSON.toJSONString(bean), secondFeature);
+                                                bean.getMemberId().toString(), bean.getMemberName(), bean.getFaceImg(), JSON.toJSONString(bean), secondFeature);
                                     } else {
                                         //鏇存柊
                                         user.setUserName(bean.getMemberName());
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
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java
index 9a45189..3b5c511 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java
@@ -56,7 +56,7 @@
                                     MApplication.getLoginBean().setAutoMemberId(response.getData());
                                     //doAction();
                                 }else {
-                                    MApplication.getLoginBean().setAutoMemberId(response.getData());
+                                    MApplication.getLoginBean().setMemberId(response.getData());
                                     MApplication.getLoginBean().setAuthType(1);
                                     //doAction();
                                 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java
index 3db3550..188f7a9 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java
@@ -110,7 +110,7 @@
                     public void onNext(@NonNull BaseResponse response) {
                         if(200==response.getCode()){
                             //寮�闂�
-                            toast("寮�闂ㄦ帴鍙f垚鍔�");
+                            EventBus.getDefault().post(new HttpEvent("寮�闂ㄦ帴鍙f垚鍔�"));
                             doAction(2);
                         }else {
                             toast(response.getMessage());
@@ -147,7 +147,6 @@
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
                         EventBus.getDefault().post(new HttpEvent("鍏抽棴鏌滄牸鎺ュ彛璋冪敤鎴愬姛"));
-                        toast("鍏抽棴鏌滄牸:"+response.getMessage());
                     }
 
                     @Override
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
index 2a338f5..94a9439 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
@@ -160,8 +160,8 @@
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
                         if(200==response.getCode()){
+                            EventBus.getDefault().post(new HttpEvent("鎵归噺寮�闂� - 绠$悊鍛樻帴鍙f垚鍔�"));
                             if(isAll) {
-                                toast("鎵归噺寮�闂ㄦ垚鍔�");
                                 doAction(8);
                             }else {
                                 doAction(10);
@@ -195,8 +195,8 @@
                 .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
+                        EventBus.getDefault().post(new HttpEvent("鏍囪鏌滄牸姝e父鎺ュ彛鎴愬姛"));
                         if(200==response.getCode()){
-                            toast("鏍囪鏌滄牸姝e父鎴愬姛");
                             getCabinetDetail();
                         }else {
                             toast(response.getMessage());
@@ -227,7 +227,7 @@
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
                         if(200==response.getCode()){
-                            toast("鏍囪鏌滄牸鏁呴殰鎴愬姛");
+                            EventBus.getDefault().post(new HttpEvent("鏍囪鏌滄牸鏁呴殰鎺ュ彛鎴愬姛"));
                             getCabinetDetail();
                         }else {
                             toast(response.getMessage());
@@ -258,7 +258,7 @@
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
                         if(200==response.getCode()){
-                            toast("鏍囪缁翠慨淇濆吇鎴愬姛");
+                            EventBus.getDefault().post(new HttpEvent("鏍囪缁翠慨淇濆吇鎺ュ彛鎴愬姛"));
                             getCabinetDetail();
                         }else {
                             toast(response.getMessage());
@@ -296,6 +296,7 @@
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
                         if(response.getCode()==200){
+                            EventBus.getDefault().post(new HttpEvent("鍏抽棴鏌滄牸鎺ュ彛鎴愬姛"));
                             getCabinetDetail();
                             doAction(11);
                         }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java
index 288c1f4..96baac9 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginActivity.java
@@ -33,7 +33,8 @@
 
     @Override
     public void initView(@Nullable Bundle savedInstanceState) {
-        isAddCountTimer = false;
+        downTime = 30;
+        isAddCountTimer = true;
         normalConfig();
         getDB().setModel(getVM());
     }
@@ -66,9 +67,7 @@
                 getVM().loginCabinet(getDB().etName.getText().toString(),getDB().etPw.getText().toString());
                 break;
             case 3:
-                //鏄剧ず鍔犺浇
-                getDB().clProgress.setVisibility(View.VISIBLE);
-                getDB().clTip.setVisibility(View.GONE);
+                finish();
                 break;
             case 4:
                 getDB().clProgress.setVisibility(View.GONE);
@@ -79,6 +78,11 @@
             case 5:
                 startActivity(ManageCabinetActivity.class);
                 finish();
+                break;
+            case 6:
+                //鏄剧ず鍔犺浇
+                getDB().clProgress.setVisibility(View.VISIBLE);
+                getDB().clTip.setVisibility(View.GONE);
                 break;
             default:
                 break;
@@ -112,4 +116,9 @@
             }
         }
     }
+
+    @Override
+    protected void timeChange(String djs) {
+        getDB().tvDjs.setText(djs);
+    }
 }
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java
index fa2587c..6ed3624 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java
@@ -32,7 +32,7 @@
         LoginCabinetParam param = new LoginCabinetParam();
         param.setUsername(userName);
         param.setPassword(pw);
-        doAction(3);
+        doAction(6);
         getRetrofitService(Apis.class).loginCabinet(ParamsUtil.encodeRequestBody(param))
                 .compose(RxUtils.schedulersTransformer())
                 .subscribe(new SimpleObserver<BaseResponse<String>>(rxJavaGcManager) {
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
index 1b06374..0a253eb 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -8,6 +8,7 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.hardware.Camera;
+import android.opengl.Visibility;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -30,6 +31,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baidu.idl.main.facesdk.model.BDFaceSDKCommon;
+import com.baidu.idl.main.facesdk.utils.StreamUtil;
 import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.DataSource;
@@ -52,6 +54,8 @@
 import com.doumee.keyCabinet.event.GetKeyStatusEvent;
 import com.doumee.keyCabinet.event.HeartEvent;
 import com.doumee.keyCabinet.event.HttpEvent;
+import com.doumee.keyCabinet.event.JiujinBeginEvent;
+import com.doumee.keyCabinet.event.JiujinResultEvent;
 import com.doumee.keyCabinet.event.KeyResultEvent;
 import com.doumee.keyCabinet.event.ManageOpenGridResultEvent;
 import com.doumee.keyCabinet.event.OpenAllGridEvent;
@@ -107,6 +111,7 @@
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -115,6 +120,8 @@
 import java.util.TimerTask;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import dagger.hilt.android.AndroidEntryPoint;
 import timber.log.Timber;
@@ -151,7 +158,7 @@
             if(!isFinishing()){
                 switch (msg.what) {
                     case 0:
-                    //initM();
+                    initM();
                     TimeUtils.updateTimeUi(getVM().dayObs, getVM().timeObs);
                     handler.sendEmptyMessageDelayed(0, 1000);
                     EventBus.getDefault().post(new TimeClockEvent());
@@ -180,7 +187,7 @@
         SpUtil.initWH(this);
         normalConfig();
         getDB().setModel(getVM());
-        //initRGBCheck();
+        initRGBCheck();
         handler.sendEmptyMessageDelayed(0, 1000);
         //鍚姩蹇冭烦
         Intent intent = new Intent(MainActivity.this, HeartbeatService.class);
@@ -190,7 +197,6 @@
         startService(intent2);
         getPermission();
         Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId());
-        initPort();
     }
 
     private void initM(){
@@ -205,7 +211,7 @@
         if((availableMemory<400&&showTime!=null&&(System.currentTimeMillis()-showTime>5000))||
                 ("02:00:00".equals(StringUtil.getHM()))){
             //鍙敤鍐呭瓨灏忎簬400M,鎴栬�呮瘡澶╁噷鏅�2鐐癸紝閲嶅惎app
-            restartApp();
+            //restartApp();
         }
     }
 
@@ -291,7 +297,20 @@
             @Override
             public void onClick(View v) {
                 //todo 涓存椂浠g爜
-                setJiuConfig();
+                //setJiuConfig();
+                SpUtil.saveString("rbgCameraId","0");
+            }
+        });
+        getDB().imgLeft.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //todo 涓存椂浠g爜
+                if (getDB().nsv.getVisibility()== View.VISIBLE) {
+                    getDB().nsv.setVisibility(View.GONE);
+                }else {
+                    getDB().nsv.setVisibility(View.VISIBLE);
+                }
+
             }
         });
         upErrInfo();
@@ -305,6 +324,7 @@
                         setBanner(devConfigBean.getBannerList());
                     }
                     setJiuConfig();
+                    initPort();
                 }
             }
         });
@@ -376,7 +396,7 @@
                 }
                 MApplication.setLoginBean(null);
                 MApplication.getLoginBean().setFlag(type == 2 ? 0 : 1);
-                startActivity(KeyCabinetActivity.class);
+                startActivity(FaceActivity.class);
                 }
                 break;
             case 4:
@@ -437,7 +457,7 @@
         isShowing = true;
         showTime = System.currentTimeMillis();
         if(!isFaceOk) {
-            //initLicense();
+            initLicense();
         }
         if(isHavePermission) {
             checkUpdate();
@@ -808,7 +828,7 @@
                                 if (ret == 128) {
                                     Timber.d("==UpdatingFace==>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", JSON.toJSONString(bean));
                                     User user = new User();
-                                    user.setUserId(bean.getMemberId());
+                                    user.setUserId(bean.getMemberId().toString());
                                     user.setGroupId(bean.getGroupId());
                                     user.setUserName(bean.getMemberName());
                                     user.setImageName(bean.getFaceImg());
@@ -896,7 +916,6 @@
         popupWindow.showAtLocation(getDB().clRoot, Gravity.CENTER, 0, 0);
         RelativeLayout relativeRegister = contentView.findViewById(R.id.relative_register);
         RelativeLayout mPopRelativeManager = contentView.findViewById(R.id.relative_manager);
-        RelativeLayout mPopRelativeCamra = contentView.findViewById(R.id.relative_camra);
         RelativeLayout mRlErr = contentView.findViewById(R.id.rl_err);
         relativeRegister.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -908,12 +927,6 @@
             @Override
             public void onClick(View v) {
                 startActivity(UserManagerActivity.class);
-            }
-        });
-        mPopRelativeCamra.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                //startActivity();
             }
         });
         mRlErr.setOnClickListener(new View.OnClickListener() {
@@ -938,15 +951,13 @@
     }
 
     private void initRGBCheck(){
-        if(true){
-            return;
-        }
         String index = SpUtil.getString("rbgCameraId");
-        if(index==null){
+        if(!"1".equals(index)){
             index = "0";
         }
         setRgbCameraId(Integer.parseInt(index));
         /*if (isSetCameraId()){
+            setRgbCameraId(SingleBaseConfig.getBaseConfig().getRBGCameraId());
             return;
         }
         int mCameraNum = Camera.getNumberOfCameras();
@@ -997,6 +1008,7 @@
     }
 
     private void setRgbCameraId(int index){
+        getVM().addInfo("璁剧疆鐩告満锛�"+index);
         //Toast.makeText(mContext, "璁剧疆鐩告満"+index, Toast.LENGTH_SHORT).show();
         SpUtil.saveString("rbgCameraId",index+"");
         BraceletLogUtils.saveLog("璁剧疆鐩告満("+index+")");
@@ -1144,6 +1156,14 @@
         }
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void JiujinBeginEvent(JiujinBeginEvent e){
+        if(!isFinishing()){
+            //寮�鍚厭绮炬娴�
+            sendPortHandlerMsg(3,"go_wnd:0",0);
+        }
+    }
+
 
     @Subscribe
     public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
@@ -1194,6 +1214,9 @@
 
         @Override
         public void onResultBytes(byte[] bytes) {
+            if(isFinishing()){
+                return;
+            }
             if(bytes.length==0){
                 return;
             }
@@ -1284,7 +1307,6 @@
                         runOnUiThread(() -> {
                             getVM().addInfo("鎵归噺寮�闂ㄦ洿鏂板簱鏁版嵁:鐗堝彿锛�" +bh+","+ addList.size()+","+updateList.size());
                         });
-                        getVM().insertGrids(addList);
                         getVM().updateGrids(updateList);
                         if(!portHandler.hasMessages(1)){
                             EventBus.getDefault().post(new ManageOpenGridResultEvent());
@@ -1356,18 +1378,11 @@
                                 gridDo.setIsOpen("1".equals(dm.substring(i-1,i))?0:1);
                                 gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
                                 updateList.add(gridDo);
-                            }else {
-                                CabinetGridDo gridDo = new CabinetGridDo();
-                                gridDo.setGridKey(key);
-                                gridDo.setIsOpen("1".equals(dm.substring(i-1,i))?0:1);
-                                gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
-                                addList.add(gridDo);
                             }
                         }
                         runOnUiThread(() -> {
                             getVM().addInfo("鏇存柊搴撴暟鎹�:鐗堝彿锛�" +bh+","+ addList.size()+","+updateList.size());
                         });
-                        getVM().insertGrids(addList);
                         getVM().updateGrids(updateList);
                     }catch (Exception exception){
                         runOnUiThread(() -> {
@@ -1395,6 +1410,9 @@
 
         @Override
         public void onResultBytes(byte[] bytes) {
+            if(isFinishing()){
+                return;
+            }
             if(bytes.length==0){
                 return;
             }
@@ -1467,21 +1485,9 @@
                     }
                     gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
                     updateList.add(gridDo);
-                }else {
-                    //鏂板
-                    CabinetGridDo gridDo = new CabinetGridDo();
-                    gridDo.setGridKey(key);
-                    if("01".equals(isHaveKey)) {
-                        gridDo.setCurKeyCode(keyCode);
-                    }else {
-                        gridDo.setCurKeyCode("");
-                    }
-                    gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
-                    addList.add(gridDo);
                 }
             }
         }
-        getVM().insertGrids(addList);
         getVM().updateGrids(updateList);
         EventBus.getDefault().post(new KeyResultEvent());
     }
@@ -1499,12 +1505,33 @@
 
         @Override
         public void onResultBytes(byte[] bytes) {
+            if(isFinishing()){
+                return;
+            }
             if(bytes.length==0){
                 return;
             }
-            runOnUiThread(() -> {
-                getVM().addInfo("鑾峰彇鍒伴厭绮炬娴嬫暟鎹�:" + new String(bytes));
-            });
+            try {
+                runOnUiThread(() -> {
+                    getVM().addInfo("鑾峰彇鍒伴厭绮炬娴嬫暟鎹�:"+StringUtil.DateToStrSS(new Date())+" " + new String(bytes));
+                });
+                String data = new String(bytes);
+                runOnUiThread(() -> {
+                    getVM().addInfo("鑾峰彇鍒伴厭绮炬娴嬫槸鍚︽娴嬪け璐�:" + (data.contains("blow fail")));
+                });
+                if(data.contains("blow fail")){
+                    //妫�娴嬪け璐�
+                    EventBus.getDefault().post(new JiujinResultEvent(false,null));
+                }else if(data.startsWith("Result:")){
+                    Pattern pattern = Pattern.compile("([0-9]+\\.[0-9]+)");
+                    Matcher matcher = pattern.matcher(data);
+                    if (matcher.find()) {
+                        EventBus.getDefault().post(new JiujinResultEvent(true,new BigDecimal(matcher.group(1))));
+                    }
+                }
+            }catch (Exception e){
+                getVM().addInfo("鑾峰彇鍒伴厭绮炬娴嬫姤閿�:" + e.getMessage());
+            }
         }
     };
     private SerialPortModel chosePort;
@@ -1628,6 +1655,8 @@
         sendPortHandlerMsg(3,"alarm:"+config.getConcentration(),time+600);
         //娴撳害闃堝�煎崟浣� (1=mg/100ml;2=mg/L;3=%BAC)
         sendPortHandlerMsg(3,"unit:"+config.getThreshold(),time+900);
+
+        sendPortHandlerMsg(3,"read"+config.getThreshold(),time+1200);
     }
 
     private void sendPortHandlerMsg(int what,String obj,long time){
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
index d1d11bd..4f0b4ab 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
@@ -78,7 +78,6 @@
                 .subscribe(new SimpleObserver<BaseResponse<DevConfigBean>>(rxJavaGcManager) {
                     @Override
                     public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
-                        EventBus.getDefault().post(new HttpEvent("鑾峰彇閽ュ寵鏌滃熀鏈俊鎭�-杩斿洖锛�"+ GsonTools.changeGsonToJson(response)));
                         if(200==response.getCode()){
                             if(response.getData()!=null){
                                 MApplication.saveConfigBean(response.getData());
@@ -185,9 +184,6 @@
     }
 
     public void getFaceDatas() {
-        if (true) {
-            return;
-        }
         //showLoading(true);
         getRetrofitService(Apis.class).allFaceList( LMobileInfo.getDeviceUniqueId())
                 .compose(RxUtils.schedulersTransformer())
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java
index 81f5e5d..56a801a 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/CrashHandler.java
@@ -97,10 +97,10 @@
 			// 鑾峰彇AlarmManager瀹炰緥
 			AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
 			// 鍦�500姣鍚庤Е鍙戦噸鍚搷浣�
-			alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 10, pendingIntent);*/
+			alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 10, pendingIntent);
 
 			android.os.Process.killProcess(android.os.Process.myPid());
-			System.exit(1);
+			System.exit(1);*/
 			//杩欓噷鍙互閫氳繃缃戠粶涓婁紶寮傚父淇℃伅鍒版湇鍔″櫒锛屼究浜庡紑鍙戜汉鍛樺垎鏋愭棩蹇椾粠鑰岃В鍐砨ug
 		} catch (IOException e) {
 			e.printStackTrace();
diff --git a/keyCabinet-android/app/src/main/res/drawable/shape_jiujin_ok.xml b/keyCabinet-android/app/src/main/res/drawable/shape_jiujin_ok.xml
new file mode 100644
index 0000000..da2a204
--- /dev/null
+++ b/keyCabinet-android/app/src/main/res/drawable/shape_jiujin_ok.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#b3000000" />
+    <corners android:radius="10dp" />
+</shape>
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/res/layout/face_activity.xml b/keyCabinet-android/app/src/main/res/layout/face_activity.xml
index fd8c59f..af37448 100644
--- a/keyCabinet-android/app/src/main/res/layout/face_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/face_activity.xml
@@ -14,7 +14,8 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:context=".ui.course.FaceActivity"
-        android:background="@color/white">
+        android:background="@color/white"
+        >
 
         <View
             android:id="@+id/viewBack"
@@ -63,114 +64,116 @@
             app:layout_constraintEnd_toEndOf="parent"
             android:layout_marginRight="30dp"/>
 
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/cl_login"
-            android:layout_width="match_parent"
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:text="绠$悊鍛樿韩浠介獙璇�"
+            android:textColor="#111111"
+            android:textSize="33sp"
+            android:textStyle="bold"
             app:layout_constraintTop_toBottomOf="@+id/viewBack"
             android:layout_marginTop="36dp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            />
+
+
+        <com.example.datalibrary.gl.view.GlMantleSurfacView
+            android:id="@+id/camera_textureview"
+            android:layout_width="340dp"
+            android:layout_height="340dp"
+            app:layout_constraintTop_toBottomOf="@+id/tv_title"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginTop="42dp"
+            />
+
+        <!--閫佹鍥剧墖-->
+        <ImageView
+            android:id="@+id/face_detect_image_view"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toTopOf="@+id/camera_textureview"
+            app:layout_constraintStart_toStartOf="@+id/camera_textureview"
+            app:layout_constraintEnd_toEndOf="@+id/camera_textureview"
+            app:layout_constraintBottom_toBottomOf="@+id/camera_textureview"
+            android:visibility="gone"
+            android:background="@color/black"
+            />
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_face"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toTopOf="@+id/camera_textureview"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
             android:visibility="visible">
 
-            <TextView
-                android:id="@+id/tv_title"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="绠$悊鍛樿韩浠介獙璇�"
-                android:textColor="#111111"
-                android:textSize="33sp"
-                android:textStyle="bold"
+            <View
+                android:id="@+id/v_m_sl"
+                android:layout_width="340dp"
+                android:layout_height="340dp"
+                android:background="@mipmap/ic_viewfinder"
                 app:layout_constraintTop_toTopOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 />
 
-
-
-            <com.example.datalibrary.gl.view.GlMantleSurfacView
-                android:id="@+id/camera_textureview"
-                android:layout_width="340dp"
-                android:layout_height="340dp"
-                app:layout_constraintTop_toBottomOf="@+id/tv_title"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                android:layout_marginTop="42dp"
-                />
-
-            <!--閫佹鍥剧墖-->
-            <ImageView
-                android:id="@+id/face_detect_image_view"
-                android:layout_width="0dp"
-                android:layout_height="0dp"
-                app:layout_constraintTop_toTopOf="@+id/v_sl"
-                app:layout_constraintStart_toStartOf="@+id/v_sl"
-                app:layout_constraintEnd_toEndOf="@+id/v_sl"
-                app:layout_constraintBottom_toBottomOf="@+id/v_sl"
-                android:visibility="gone"
-                android:background="@color/black"
-                />
-
-            <View
-                android:id="@+id/v_sl"
-                android:layout_width="0dp"
-                android:layout_height="0dp"
-                android:background="@mipmap/ic_viewfinder"
-                app:layout_constraintTop_toTopOf="@+id/camera_textureview"
-                app:layout_constraintStart_toStartOf="@+id/camera_textureview"
-                app:layout_constraintEnd_toEndOf="@+id/camera_textureview"
-                app:layout_constraintBottom_toBottomOf="@+id/camera_textureview"
-                />
-
             <TextView
-                android:id="@+id/tv_tip"
-                android:layout_width="wrap_content"
+                android:id="@+id/tv_m_tip"
+                android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:text="璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆"
                 android:textColor="#ff666666"
                 android:textSize="24sp"
-                app:layout_constraintTop_toBottomOf="@+id/camera_textureview"
+                android:gravity="center"
+                app:layout_constraintTop_toBottomOf="@+id/v_m_sl"
                 android:layout_marginTop="42dp"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"/>
 
             <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/cl_remind"
+                android:id="@+id/cl_m_remind"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                app:layout_constraintTop_toBottomOf="@+id/tv_tip"
+                app:layout_constraintTop_toBottomOf="@+id/tv_m_tip"
                 android:layout_marginTop="60dp"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent">
 
                 <ImageView
-                    android:id="@+id/imgzd"
+                    android:id="@+id/imgzd_mf"
                     android:layout_width="66dp"
                     android:layout_height="66dp"
                     android:src="@mipmap/ic_zhengdui"
                     app:layout_constraintTop_toTopOf="parent"
                     app:layout_constraintLeft_toLeftOf="parent"
-                    app:layout_constraintRight_toLeftOf="@+id/imgzy"
+                    app:layout_constraintRight_toLeftOf="@+id/imgzy_mf"
                     android:layout_marginRight="57dp"/>
 
                 <TextView
-                    android:id="@+id/tv_pm"
+                    android:id="@+id/tv_pm_mf"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="骞宠灞忓箷"
                     android:textColor="#ff999999"
                     android:textSize="21sp"
-                    app:layout_constraintTop_toBottomOf="@+id/imgzd"
-                    app:layout_constraintStart_toStartOf="@+id/imgzd"
-                    app:layout_constraintEnd_toEndOf="@+id/imgzd"
+                    app:layout_constraintTop_toBottomOf="@+id/imgzd_mf"
+                    app:layout_constraintStart_toStartOf="@+id/imgzd_mf"
+                    app:layout_constraintEnd_toEndOf="@+id/imgzd_mf"
                     android:layout_marginTop="15dp"/>
 
                 <ImageView
-                    android:id="@+id/imgzy"
+                    android:id="@+id/imgzy_mf"
                     android:layout_width="66dp"
                     android:layout_height="66dp"
                     android:src="@mipmap/ic_guangxian"
                     app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintLeft_toRightOf="@+id/imgzd"
-                    app:layout_constraintRight_toLeftOf="@+id/imghd"
+                    app:layout_constraintLeft_toRightOf="@+id/imgzd_mf"
+                    app:layout_constraintRight_toLeftOf="@+id/imghd_mf"
                     android:layout_marginRight="57dp"/>
 
                 <TextView
@@ -179,17 +182,17 @@
                     android:text="涓嶈鐪ㄧ溂"
                     android:textColor="#ff999999"
                     android:textSize="21sp"
-                    app:layout_constraintTop_toTopOf="@+id/tv_pm"
-                    app:layout_constraintStart_toStartOf="@+id/imgzy"
-                    app:layout_constraintEnd_toEndOf="@+id/imgzy"/>
+                    app:layout_constraintTop_toTopOf="@+id/tv_pm_mf"
+                    app:layout_constraintStart_toStartOf="@+id/imgzy_mf"
+                    app:layout_constraintEnd_toEndOf="@+id/imgzy_mf"/>
 
                 <ImageView
-                    android:id="@+id/imghd"
+                    android:id="@+id/imghd_mf"
                     android:layout_width="66dp"
                     android:layout_height="66dp"
                     android:src="@mipmap/ic_zhengdui"
                     app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintLeft_toRightOf="@+id/imgzy"
+                    app:layout_constraintLeft_toRightOf="@+id/imgzy_mf"
                     app:layout_constraintRight_toRightOf="parent"/>
 
                 <TextView
@@ -198,208 +201,387 @@
                     android:text="涓嶈鏅冨姩"
                     android:textColor="#ff999999"
                     android:textSize="21sp"
-                    app:layout_constraintTop_toTopOf="@+id/tv_pm"
-                    app:layout_constraintStart_toStartOf="@+id/imghd"
-                    app:layout_constraintEnd_toEndOf="@+id/imghd"/>
+                    app:layout_constraintTop_toTopOf="@+id/tv_pm_mf"
+                    app:layout_constraintStart_toStartOf="@+id/imghd_mf"
+                    app:layout_constraintEnd_toEndOf="@+id/imghd_mf"/>
 
             </androidx.constraintlayout.widget.ConstraintLayout>
 
             <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/cl_fail"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:background="@drawable/shape_face_fail_bg"
-                app:layout_constraintBottom_toBottomOf="@+id/v_sl"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                android:layout_marginBottom="48dp"
-                android:paddingLeft="15dp"
-                android:paddingRight="15dp"
-                android:paddingTop="7dp"
-                android:paddingBottom="7dp"
-                android:visibility="gone">
+                android:layout_width="match_parent"
+                android:layout_height="75dp"
+                android:layout_marginLeft="30dp"
+                android:layout_marginRight="30dp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                android:layout_marginBottom="30dp"
+                android:background="@drawable/shape_r30_face_bg"
+                app:commandType="@{1}"
+                app:onClickCommand="@{model.myTypeCommand}"
+                >
 
-                <ImageView
-                    android:id="@+id/img1"
-                    android:layout_width="21dp"
-                    android:layout_height="21dp"
-                    android:src="@mipmap/ic_fail"
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
                     app:layout_constraintTop_toTopOf="parent"
                     app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"/>
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    >
 
-                <TextView
-                    android:id="@+id/tv3"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/face_sbsb"
-                    android:textColor="#ffffffff"
-                    android:textSize="24sp"
+                    <ImageView
+                        android:layout_width="28dp"
+                        android:layout_height="28dp"
+                        android:src="@mipmap/ic_shuaka"
+                        android:layout_gravity="center_vertical"/>
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="鍒峰崱楠岃瘉"
+                        android:textColor="#ff279baa"
+                        android:textSize="24sp"
+                        android:textStyle="bold"
+                        android:layout_marginLeft="7dp"/>
+
+                </LinearLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_fail"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@drawable/shape_face_fail_bg"
+            app:layout_constraintBottom_toBottomOf="@+id/camera_textureview"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginBottom="48dp"
+            android:paddingLeft="15dp"
+            android:paddingRight="15dp"
+            android:paddingTop="7dp"
+            android:paddingBottom="7dp"
+            android:visibility="gone">
+
+            <ImageView
+                android:id="@+id/img1"
+                android:layout_width="21dp"
+                android:layout_height="21dp"
+                android:src="@mipmap/ic_fail"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="parent"/>
+
+            <TextView
+                android:id="@+id/tv3"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/face_sbsb"
+                android:textColor="#ffffffff"
+                android:textSize="24sp"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/img1"
+                android:layout_marginLeft="7dp"/>
+
+            <TextView
+                android:id="@+id/tv4"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/face_tip2"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintTop_toBottomOf="@+id/tv3"
+                app:layout_constraintStart_toStartOf="@+id/tv3"
+                />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_sj_xuan"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toTopOf="@+id/camera_textureview"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:visibility="gone"
+            android:background="@color/white">
+
+            <View
+                android:id="@+id/v_sj_sl"
+                android:layout_width="340dp"
+                android:layout_height="340dp"
+                android:background="@mipmap/ic_face"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                />
+
+            <TextView
+                android:id="@+id/tv_sj_tip"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:text="璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆"
+                android:textColor="#ff666666"
+                android:textSize="24sp"
+                android:gravity="center"
+                app:layout_constraintTop_toBottomOf="@+id/v_sj_sl"
+                android:layout_marginTop="42dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cl_sj_remind"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                app:layout_constraintTop_toBottomOf="@+id/tv_sj_tip"
+                android:layout_marginTop="60dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent">
+
+                <ImageView
+                    android:id="@+id/imgzd_sj"
+                    android:layout_width="66dp"
+                    android:layout_height="66dp"
+                    android:src="@mipmap/ic_zhengdui"
                     app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/img1"
-                    android:layout_marginLeft="7dp"/>
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toLeftOf="@+id/imgzy_sj"
+                    android:layout_marginRight="57dp"/>
 
                 <TextView
-                    android:id="@+id/tv4"
+                    android:id="@+id/tv_pm_sj"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/face_tip2"
-                    android:textColor="#ffffffff"
-                    android:textSize="18sp"
-                    app:layout_constraintTop_toBottomOf="@+id/tv3"
-                    app:layout_constraintStart_toStartOf="@+id/tv3"
-                    />
+                    android:text="骞宠灞忓箷"
+                    android:textColor="#ff999999"
+                    android:textSize="21sp"
+                    app:layout_constraintTop_toBottomOf="@+id/imgzd_sj"
+                    app:layout_constraintStart_toStartOf="@+id/imgzd_sj"
+                    app:layout_constraintEnd_toEndOf="@+id/imgzd_sj"
+                    android:layout_marginTop="15dp"/>
 
+                <ImageView
+                    android:id="@+id/imgzy_sj"
+                    android:layout_width="66dp"
+                    android:layout_height="66dp"
+                    android:src="@mipmap/ic_guangxian"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintLeft_toRightOf="@+id/imgzd_sj"
+                    app:layout_constraintRight_toLeftOf="@+id/imghd_sj"
+                    android:layout_marginRight="57dp"/>
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="涓嶈鐪ㄧ溂"
+                    android:textColor="#ff999999"
+                    android:textSize="21sp"
+                    app:layout_constraintTop_toTopOf="@+id/tv_pm_sj"
+                    app:layout_constraintStart_toStartOf="@+id/imgzy_sj"
+                    app:layout_constraintEnd_toEndOf="@+id/imgzy_sj"/>
+
+                <ImageView
+                    android:id="@+id/imghd_sj"
+                    android:layout_width="66dp"
+                    android:layout_height="66dp"
+                    android:src="@mipmap/ic_zhengdui"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintLeft_toRightOf="@+id/imgzy_sj"
+                    app:layout_constraintRight_toRightOf="parent"/>
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="涓嶈鏅冨姩"
+                    android:textColor="#ff999999"
+                    android:textSize="21sp"
+                    app:layout_constraintTop_toTopOf="@+id/tv_pm_sj"
+                    app:layout_constraintStart_toStartOf="@+id/imghd_sj"
+                    app:layout_constraintEnd_toEndOf="@+id/imghd_sj"/>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cl_sj_rl"
+                android:layout_width="match_parent"
+                android:layout_height="75dp"
+                android:layout_marginLeft="30dp"
+                android:layout_marginRight="30dp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                android:layout_marginBottom="30dp"
+                android:visibility="visible">
+
+                <LinearLayout
+                    android:id="@+id/ll_01"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    android:background="@drawable/shape_r30_face_bg"
+                    android:paddingLeft="30dp"
+                    android:paddingRight="30dp"
+                    app:commandType="@{2}"
+                    app:onClickCommand="@{model.myTypeCommand}">
+
+                    <ImageView
+                        android:layout_width="28dp"
+                        android:layout_height="28dp"
+                        android:src="@mipmap/ic_shuaka"
+                        android:layout_gravity="center_vertical"/>
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="鍒峰崱楠岃瘉"
+                        android:textColor="#ff279baa"
+                        android:textSize="24sp"
+                        android:layout_marginLeft="7dp"
+                        android:textStyle="bold"
+                        android:layout_gravity="center_vertical"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_02"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintLeft_toRightOf="@+id/ll_01"
+                    app:layout_constraintRight_toRightOf="parent"
+                    android:background="@drawable/shape_r25_blue_bg"
+                    android:layout_marginLeft="20dp"
+                    app:commandType="@{3}"
+                    app:onClickCommand="@{model.myTypeCommand}"
+                    android:gravity="center">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="寮�濮嬮獙璇�"
+                        android:textColor="@color/white"
+                        android:textSize="24sp"
+                        android:textStyle="bold"
+                        />
+
+                </LinearLayout>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_card"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toTopOf="@+id/camera_textureview"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:background="@color/white"
+            android:visibility="gone">
+
+            <View
+                android:id="@+id/v_c_sl"
+                android:layout_width="340dp"
+                android:layout_height="340dp"
+                android:background="@mipmap/ic_shuaka2"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                />
+
+            <TextView
+                android:id="@+id/tv_c_tip"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:text="璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�"
+                android:textColor="#ff666666"
+                android:textSize="24sp"
+                android:gravity="center"
+                app:layout_constraintTop_toBottomOf="@+id/v_c_sl"
+                android:layout_marginTop="42dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="75dp"
+                android:layout_marginLeft="30dp"
+                android:layout_marginRight="30dp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                android:layout_marginBottom="30dp"
+                android:background="@drawable/shape_r30_face_bg"
+                app:commandType="@{4}"
+                app:onClickCommand="@{model.myTypeCommand}"
+                >
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    >
+
+                    <ImageView
+                        android:layout_width="28dp"
+                        android:layout_height="28dp"
+                        android:src="@mipmap/ic_renlian"
+                        android:layout_gravity="center_vertical"/>
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="浜鸿劯楠岃瘉"
+                        android:textColor="#ff279baa"
+                        android:textSize="24sp"
+                        android:textStyle="bold"
+                        android:layout_marginLeft="7dp"/>
+
+                </LinearLayout>
             </androidx.constraintlayout.widget.ConstraintLayout>
 
         </androidx.constraintlayout.widget.ConstraintLayout>
 
         <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/bt_sk"
+            android:id="@+id/cl_jiu"
             android:layout_width="match_parent"
-            android:layout_height="75dp"
-            android:layout_marginLeft="30dp"
-            android:layout_marginRight="30dp"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toTopOf="@+id/camera_textureview"
             app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="30dp"
-            android:background="@drawable/shape_r30_face_bg"
-            app:commandType="@{1}"
-            app:onClickCommand="@{model.myTypeCommand}"
-            android:visibility="visible">
-
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                app:layout_constraintTop_toTopOf="parent"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                >
-
-                <ImageView
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
-                    android:src="@mipmap/ic_shuaka"
-                    android:layout_gravity="center_vertical"/>
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="鍒峰崱楠岃瘉"
-                    android:textColor="#ff279baa"
-                    android:textSize="24sp"
-                    android:textStyle="bold"
-                    android:layout_marginLeft="7dp"/>
-
-            </LinearLayout>
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/cl_sj_rl"
-            android:layout_width="match_parent"
-            android:layout_height="75dp"
-            android:layout_marginLeft="30dp"
-            android:layout_marginRight="30dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="30dp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:background="@color/white"
             android:visibility="gone">
 
-            <LinearLayout
-                android:id="@+id/ll_01"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
+            <View
+                android:id="@+id/v_jiu_sl"
+                android:layout_width="340dp"
+                android:layout_height="340dp"
+                android:background="@mipmap/ic_jiujingjiance"
                 app:layout_constraintTop_toTopOf="parent"
-                app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                android:background="@drawable/shape_r30_face_bg"
-                android:paddingLeft="30dp"
-                android:paddingRight="30dp"
-                app:commandType="@{2}"
-                app:onClickCommand="@{model.myTypeCommand}">
+                app:layout_constraintEnd_toEndOf="parent"
+                />
 
-                <ImageView
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
-                    android:src="@mipmap/ic_shuaka"
-                    android:layout_gravity="center_vertical"/>
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="鍒峰崱楠岃瘉"
-                    android:textColor="#ff279baa"
-                    android:textSize="24sp"
-                    android:layout_marginLeft="7dp"
-                    android:textStyle="bold"
-                    android:layout_gravity="center_vertical"/>
-
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/ll_02"
+            <TextView
+                android:id="@+id/tv_jiu_tip"
                 android:layout_width="0dp"
-                android:layout_height="match_parent"
-                app:layout_constraintTop_toTopOf="parent"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintLeft_toRightOf="@+id/ll_01"
-                app:layout_constraintRight_toRightOf="parent"
-                android:background="@drawable/shape_r25_blue_bg"
-                android:layout_marginLeft="20dp"
-                app:commandType="@{3}"
-                app:onClickCommand="@{model.myTypeCommand}"
-                android:gravity="center">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="寮�濮嬮獙璇�"
-                    android:textColor="@color/white"
-                    android:textSize="24sp"
-                    android:textStyle="bold"
-                    />
-
-            </LinearLayout>
-
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/cl_sj_sk"
-            android:layout_width="match_parent"
-            android:layout_height="75dp"
-            android:layout_marginLeft="30dp"
-            android:layout_marginRight="30dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="30dp"
-            android:background="@drawable/shape_r30_face_bg"
-            app:commandType="@{4}"
-            app:onClickCommand="@{model.myTypeCommand}"
-            android:visibility="gone">
-
-            <LinearLayout
-                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                app:layout_constraintTop_toTopOf="parent"
-                app:layout_constraintBottom_toBottomOf="parent"
+                android:text="璇锋嬁璧烽厭绮炬娴嬩华鍚规皵"
+                android:textColor="#ff666666"
+                android:textSize="24sp"
+                android:gravity="center"
+                app:layout_constraintTop_toBottomOf="@+id/v_jiu_sl"
+                android:layout_marginTop="42dp"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                >
+                app:layout_constraintEnd_toEndOf="parent"/>
 
-                <ImageView
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
-                    android:src="@mipmap/ic_renlian"
-                    android:layout_gravity="center_vertical"/>
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="浜鸿劯楠岃瘉"
-                    android:textColor="#ff279baa"
-                    android:textSize="24sp"
-                    android:textStyle="bold"
-                    android:layout_marginLeft="7dp"/>
-
-            </LinearLayout>
         </androidx.constraintlayout.widget.ConstraintLayout>
-
 
 
         <androidx.constraintlayout.widget.ConstraintLayout
@@ -466,5 +648,54 @@
 
         </androidx.constraintlayout.widget.ConstraintLayout>
 
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_jiujinOk"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@drawable/shape_jiujin_ok"
+            android:paddingLeft="40dp"
+            android:paddingRight="40dp"
+            android:paddingTop="50dp"
+            android:paddingBottom="50dp"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:visibility="gone">
+
+            <ImageView
+                android:id="@+id/img_jiu"
+                android:layout_width="45dp"
+                android:layout_height="45dp"
+                android:src="@mipmap/ic_pass"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="妫�娴嬮�氳繃"
+                android:textColor="#ffffffff"
+                android:textSize="33sp"
+                app:layout_constraintTop_toBottomOf="@+id/img_jiu"
+                android:layout_marginTop="10dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+        <EditText
+            android:id="@+id/et_ewm"
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"
+            android:text=""
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:background="@null"
+            />
+
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/res/layout/main_activity.xml b/keyCabinet-android/app/src/main/res/layout/main_activity.xml
index cc4426a..d5bed45 100644
--- a/keyCabinet-android/app/src/main/res/layout/main_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/main_activity.xml
@@ -14,13 +14,13 @@
         android:layout_height="match_parent"
         tools:context=".ui.main.MainActivity"
         >
-        <ImageView
-            android:id="@+id/img"
-            android:layout_width="50dp"
-            android:layout_height="50dp"
+        <TextureView
+            android:id="@+id/checkNirTexture"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:alpha="0"
             app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            />
+            app:layout_constraintStart_toStartOf="parent"/>
 
         <TextView
             android:id="@+id/tv_m"
@@ -363,10 +363,12 @@
         </androidx.constraintlayout.widget.ConstraintLayout>
 
         <androidx.core.widget.NestedScrollView
+            android:id="@+id/nsv"
             android:layout_width="match_parent"
             android:layout_height="200dp"
             app:layout_constraintTop_toTopOf="parent"
-            android:background="@color/white">
+            android:background="@color/white"
+            android:visibility="gone">
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
@@ -399,5 +401,21 @@
 
         </androidx.core.widget.NestedScrollView>
 
+        <ImageView
+            android:id="@+id/img"
+            android:layout_width="50dp"
+            android:layout_height="50dp"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            />
+
+        <ImageView
+            android:id="@+id/img_left"
+            android:layout_width="50dp"
+            android:layout_height="50dp"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            />
+
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml b/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml
index da2a0f5..25c4fab 100644
--- a/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml
@@ -27,6 +27,18 @@
             android:layout_marginTop="90dp"
             android:layout_marginLeft="45dp"/>
 
+        <TextView
+            android:id="@+id/tv_djs"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="30s"
+            android:textColor="#ff279baa"
+            android:textSize="24sp"
+            app:layout_constraintTop_toTopOf="parent"
+            android:layout_marginTop="33dp"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginRight="30dp"/>
+
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="0dp"
diff --git a/keyCabinet-android/app/src/main/res/layout/popup_menu_home.xml b/keyCabinet-android/app/src/main/res/layout/popup_menu_home.xml
index 71b3d24..2755b78 100644
--- a/keyCabinet-android/app/src/main/res/layout/popup_menu_home.xml
+++ b/keyCabinet-android/app/src/main/res/layout/popup_menu_home.xml
@@ -62,44 +62,11 @@
     </RelativeLayout>
 
     <View
-        android:id="@+id/view_2"
-        android:layout_width="152dp"
-        android:layout_height="1dp"
-        android:layout_centerHorizontal="true"
-        android:layout_below="@id/relative_manager"
-        android:background="#777777"/>
-    <RelativeLayout
-        android:id="@+id/relative_camra"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:gravity="center_horizontal"
-        android:layout_below="@id/view_2"
-        android:paddingTop="15dp"
-        android:paddingBottom="15dp"
-        android:paddingLeft="20dp"
-        android:paddingRight="20dp"
-        android:background="@drawable/button_selector_homemenu_item1">
-        <ImageView
-            android:id="@+id/image_ca"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:src="@mipmap/icon_pop_camra" />
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="绠$悊鍛樼櫥褰�"
-            android:layout_toRightOf="@id/image_ca"
-            android:layout_marginLeft="9dp"
-            android:textColor="@color/white"
-            android:textSize="16sp" />
-    </RelativeLayout>
-
-    <View
         android:id="@+id/view_3"
         android:layout_width="152dp"
         android:layout_height="1dp"
         android:layout_centerHorizontal="true"
-        android:layout_below="@id/relative_camra"
+        android:layout_below="@id/relative_manager"
         android:background="#777777"/>
     <RelativeLayout
         android:id="@+id/rl_err"
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg
deleted file mode 100644
index f7dfa90..0000000
--- a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg
+++ /dev/null
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png
new file mode 100644
index 0000000..b253d05
--- /dev/null
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_pass.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_pass.png
new file mode 100644
index 0000000..6f6d017
--- /dev/null
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_pass.png
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_viewfinder.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_viewfinder.png
index 90b3cf3..536e6d9 100644
--- a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_viewfinder.png
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_viewfinder.png
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/img_loading.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/img_loading.png
index 3f1057b..7ef95f8 100644
--- a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/img_loading.png
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/img_loading.png
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/values/styles.xml b/keyCabinet-android/app/src/main/res/values/styles.xml
index 53282a5..8a3589f 100644
--- a/keyCabinet-android/app/src/main/res/values/styles.xml
+++ b/keyCabinet-android/app/src/main/res/values/styles.xml
@@ -68,7 +68,7 @@
         <item name="placeholderImage">@mipmap/img_loading</item>
         <item name="placeholderImageScaleType">centerInside</item>
         <item name="failureImage">@mipmap/img_loading</item>
-        <item name="failureImageScaleType">centerInside</item>
+        <item name="failureImageScaleType">fitXY</item>
     </style>
 
     <style name="sim_head">
diff --git a/keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java b/keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java
index b65c9df..406da30 100644
--- a/keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java
+++ b/keyCabinet-android/app/src/test/java/com/doumee/ticketmachine/ExampleUnitTest.java
@@ -4,24 +4,19 @@
 
 import org.junit.Test;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import static com.doumee.keyCabinet.utils.i485.SportUtils.hexToBinary;
 
 public class ExampleUnitTest {
     @Test
     public void addition_isCorrect() {
-        String s = "80010000FFEF33B2";
-        String dm = s.substring(4,12);
-        System.out.println("===1>"+dm);
-        dm = dm.replaceAll("0","");
-        System.out.println("===2>"+dm);
-        dm = SportUtils.hexToBinary(dm);
-        System.out.println("===3>"+dm);
-        StringBuilder sb = new StringBuilder(dm);
-        dm = sb.reverse().toString();
-        System.out.println("===4>"+dm);
-        for(int i=1;i<=dm.length();i++){
-            String key = SportUtils.intToHex(i);
-            System.out.println("===>"+key+","+("1".equals(dm.substring(i-1,i))?"鍏�":"寮�"));
+        String s = "Result:12.00mg/100ml";
+        Pattern pattern = Pattern.compile("([0-9]+\\.[0-9]+)");
+        Matcher matcher = pattern.matcher(s);
+        if (matcher.find()) {
+            System.out.println(matcher.group(1)); // 杈撳嚭: 12.00
         }
     }
 
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 cf5d8b3..cd1a90f 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
@@ -308,6 +308,17 @@
     }
 
     private static BDFaceImageInstance rgbInstance =null;
+    private LivenessModel livenessModel;
+
+    /**
+     * 0:绠$悊鍛橈紝1锛氱敤鎴�
+     * @param groupId
+     */
+    public void setGroupId(String groupId){
+        if(livenessModel!=null){
+            livenessModel.setGroupId(groupId);
+        }
+    }
     /**
      * 妫�娴�-娲讳綋-鐗瑰緛-浜鸿劯妫�绱㈡祦绋�
      *
@@ -318,7 +329,6 @@
      * @param faceDetectCallBack
      */
     public void onDetectCheck(
-            String groupId,
         final BDFaceImageConfig bdFaceImageConfig,
         final BDFaceImageConfig bdNirFaceImageConfig,
         final BDFaceImageConfig bdDepthFaceImageConfig,
@@ -329,8 +339,7 @@
         }
         long startTime = System.currentTimeMillis();
         // 鍒涘缓妫�娴嬬粨鏋滃瓨鍌ㄦ暟鎹�
-        LivenessModel livenessModel = new LivenessModel();
-        livenessModel.setGroupId(groupId);
+        livenessModel = new LivenessModel();
         // 鍒涘缓妫�娴嬪璞★紝濡傛灉鍘熷鏁版嵁YUV锛岃浆涓虹畻娉曟娴嬬殑鍥剧墖BGR
         // TODO: 鐢ㄦ埛璋冩暣鏃嬭浆瑙掑害鍜屾槸鍚﹂暅鍍忥紝鎵嬫満鍜屽紑鍙戠増闇�瑕佸姩鎬侀�傞厤
         //System.out.println("==rgbInstance==>鍒濆鍖�");
@@ -1213,7 +1222,7 @@
                             if (feat != null && feat.getScore() > threholdScore) {
                                 User userOld = FaceApi.getInstance().getUserListById(feat.getId());
                                 //System.out.println("==isOk==>鍖归厤鍒扮被鍨�:"+userOld.getUserName());
-                                if("0".equals(userOld.getGroupId())){
+                                if("1".equals(userOld.getGroupId())){
                                     user = userOld;
                                     topFeature = feat;
                                     break;
diff --git a/keyCabinet-android/lib_coremodel/src/main/res/layout/toast_view.xml b/keyCabinet-android/lib_coremodel/src/main/res/layout/toast_view.xml
index 16dcd99..76cde9e 100644
--- a/keyCabinet-android/lib_coremodel/src/main/res/layout/toast_view.xml
+++ b/keyCabinet-android/lib_coremodel/src/main/res/layout/toast_view.xml
@@ -13,7 +13,7 @@
         android:id="@+id/message"
         android:text="鎴戞槸toast鎴戞槸toast"
         android:textColor="@color/white"
-        android:textSize="16sp"
+        android:textSize="24sp"
         android:padding="@dimen/activity_horizontal_margin"
         android:background="@drawable/toast_view_bg"
         android:gravity="center"/>

--
Gitblit v1.9.3