From ebc06a3ae3a42bd6ac1359a59c55d5e6f1a0e2f0 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 26 三月 2024 16:18:08 +0800
Subject: [PATCH] 优化通讯 写卡界面添加二次确认 优化用户写卡逻辑,提高写卡速度。

---
 app/src/main/java/com/dayu/recharge/net/SocketNet.java |  133 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 99 insertions(+), 34 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 0573432..592d458 100644
--- a/app/src/main/java/com/dayu/recharge/net/SocketNet.java
+++ b/app/src/main/java/com/dayu/recharge/net/SocketNet.java
@@ -1,22 +1,22 @@
 package com.dayu.recharge.net;
 
 import android.content.Context;
-import android.os.Handler;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 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.connection.action.SocketStatus;
+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.easysocket.utils.HexUtil;
 import com.tencent.bugly.crashreport.CrashReport;
 
@@ -34,6 +34,8 @@
     boolean isTest = false;
     Context mContext;
 
+    CallbackSender mSender;
+
     public static SocketNet getInstance() {
         if (socketNet == null) {
             socketNet = new SocketNet();
@@ -48,24 +50,60 @@
     /**
      * 鍙戦�佷竴涓殑娑堟伅锛�
      */
-    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();
-//            if (EasySocket.getInstance().getDefconnection().getConnectionStatus()== SocketStatus.SOCKET_CONNECTED){
-            EasySocket.getInstance().upMessage(dataMessage);
-//            }else {
-//
-//            }
+        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) {
 
-//            this.dataMessage = dataMessage;
+                        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, "璇锋鏌ョ綉缁滆繛鎺�");
         }
+
     }
 
 
@@ -103,11 +141,14 @@
          */
         @Override
         public void onSocketConnSuccess(SocketAddress socketAddress) {
+
+
             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) {
@@ -117,8 +158,16 @@
 
                         }
                     }
-
                 }
+                try {
+                    if (mSender != null) {
+                        sendTestMessage(mSender.getData(), mSender.getAFN(), myCallBack);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
+
             } catch (Exception e) {
                 CrashReport.postCatchedException(e);
             }
@@ -135,10 +184,10 @@
             MyApplication.myApplication.isConncet = false;
             rushState();
             Log.i("SocketActionListener", "socket杩炴帴澶辫触");
-            if (myCallBack != null) {
-                myCallBack.onSocketError(-1, "杩炴帴鏁版嵁涓績澶辫触,璇锋鏌ョ綉缁�");
-            }
-            myCallBack = null;
+//            if (myCallBack != null) {
+//                myCallBack.onSocketError(-1, "杩炴帴鏁版嵁涓績澶辫触,璇锋鏌ョ綉缁�");
+//            }
+//            myCallBack = null;
         }
 
         /**
@@ -151,10 +200,14 @@
             Log.i("SocketActionListener", "---> socket鏂紑杩炴帴锛屾槸鍚﹂渶瑕侀噸杩烇細" + isNeedReconnect);
             MyApplication.myApplication.isConncet = false;
             rushState();
-            if (myCallBack != null) {
-                myCallBack.onSocketError(-2, "涓庢湇鍔″櫒杩炴帴鏂紑锛岃閲嶈瘯");
+            try {
+                if (myCallBack != null) {
+                    myCallBack.onSocketError(-2, "涓庢湇鍔″櫒杩炴帴鏂紑锛岃妫�鏌ョ綉缁�");
+                }
+                myCallBack = null;
+            } catch (Exception e) {
+                throw new RuntimeException(e);
             }
-            myCallBack = null;
         }
 
 
@@ -167,14 +220,14 @@
         public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) {
             super.onSocketResponse(socketAddress, originReadData);
             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;
+//            SocketData socketData = new SocketData();
+//            socketData.setBodyData(originReadData.getBodyBytes());
+//            socketData.setHeaderData(originReadData.getHeaderData());
+////            dataMessage = null;
+//            if (myCallBack != null) {
+//                myCallBack.onSocketResponse(socketData);
+//            }
+//            myCallBack = null;
         }
     };
 
@@ -188,4 +241,16 @@
         }
     }
 
+    // 妫�鏌ョ綉缁滆繛鎺ユ槸鍚﹀彲鐢�
+    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