package com.dayu.recharge.net; import android.content.Context; import android.os.Handler; import android.text.TextUtils; import android.util.Log; 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.entity.OriginReadData; import com.easysocket.entity.SocketAddress; import com.easysocket.interfaces.conn.ISocketActionListener; import com.easysocket.interfaces.conn.SocketActionListener; import com.dayu.recharge.MyApplication; import com.easysocket.utils.HexUtil; /** * Copyright (C), 2022, * Author: zuo * Date: 2022/2/8 21:30 * Description: Socket通信 */ public class SocketNet { public static SocketNet socketNet; SocketCallBack myCallBack; // byte[] dataMessage; boolean isTest = false; Context mContext; public static SocketNet getInstance() { if (socketNet == null) { socketNet = new SocketNet(); if (socketNet.socketActionListener != null) { } } return socketNet; } /** * 发送一个的消息, */ public void sendTestMessage(byte[] dataMessage, 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 { // // } // this.dataMessage = dataMessage; } else { MyApplication.myApplication.initEasySocket(false, null); } } /** * 测试socket是否连接通畅 * * @param context */ public void isConnect(Context context) { Log.i("SocketActionListener", "测试连接"); isTest = true; mContext = context; if (EasySocket.getInstance().getDefOptions().getSocketAddress() != null && !MyApplication.myApplication.isDoInitMachine) { // EasySocket.getInstance().disconnect(false); // EasySocket.getInstance().connect(); } else { // ToastUtil.show(mContext, "Socket地址为空"); } } public interface CreateBack { void Success(); void error(); } /** * socket行为监听 */ public ISocketActionListener socketActionListener = new SocketActionListener() { /** * socket连接成功 * @param socketAddress */ @Override public void onSocketConnSuccess(SocketAddress socketAddress) { Log.i("SocketActionListener1111", "连接成功"); MyApplication.myApplication.isConncet = true; 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())) { Log.i("SocketActionListener1111", "initMachineRequestBean"); MyApplication.myApplication.initMachineRequestBean(MyApplication.myApplication.ipBean.getIp(), MyApplication.myApplication.ipBean.getPort(), adminData.getAddressCode()); } } } rushState(); } /** * socket连接失败 * @param socketAddress * @param isNeedReconnect 是否需要重连 */ @Override public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) { MyApplication.myApplication.isConncet = false; rushState(); Log.i("SocketActionListener", "socket连接失败"); if (isTest) { // ToastUtil.show(mContext, "连接失败,请检查网络"); } else { if (myCallBack != null) { myCallBack.onSocketError(-1, "连接数据中心失败,请检查网络"); } } } /** * socket断开连接 * @param socketAddress * @param isNeedReconnect 是否需要重连 */ @Override public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) { Log.i("SocketActionListener", "---> socket断开连接,是否需要重连:" + isNeedReconnect); MyApplication.myApplication.isConncet = false; rushState(); } /** * socket接收的数据 * @param socketAddress * @param originReadData */ @Override 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); } } }; private void rushState() { try { if (HomeActivity.homeActivity != null) { HomeActivity.homeActivity.rushState(); } } catch (Exception e) { e.printStackTrace(); } } }