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