From 9ccd59974993aa9914daf045aa6f2bbb5152047c Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期二, 28 十月 2025 09:49:08 +0800
Subject: [PATCH] 钥匙柜

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java |  206 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 113 insertions(+), 93 deletions(-)

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 c248eb2..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;
@@ -39,11 +41,9 @@
 import com.bumptech.glide.request.target.Target;
 import com.bumptech.glide.request.transition.Transition;
 import com.doumee.keyCabinet.BuildConfig;
-import com.doumee.keyCabinet.base.BannerPicResponsePara;
 import com.doumee.keyCabinet.bean.CabinetConfigDataBean;
 import com.doumee.keyCabinet.bean.DevConfigBean;
 import com.doumee.keyCabinet.bean.FaceUserBean;
-import com.doumee.keyCabinet.bean.LoginBean;
 import com.doumee.keyCabinet.dao.CabinetGridDo;
 import com.doumee.keyCabinet.dao.DaoManager;
 import com.doumee.keyCabinet.databinding.MainActivityBinding;
@@ -54,15 +54,17 @@
 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;
 import com.doumee.keyCabinet.event.OpenGridEvent;
 import com.doumee.keyCabinet.event.OpenGridListEvent;
 import com.doumee.keyCabinet.event.OpenGridOneResultEvent;
-import com.doumee.keyCabinet.event.ReLoginEvent;
 import com.doumee.keyCabinet.event.TimeClockEvent;
 import com.doumee.keyCabinet.ui.face.ActivationActivity;
+import com.doumee.keyCabinet.ui.face.FaceActivity;
 import com.doumee.keyCabinet.ui.keyCabinet.ChangeUrlActivity;
 import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
 import com.doumee.keyCabinet.ui.keyCabinet.ManageLoginActivity;
@@ -109,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;
@@ -117,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;
@@ -153,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());
@@ -182,7 +187,7 @@
         SpUtil.initWH(this);
         normalConfig();
         getDB().setModel(getVM());
-        //initRGBCheck();
+        initRGBCheck();
         handler.sendEmptyMessageDelayed(0, 1000);
         //鍚姩蹇冭烦
         Intent intent = new Intent(MainActivity.this, HeartbeatService.class);
@@ -192,7 +197,6 @@
         startService(intent2);
         getPermission();
         Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId());
-        initPort();
     }
 
     private void initM(){
@@ -207,7 +211,7 @@
         if((availableMemory<400&&showTime!=null&&(System.currentTimeMillis()-showTime>5000))||
                 ("02:00:00".equals(StringUtil.getHM()))){
             //鍙敤鍐呭瓨灏忎簬400M,鎴栬�呮瘡澶╁噷鏅�2鐐癸紝閲嶅惎app
-            restartApp();
+            //restartApp();
         }
     }
 
@@ -273,6 +277,7 @@
         getDB().tvId.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                startActivity(ManageLoginActivity.class);
                 //鏇存敼url
                 if(lastDownTime2!=null){
                     if(System.currentTimeMillis()-lastDownTime2>1000){
@@ -288,6 +293,26 @@
                 }
             }
         });
+        getDB().tvVersion.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //todo 涓存椂浠g爜
+                //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();
         getVM().devLogin();
         getVM().devHeart();
@@ -299,12 +324,15 @@
                         setBanner(devConfigBean.getBannerList());
                     }
                     setJiuConfig();
+                    initPort();
                 }
             }
         });
     }
 
     private void setJiuConfig(){
+        getVM().addInfo("閰掔簿閰嶇疆锛�"+(MApplication.getConfigBean().getCabinetConfigDataVO()!=null)+
+                ",涓插彛寮�鍚細"+(jiuPort!=null));
         if(MApplication.getConfigBean().getCabinetConfigDataVO()!=null&&
             jiuPort!=null){
             setJiuConfig(0);
@@ -355,50 +383,20 @@
             case 2:
             case 3: {
                 //鏍¢獙鏄惁鐧诲綍
-                /*if(MApplication.getConfigBean().getId()==null){
+                if(MApplication.getConfigBean().getId()==null){
                     Toast.makeText(mContext, "璁惧鏈坊鍔狅紝鏃犳硶鎿嶄綔", Toast.LENGTH_SHORT).show();
                     getVM().devLogin();
                     return;
                 }
-                MApplication.getLoginBean().setFlag(type==2?0:1);
-                startActivity(FaceActivity.class);*/
-                /*if(type==2){
-                    send485(1,"A002010000000003");
-                }else {
-                    send485(1,"A001010000000002");
-                }*/
-                //send485(1,"A001010000000002");
-                //send485(1,"A002010000000003");
-                //startActivity(KeyCabinetActivity.class,b);
                 checkGridStatus(0);
                 List<CabinetGridDo> gridDos = getVM().getOpenGrids();
                 if (gridDos.size() > 0) {
-                    tipDownCount = 10;
-                    isShowTip = true;
-                    getDB().tvDjs.setText(tipDownCount + "s");
-                    StringBuilder sb = new StringBuilder();
-                    for(CabinetGridDo d:gridDos){
-                        if (sb.length()>0) {
-                            sb.append("銆�");
-                        }
-                        String name = d.getCabinetName();
-                        if (TextUtils.isEmpty(name)) {
-                            name = gridDos.get(0).getGridKey();
-                        }
-                        sb.append(name);
-                    }
-
-                    getDB().tvTip22.setText(getTipText(sb.toString()), TextView.BufferType.SPANNABLE);
-                    getDB().clTip.setVisibility(View.VISIBLE);
+                    showUnCloseTip(gridDos);
                     return;
                 }
                 MApplication.setLoginBean(null);
                 MApplication.getLoginBean().setFlag(type == 2 ? 0 : 1);
-                if(type==3){
-                    startActivity(ManageLoginActivity.class);
-                    return;
-                }
-                startActivity(KeyCabinetActivity.class);
+                startActivity(FaceActivity.class);
                 }
                 break;
             case 4:
@@ -408,22 +406,7 @@
             case 5: {
                 List<CabinetGridDo> gridDos = getVM().getOpenGrids();
                 if (gridDos.size() > 0) {
-                    tipDownCount = 10;
-                    isShowTip = true;
-                    getDB().tvDjs.setText(tipDownCount + "s");
-                    StringBuilder sb = new StringBuilder();
-                    for(CabinetGridDo d:gridDos){
-                        if (sb.length()>0) {
-                            sb.append("銆�");
-                        }
-                        String name = d.getCabinetName();
-                        if (TextUtils.isEmpty(name)) {
-                            name = gridDos.get(0).getGridKey();
-                        }
-                        sb.append(name);
-                    }
-                    getDB().tvTip22.setText(getTipText(sb.toString()), TextView.BufferType.SPANNABLE);
-                    getDB().clTip.setVisibility(View.VISIBLE);
+                    showUnCloseTip(gridDos);
                 }else {
                     isShowTip = false;
                     getDB().clTip.setVisibility(View.GONE);
@@ -438,6 +421,35 @@
         }
     }
 
+    private void showUnCloseTip(List<CabinetGridDo> gridDos){
+        tipDownCount = 10;
+        isShowTip = true;
+        getDB().tvDjs.setText(tipDownCount + "s");
+        StringBuilder sb = new StringBuilder();
+        for(CabinetGridDo d:gridDos){
+            if (sb.length()>0) {
+                sb.append("銆�");
+            }
+            String name = d.getCabinetName();
+            if (TextUtils.isEmpty(name)) {
+                name = gridDos.get(0).getGridKey();
+            }
+            sb.append(name);
+        }
+        getDB().tvTip22.setText(getTipText(sb.toString()), TextView.BufferType.SPANNABLE);
+        getDB().tvTip23.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE);
+        getDB().clTip.setVisibility(View.VISIBLE);
+    }
+
+    private SpannableString getErrPhoneText(){
+        String phone = MApplication.getConfigBean().getLinkPhone();
+        String text = "濡傛湁闂璇疯仈绯荤鐞嗗憳"+phone;
+        SpannableString styledText = new SpannableString(text);
+        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip3), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip1), text.length()-phone.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return styledText;
+    }
+
     private boolean isShowing = false;
     @Override
     protected void onResume() {
@@ -445,7 +457,7 @@
         isShowing = true;
         showTime = System.currentTimeMillis();
         if(!isFaceOk) {
-            //initLicense();
+            initLicense();
         }
         if(isHavePermission) {
             checkUpdate();
@@ -816,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());
@@ -904,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
@@ -916,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() {
@@ -946,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();
@@ -1005,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+")");
@@ -1152,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){
@@ -1171,7 +1183,6 @@
                         EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
                                 Integer.parseInt(e.getKey().substring(0,2), 16)+""));
                     }else {
-                        //todo 鍏抽棬鎴愬姛
                         if(isShowTip){
                             doRegister(5,null);
                         }
@@ -1203,6 +1214,9 @@
 
         @Override
         public void onResultBytes(byte[] bytes) {
+            if(isFinishing()){
+                return;
+            }
             if(bytes.length==0){
                 return;
             }
@@ -1293,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());
@@ -1365,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(() -> {
@@ -1404,6 +1410,9 @@
 
         @Override
         public void onResultBytes(byte[] bytes) {
+            if(isFinishing()){
+                return;
+            }
             if(bytes.length==0){
                 return;
             }
@@ -1476,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());
     }
@@ -1508,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;
@@ -1637,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){

--
Gitblit v1.9.3