From d58bc0e2057f58342f490f5605eda3b80dc0ca29 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 27 三月 2024 11:47:21 +0800
Subject: [PATCH] 添加中安身份证识别相关功能 优化贴卡提示 优化二次确认的按钮样式 添加超时时不在主线程的处理

---
 app/src/main/java/com/dayu/recharge/net/SocketNet.java |  211 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 145 insertions(+), 66 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/net/SocketNet.java b/app/src/main/java/com/dayu/recharge/net/SocketNet.java
index 481b320..ebabc9d 100644
--- a/app/src/main/java/com/dayu/recharge/net/SocketNet.java
+++ b/app/src/main/java/com/dayu/recharge/net/SocketNet.java
@@ -1,23 +1,28 @@
 package com.dayu.recharge.net;
 
+import android.app.Activity;
 import android.content.Context;
-import android.os.Handler;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.os.Looper;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.dayu.recharge.MyApplication;
+import com.dayu.recharge.activity.HomeActivity;
 import com.dayu.recharge.dao.BaseDaoSingleton;
 import com.dayu.recharge.dbBean.AdminDataBean;
-import com.dayu.recharge.dbBean.DeviceNumber;
-import com.dayu.recharge.dbBean.IpBean;
 import com.easysocket.EasySocket;
+import com.easysocket.callback.SimpleCallBack;
 import com.easysocket.entity.OriginReadData;
 import com.easysocket.entity.SocketAddress;
+import com.easysocket.exception.RequestTimeOutException;
 import com.easysocket.interfaces.conn.ISocketActionListener;
 import com.easysocket.interfaces.conn.SocketActionListener;
-import com.dayu.recharge.MyApplication;
-import com.dayu.recharge.utils.ToastUtil;
-import com.dayu.recharge.utils.WSHelper;
-import com.easysocket.utils.LogUtil;
+import com.easysocket.utils.HexUtil;
+import com.tencent.bugly.crashreport.CrashReport;
+
+import java.util.logging.Handler;
 
 
 /**
@@ -29,17 +34,17 @@
 public class SocketNet {
     public static SocketNet socketNet;
     SocketCallBack myCallBack;
-    byte[] dataMessage;
+    //    byte[] dataMessage;
     boolean isTest = false;
     Context mContext;
+
+    CallbackSender mSender;
 
     public static SocketNet getInstance() {
         if (socketNet == null) {
             socketNet = new SocketNet();
-            if (socketNet.socketActionListener != null) {
-
-            }
         }
+
         return socketNet;
     }
 
@@ -47,18 +52,62 @@
     /**
      * 鍙戦�佷竴涓殑娑堟伅锛�
      */
-    public void sendTestMessage(byte[] dataMessage, SocketCallBack callBack) {
+    public void sendTestMessage(byte[] dataMessage, String AFN, SocketCallBack callBack) {
         myCallBack = callBack;
         isTest = false;
-        // 鍙戦��
-//        EasySocket.getInstance().upMessage(dataMessage);
-        if (EasySocket.getInstance().getDefconnection() != null) {
-            EasySocket.getInstance().disconnect(false);
-            EasySocket.getInstance().connect();
-            this.dataMessage = dataMessage;
+        mSender = new CallbackSender();
+        mSender.setAFN(AFN);
+        mSender.setData(dataMessage);
+        if (isNetworkAvailable(MyApplication.myApplication)) {
+            // 鍙戦��
+            if (EasySocket.getInstance().getDefconnection() != null) {
+//            EasySocket.getInstance().upMessage(dataMessage);
+                EasySocket.getInstance().upCallbackMessage(mSender).onCallBack(new SimpleCallBack(AFN) {
+                    @Override
+                    public void onResponse(OriginReadData data) {
+
+                        try {
+                            mSender = null;
+                            myCallBack = null;
+                            Log.i("SocketActionListener", "SimpleCallBack鏀跺埌鏁版嵁-->" + HexUtil.bytesToHex(data.getBodyBytes()));
+                            SocketData socketData = new SocketData();
+                            socketData.setBodyData(data.getBodyBytes());
+                            socketData.setHeaderData(data.getHeaderData());
+//            dataMessage = null;
+                            if (callBack != null) {
+                                callBack.onSocketResponse(socketData);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+
+                    @Override
+                    public void onError(Exception e) {
+                        super.onError(e);
+                        mSender = null;
+                        myCallBack = null;
+                        try {
+                            if (e instanceof RequestTimeOutException) {
+                                // 鍦ㄨ繖閲屾墽琛岄渶瑕佸湪涓荤嚎绋嬩腑鎵ц鐨勬搷浣�
+                                callBack.onSocketError(-3, "璇锋眰瓒呮椂锛屾鍦ㄩ噸璇�");
+                                //瓒呮椂鍚庨噸鏂拌繛鎺�
+                                EasySocket.getInstance().disconnect(true);
+                            }
+
+                        } catch (Exception ex) {
+                            throw new RuntimeException(ex);
+                        }
+                    }
+                });
+            } else {
+                callBack.onSocketError(-2, "涓庢湇鍔″櫒杩炴帴鏂紑锛岃妫�鏌ョ綉缁滅◢鍚庡啀璇�");
+                MyApplication.myApplication.initEasySocket(false, null);
+            }
         } else {
-            MyApplication.myApplication.initEasySocket(false, null);
+            callBack.onSocketError(-2, "璇锋鏌ョ綉缁滆繛鎺�");
         }
+
     }
 
 
@@ -72,8 +121,8 @@
         isTest = true;
         mContext = context;
         if (EasySocket.getInstance().getDefOptions().getSocketAddress() != null && !MyApplication.myApplication.isDoInitMachine) {
-            EasySocket.getInstance().disconnect(false);
-            EasySocket.getInstance().connect();
+//            EasySocket.getInstance().disconnect(false);
+//            EasySocket.getInstance().connect();
         } else {
 //            ToastUtil.show(mContext, "Socket鍦板潃涓虹┖");
         }
@@ -96,31 +145,37 @@
          */
         @Override
         public void onSocketConnSuccess(SocketAddress socketAddress) {
-            Log.i("SocketActionListener", "杩炴帴鎴愬姛");
-            DeviceNumber initCode = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst();
-            if (initCode==null && !MyApplication.myApplication.isDoInitMachine) {
-                new Handler().postDelayed(new Runnable() {
-                    @Override
-                    public void run() {
-                        IpBean ipBean = BaseDaoSingleton.getInstance(MyApplication.myApplication).ipDao().findFirst();
-                        AdminDataBean adminData = BaseDaoSingleton.getInstance(MyApplication.myApplication).adminDao().findFirst();
-                        if (ipBean != null && adminData != null) {
-                            MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode());
+
+
+            Log.i("SocketActionListener1111", "杩炴帴鎴愬姛");
+            MyApplication.myApplication.isConncet = true;
+            try {
+                AdminDataBean adminData = BaseDaoSingleton.getInstance(MyApplication.myApplication).adminDao().findFirst();
+                Log.i("SocketActionListener1111", "isDoInitMachine==" + MyApplication.myApplication.isDoInitMachine + "");
+                //姣忔杩炴帴鎴愬姛娉ㄥ唽涓�娆¤澶�
+                if (!MyApplication.myApplication.isDoInitMachine) {
+                    Log.i("SocketActionListener1111", "isDoInitMachine");
+                    if (MyApplication.myApplication.ipBean != null && adminData != null) {
+                        if (!TextUtils.isEmpty(adminData.getAddressCode()) && !MyApplication.myApplication.isCreate) {
+                            Log.i("SocketActionListener1111", "initMachineRequestBean");
+                            MyApplication.myApplication.initMachineRequestBean(MyApplication.myApplication.ipBean.getIp(), MyApplication.myApplication.ipBean.getPort(), adminData.getAddressCode());
+
                         }
                     }
-                }, 500);
+                }
+                try {
+                    if (mSender != null) {
+                        sendTestMessage(mSender.getData(), mSender.getAFN(), myCallBack);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
 
-            }
-            if (dataMessage != null) {
-                EasySocket.getInstance().upMessage(dataMessage);
-            }
-            if (isTest) {
-                MyApplication.myApplication.isConncet = true;
-                EasySocket.getInstance().disconnect(false);
-            } else {
 
+            } catch (Exception e) {
+                CrashReport.postCatchedException(e);
             }
-
+            rushState();
         }
 
         /**
@@ -130,15 +185,13 @@
          */
         @Override
         public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) {
-//            isConnected = false;
+            MyApplication.myApplication.isConncet = false;
+            rushState();
             Log.i("SocketActionListener", "socket杩炴帴澶辫触");
-            if (isTest) {
-//                ToastUtil.show(mContext, "杩炴帴澶辫触,璇锋鏌ョ綉缁�");
-            } else {
-                if (myCallBack != null) {
-                    myCallBack.onSocketError(-1, "socket杩炴帴澶辫触,璇锋鏌ョ綉缁�");
-                }
-            }
+//            if (myCallBack != null) {
+//                myCallBack.onSocketError(-1, "杩炴帴鏁版嵁涓績澶辫触,璇锋鏌ョ綉缁�");
+//            }
+//            myCallBack = null;
         }
 
         /**
@@ -149,33 +202,59 @@
         @Override
         public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) {
             Log.i("SocketActionListener", "---> socket鏂紑杩炴帴锛屾槸鍚﹂渶瑕侀噸杩烇細" + isNeedReconnect);
-
+            MyApplication.myApplication.isConncet = false;
+            rushState();
+            try {
+                if (myCallBack != null) {
+                    myCallBack.onSocketError(-2, "涓庢湇鍔″櫒杩炴帴鏂紑锛岃妫�鏌ョ綉缁�");
+                }
+                myCallBack = null;
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
         }
+
 
         /**
          * socket鎺ユ敹鐨勬暟鎹�
          * @param socketAddress
-         * @param readData
+         * @param originReadData
          */
-        @Override
-        public void onSocketResponse(SocketAddress socketAddress, String readData) {
-            Log.i("SocketActionListener", "SocketActionListener鏀跺埌鏁版嵁-->" + readData);
-
-        }
-
         @Override
         public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) {
             super.onSocketResponse(socketAddress, originReadData);
-            Log.i("SocketActionListener", "SocketActionListener鏀跺埌鏁版嵁-->" + originReadData.getBodyString());
-            SocketData socketData = new SocketData();
-            socketData.setBodyData(originReadData.getBodyBytes());
-            socketData.setHeaderData(originReadData.getHeaderData());
-            dataMessage = null;
-            if (myCallBack != null) {
-                myCallBack.onSocketResponse(socketData);
-            }
-
+            Log.i("SocketActionListener", "SocketActionListener鏀跺埌鏁版嵁-->" + HexUtil.bytesToHex(originReadData.getBodyBytes()));
+//            SocketData socketData = new SocketData();
+//            socketData.setBodyData(originReadData.getBodyBytes());
+//            socketData.setHeaderData(originReadData.getHeaderData());
+////            dataMessage = null;
+//            if (myCallBack != null) {
+//                myCallBack.onSocketResponse(socketData);
+//            }
+//            myCallBack = null;
         }
     };
 
+    private void rushState() {
+        try {
+            if (HomeActivity.homeActivity != null) {
+                HomeActivity.homeActivity.rushState();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    // 妫�鏌ョ綉缁滆繛鎺ユ槸鍚﹀彲鐢�
+    public boolean isNetworkAvailable(Context context) {
+        if (context != null) {
+            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+            if (connectivityManager != null) {
+                NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
+                return activeNetworkInfo != null && activeNetworkInfo.isConnected();
+            }
+        }
+        return false;
+    }
+
 }

--
Gitblit v1.8.0