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