From ebc06a3ae3a42bd6ac1359a59c55d5e6f1a0e2f0 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 26 三月 2024 16:18:08 +0800
Subject: [PATCH] 优化通讯 写卡界面添加二次确认 优化用户写卡逻辑,提高写卡速度。
---
easysocket/.idea/misc.xml | 10
app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java | 3
app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java | 2
easysocket/src/main/java/com/easysocket/EasySocket.java | 7
app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java | 17 -
easysocket/.idea/.gitignore | 3
app/src/main/java/com/dayu/recharge/net/CallbackSender.java | 38 ++
app/src/main/java/com/dayu/recharge/tools/WriteCardUtils.java | 11
easysocket/.idea/vcs.xml | 6
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java | 88 +++++-
app/src/main/java/com/dayu/recharge/activity/BaseActivity.java | 12
app/src/main/java/com/dayu/recharge/MyApplication.java | 100 ++++---
app/src/main/java/com/dayu/recharge/net/SocketNet.java | 133 +++++++--
app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java | 134 +++++++--
app/src/main/java/com/dayu/recharge/view/ConfirmDialog.java | 54 ++++
easysocket/local.properties | 8
app/src/main/java/com/dayu/recharge/view/ProgressDialog.java | 3
app/src/main/java/com/dayu/recharge/net/CallbackIDFactoryImpl.java | 29 ++
easysocket/.idea/gradle.xml | 13 +
easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java | 13
local.properties | 4
easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java | 10
app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java | 2
app/src/main/res/layout/confirm_dialog.xml | 65 +++++
24 files changed, 572 insertions(+), 193 deletions(-)
diff --git a/app/src/main/java/com/dayu/recharge/MyApplication.java b/app/src/main/java/com/dayu/recharge/MyApplication.java
index 453b711..7fe9e91 100644
--- a/app/src/main/java/com/dayu/recharge/MyApplication.java
+++ b/app/src/main/java/com/dayu/recharge/MyApplication.java
@@ -8,6 +8,7 @@
import com.dayu.recharge.dao.BaseDaoSingleton;
import com.dayu.recharge.dbBean.IpBean;
+import com.dayu.recharge.net.CallbackIDFactoryImpl;
import com.dayu.recharge.net.ScoketMessageProtocol;
import com.dayu.recharge.net.SocketCallBack;
import com.dayu.recharge.net.SocketData;
@@ -34,14 +35,12 @@
public class MyApplication extends Application {
public static String TAG = "MyApplication";
public static MyApplication myApplication;
- private String address;
SocketNet.CreateBack createBack;
//鏄惁姝e湪璇锋眰鍒濆鍖栨帴鍙�
public boolean isDoInitMachine = false;
//鏄惁杩炴帴鏈嶅姟鍣ㄦ垚鍔�
public boolean isConncet = false;
- private final Timer timer = new Timer();
//姣忔鍚姩绋嬪簭鍙幓娉ㄥ唽涓�閬嶏紝涓嶅啀閲嶆柊娉ㄥ唽銆�
public static boolean isCreate = false;
@@ -89,48 +88,10 @@
// ipBean.setIp("dayuyanjiuyuan.top");
// ipBean.setPort(8888);
}
- if (ipBean != null) {
- try {
- //澶勭悊褰撹繛鎺ヤ笂IP鍚庝慨鏀筰p涓嶇敓鏁堥棶棰�
- if (EasySocket.getInstance().getDefconnection() != null) {
- SocketAddress address = EasySocket.getInstance().getDefconnection().getOptions().getSocketAddress();
- if (address != null) {
- if (!address.getIp().equals(ipBean.getIp()) || address.getPort() != ipBean.getPort()) {
- EasySocket.getInstance().destroyConnection();
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- if (!SocketUtil.isInteger(ipBean.getIp())) {
- //鍩熷悕鏂瑰紡
- SocketUtil.parseHostGetIPAddress(ipBean.getIp(), new Handler() {
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 1:
- createSocket(msg.obj + "", ipBean.getPort(), "0", 88);
- break;
- case 2:
- InetAddress[] data = (InetAddress[]) msg.obj;
- createSocket(data[0].getHostAddress(), ipBean.getPort(), data[1].getHostAddress(), ipBean.getPort());
- break;
- case -1:
- ToastUtil.show("DNS瑙f瀽澶辫触");
- break;
- }
-
- }
- });
-
- } else {
- //ip鏂瑰紡
- if (EasySocket.getInstance().getContext() == null || isCreate) {
- createSocket(ipBean.getIp(), ipBean.getPort(), "0", 88);
- } else {
+ if (SocketNet.getInstance().isNetworkAvailable(this)){
+ if (ipBean != null) {
+ try {
+ //澶勭悊褰撹繛鎺ヤ笂IP鍚庝慨鏀筰p涓嶇敓鏁堥棶棰�
if (EasySocket.getInstance().getDefconnection() != null) {
SocketAddress address = EasySocket.getInstance().getDefconnection().getOptions().getSocketAddress();
if (address != null) {
@@ -139,10 +100,53 @@
}
}
}
+ } catch (Exception e) {
+ e.printStackTrace();
}
+ if (!SocketUtil.isInteger(ipBean.getIp())) {
+ //鍩熷悕鏂瑰紡
+ SocketUtil.parseHostGetIPAddress(ipBean.getIp(), new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what) {
+ case 1:
+ createSocket(msg.obj + "", ipBean.getPort(), "0", 88);
+ break;
+ case 2:
+ InetAddress[] data = (InetAddress[]) msg.obj;
+ createSocket(data[0].getHostAddress(), ipBean.getPort(), data[1].getHostAddress(), ipBean.getPort());
+ break;
+ case -1:
+ ToastUtil.show("DNS瑙f瀽澶辫触");
+ break;
+ }
+
+ }
+ });
+
+ } else {
+ //ip鏂瑰紡
+ if (EasySocket.getInstance().getContext() == null || isCreate) {
+ createSocket(ipBean.getIp(), ipBean.getPort(), "0", 88);
+ } else {
+ if (EasySocket.getInstance().getDefconnection() != null) {
+ SocketAddress address = EasySocket.getInstance().getDefconnection().getOptions().getSocketAddress();
+ if (address != null) {
+ if (!address.getIp().equals(ipBean.getIp()) || address.getPort() != ipBean.getPort()) {
+ EasySocket.getInstance().destroyConnection();
+ }
+ }
+ }
+ }
+
+ }
}
+ }else {
+ ToastUtil.show("璇锋鏌ョ綉缁滆繛鎺�");
}
+
} catch (Exception e) {
e.printStackTrace();
}
@@ -166,7 +170,7 @@
initMachineRequestBean.setAddress(addressCode);
initMachineRequestBean.setXuLie(SocketUtil.getXuLie(this));
initMachineRequestBean.setAFN("91");
- SocketNet.getInstance().sendTestMessage(initMachineRequestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(initMachineRequestBean.pack(), "91",new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
@@ -183,7 +187,7 @@
confirmMachineRequestBean.setAFN("92");
confirmMachineRequestBean.setInitCode(initCode);
Log.i("Socket", "纭娉ㄥ唽鎶ユ枃");
- SocketNet.getInstance().sendTestMessage(confirmMachineRequestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(confirmMachineRequestBean.pack(), "92",new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
@@ -240,10 +244,10 @@
.setSocketAddress(new SocketAddress(ip, port))
// 瀹氫箟娑堟伅鍗忚锛屾柟渚胯В鍐� socket榛忓寘銆佸垎鍖呯殑闂
.setReaderProtocol(new ScoketMessageProtocol())
+ .setCallbackIDFactory(new CallbackIDFactoryImpl())
.setMaxWriteBytes(150)
.setMaxReadBytes(150)
- .setRequestTimeout(5 * 1000)
-
+ .setRequestTimeout(20 * 1000)
.setBackupAddress(new SocketAddress(backUpIp, backUpPort))
.build();
diff --git a/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java b/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java
index 1078008..be1ce94 100644
--- a/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java
@@ -1,7 +1,5 @@
package com.dayu.recharge.activity;
-import android.app.Activity;
-import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
@@ -11,12 +9,10 @@
import androidx.appcompat.app.AppCompatActivity;
-import com.dayu.recharge.MyApplication;
import com.dayu.recharge.R;
import com.dayu.recharge.dao.AppDatabase;
import com.dayu.recharge.dao.BaseDaoSingleton;
import com.dayu.recharge.view.TitleBar;
-import com.easysocket.EasySocket;
/**
* Created by zuoxiao on 2018/12/20.
@@ -58,13 +54,7 @@
if (view != null && view instanceof TitleBar) {
titleBar = (TitleBar) view;
- titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- finish();
- }
- });
+ titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, v -> finish());
}
} catch (Exception e) {
e.printStackTrace();
diff --git a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
index 7d23e6d..adc20fe 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -5,6 +5,7 @@
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
@@ -42,7 +43,9 @@
import com.dayu.recharge.utils.MyCommon;
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.TipUtil;
+import com.dayu.recharge.view.ConfirmDialog;
import com.dayu.recharge.view.ProgressDialog;
+import com.dayu.recharge.view.TitleBar;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.Arrays;
@@ -71,6 +74,11 @@
boolean configDeviceRegiestFlag = false;
boolean configPowerFlag = false;
+
+ /**
+ * 鏄惁涓嶅啀楠岃瘉鐢ㄦ埛鐩存帴鍐欏崱
+ */
+ boolean isAgainWrite = false;
UserCardBean userCardBean;
@@ -105,6 +113,7 @@
//鍏呭�奸�氫俊鏄惁瀹屾垚
boolean rechargeIsOk = false;
ActivityWriteTextBinding binding;
+ ConfirmDialog confirmDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -113,12 +122,61 @@
binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this));
setContentView(binding.getRoot());
nfcWreatActivity = this;
+ setData();
getData();
baseApp = (MyApplication) getApplication();
} catch (Exception e) {
e.printStackTrace();
CrashReport.postCatchedException(e);
}
+ }
+
+
+ private void setData() {
+ titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, v -> {
+ //澶勭悊鍥犵敤鎴疯鎿嶄綔杩斿洖瀵艰嚧涓嶈兘鍐欏崱鐨勯棶棰橈紝娣诲姞浜屾纭
+ back();
+ });
+ }
+
+ private void back() {
+ if (isUser) {
+ confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> {
+ confirmDialog.dismiss();
+ myFinish();
+ });
+ confirmDialog.show();
+ } else if (!TextUtils.isEmpty(morny)) {
+ confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> {
+ confirmDialog.dismiss();
+ myFinish();
+ });
+ confirmDialog.show();
+ } else {
+ finish();
+ }
+ }
+
+
+ private void myFinish() {
+ if (NewCardActivity.newCardActivity != null) {
+ NewCardActivity.newCardActivity.finish();
+ }
+ if (RechargeActivity.rechargeActivity != null) {
+ RechargeActivity.rechargeActivity.finish();
+ }
+ NFCWreatActivity.nfcWreatActivity.finish();
+ }
+
+
+ //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀�
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ back();
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
}
@@ -201,6 +259,8 @@
binding.textView.setTextColor(getResources().getColor(R.color.red));
} else if (cardType.equals("-1")) {
TipUtil.show(NFCWreatActivity.this, "璇峰嬁绉诲姩鍗$墖锛岃鍗″け璐ヨ閲嶈瘯锛侊紒");
+ } else if (cardType.equals("-2")) {
+ TipUtil.show(NFCWreatActivity.this, "璇诲崱澶辫触,璇锋鏌ュ崱鏄惁鏄敤鎴峰崱");
} else {
Log.i("NFCWreatActivity", "olduserCard!=null saveData");
saveData();
@@ -219,7 +279,6 @@
|| configureDeviceRegistrationCrad != null
|| configurationPowerCard != null) {
if (userCard != null && TextUtils.isEmpty(morny)) {
-
userFlag = WriteCardUtils.setUser(intent, userCard, this);
}
if (cleanCard != null) {
@@ -360,7 +419,7 @@
rechargeRequestBean.setBalance(morny);
rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this));
- SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(),"95", new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
@@ -437,7 +496,7 @@
UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData();
if (userCardold != null) {
//鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱
- if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
+ if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode()) || isAgainWrite) {
userCard.setState("00");
userFlag = WriteCardUtils.setUser(intent, userCard, this);
// 鎵撳嵃鐩稿叧
@@ -445,12 +504,14 @@
setPrinterData(rechargeBean);
startDetailActivity(userName, "鍚敤");
} else {
- TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊鍐嶈瘯");
+ isAgainWrite = true;
+ TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊璐村崱");
}
} else {
TipUtil.show(NFCWreatActivity.this, "璇诲彇鐨勫崱鍜屽厖鍊肩殑鍗′笉涓�鑷�");
}
}
+ stopAnim();
}
private void setmanageCard(Intent intent, final ManageCard manageCard) {
@@ -539,13 +600,7 @@
detail.putExtra("morny", morny);
}
startActivity(detail);
- if (NewCardActivity.newCardActivity != null) {
- NewCardActivity.newCardActivity.finish();
- }
- if (RechargeActivity.rechargeActivity != null) {
- RechargeActivity.rechargeActivity.finish();
- }
- NFCWreatActivity.nfcWreatActivity.finish();
+ myFinish();
}
/**
@@ -564,7 +619,7 @@
requestBean.setInitCode(initCode);
requestBean.setInitPeasantCode(initPeasantCode);
requestBean.setXuLie(SocketUtil.getXuLie(this));
- SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94",new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
if (CRC8.isCRC8(readData.getOriginDataBytes())) {
@@ -602,12 +657,7 @@
//琛ュ崱閫昏緫
userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
if (userFlag) {
- TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", new TipUtil.TipListener() {
- @Override
- public void onCancle() {
- NFCWreatActivity.this.finish();
- }
- });
+ TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", () -> NFCWreatActivity.this.finish());
}
return;
} else if ("01".equals(state)) {
@@ -642,7 +692,6 @@
@Override
public void onSocketError(int code, String msg) {
stopAnim();
-
TipUtil.show(NFCWreatActivity.this, msg);
}
});
@@ -657,6 +706,7 @@
protected void onDestroy() {
super.onDestroy();
+ ProgressDialog.dismiss();
nfcWreatActivity = null;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
index 7242c4d..64d3a63 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
@@ -53,7 +53,6 @@
public static final int SCAN_IDCARD_REQUEST = 1;
UserCardBean userCardBean;
- Dialog dialog;
ActivityNewCardBinding newCardBinding;
AdminDataBean adminData;
@@ -271,7 +270,7 @@
initCardRequestBean.setPhone(phoneBuffer.toString());
String userId = userCardBean.getUserID();
initCardRequestBean.setIdCard(SocketUtil.str2HexStr(userId));
- SocketNet.getInstance().sendTestMessage(initCardRequestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(initCardRequestBean.pack(), "93",new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
diff --git a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
index 5e55056..5371a40 100644
--- a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
+++ b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java
@@ -39,20 +39,6 @@
*/
public class ReadCardAcitivy extends BaseNfcActivity {
- private static final int USER_CRAD = 1;
- private static final int MANAGE_CRAD = 2;
- private static final int CLEAN_CARD = 3;
- private static final int REGISTERED_CARD = 4;
- private static final int CLEAN_ALL_USER = 5;
- private static final int DOMAIN_CARD = 6;
- private static final int TEST_CARD = 7;
-
- private static final int CONFIGURATION_CARD = 8;
-
- private static final int CONFIGURATION_POWER_CARD = 9;
- private static final int PASS_WORD_CRAD = 10;
-
-
volatile UserCard userCard;
ActivityRedCardBinding redCardBinding;
@@ -229,7 +215,7 @@
requestBean.setInitCode(initCode);
requestBean.setInitPeasantCode(initPeasantCode);
requestBean.setXuLie(SocketUtil.getXuLie(this));
- SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94",new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
if (CRC8.isCRC8(readData.getOriginDataBytes())) {
@@ -285,6 +271,7 @@
@Override
public void onSocketError(int code, String msg) {
+ stopAnim();
TipUtil.show(ReadCardAcitivy.this, msg);
}
});
diff --git a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
index 3c77359..57b9d9b 100644
--- a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
@@ -167,7 +167,7 @@
requestBean.setInitCode(initCode);
requestBean.setInitPeasantCode(initPeasantCode);
requestBean.setXuLie(SocketUtil.getXuLie(this));
- SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() {
+ SocketNet.getInstance().sendTestMessage(requestBean.pack(),"94", new SocketCallBack() {
@Override
public void onSocketResponse(SocketData readData) {
ProgressDialog.dismiss();
diff --git a/app/src/main/java/com/dayu/recharge/net/CallbackIDFactoryImpl.java b/app/src/main/java/com/dayu/recharge/net/CallbackIDFactoryImpl.java
new file mode 100644
index 0000000..a82aa9c
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/net/CallbackIDFactoryImpl.java
@@ -0,0 +1,29 @@
+package com.dayu.recharge.net;
+
+import com.dayu.recharge.tools.HexUtil;
+import com.easysocket.config.CallbackIDFactory;
+import com.easysocket.entity.OriginReadData;
+
+/**
+ * author: zuo
+ * Date: 2024-03-26
+ * Time: 10:02
+ * 澶囨敞锛�
+ */
+public class CallbackIDFactoryImpl extends CallbackIDFactory {
+
+ /**
+ * @param
+ * @return
+ */
+ @Override
+ public String getCallbackID(OriginReadData data) {
+ try {
+ String AFN = HexUtil.byteToHex(data.getBodyBytes()[1]);
+ return AFN;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/recharge/net/CallbackSender.java b/app/src/main/java/com/dayu/recharge/net/CallbackSender.java
new file mode 100644
index 0000000..f8faed0
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/net/CallbackSender.java
@@ -0,0 +1,38 @@
+package com.dayu.recharge.net;
+
+import com.easysocket.entity.basemsg.SuperCallbackSender;
+
+/**
+ * author: zuo
+ * Date: 2024-03-25
+ * Time: 17:33
+ * 澶囨敞锛氬甫鏈夊洖璋冩爣璇嗙殑鍙戦�佹秷鎭�
+ */
+public class CallbackSender extends SuperCallbackSender {
+
+ //閫氫俊绫诲瀷鐮�
+ String AFN;
+
+ public String getAFN() {
+ return AFN;
+ }
+
+ public void setAFN(String AFN) {
+ this.AFN = AFN;
+ }
+
+ byte[] data;
+
+ public byte[] getData() {
+ return data;
+ }
+
+ public void setData(byte[] data) {
+ this.data = data;
+ }
+
+ @Override
+ public byte[] pack() {
+ return data;
+ }
+}
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;
+ }
+
}
diff --git a/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java b/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java
index 16a3046..a1923c1 100644
--- a/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java
+++ b/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java
@@ -7,6 +7,8 @@
import android.nfc.tech.MifareClassic;
import android.util.Log;
+import com.dayu.recharge.card.UserCard;
+
import java.io.IOException;
/**
@@ -55,6 +57,67 @@
return helper;
}
+
+ /**
+ * 鍐欏崱
+ *
+ * @param userCard 鐢ㄦ埛鍗″唴瀹�
+ * @param
+ */
+ public boolean writeUserData(UserCard userCard) {
+ if (userCard != null) {
+ int a = 1;
+ try {
+ MifareClassic mfc = MifareClassic.get(tag);
+ if (null != mfc) {
+ try {
+ //杩炴帴NFC
+ mfc.connect();
+ //楠岃瘉鎵囧尯瀵嗙爜
+ boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey);
+ if (!isOpen) {
+ isOpen = mfc.authenticateSectorWithKeyA(a, companyKey);
+ } else {
+ //鍐欏崱鏃朵慨鏀规墍鏈夊瘑鐮�
+ changePasword(a, mfc);
+ }
+ if (isOpen) {
+ for (int b = 0; b < 3; b++) {
+ byte[] data;
+ if (b == 0) {
+ data = userCard.getZeroBytes();
+ } else if (b == 1) {
+ data = userCard.getOneBytes();
+ } else {
+ data = userCard.getTwoBytes();
+ }
+ int bIndex = mfc.sectorToBlock(a);
+ //鍐欏崱
+ mfc.writeBlock(bIndex + b, data);
+ }
+ return true;
+ }
+ return false;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ } finally {
+ try {
+ mfc.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ return false;
+ }
+
+
/**
* 鍐欏崱
*
@@ -65,8 +128,6 @@
*/
public boolean writeData(byte[] str, int a, int b) {
Log.i("NFCWreatActivity", "writeData: a=" + a + " b=" + b);
- //鍐欏崱鏃朵慨鏀规墍鏈夊瘑鐮�
- changePasword(a);
if (str.length <= 16) {
try {
MifareClassic mfc = MifareClassic.get(tag);
@@ -90,6 +151,9 @@
boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey);
if (!isOpen) {
isOpen = mfc.authenticateSectorWithKeyA(a, companyKey);
+ } else {
+ //鍐欏崱鏃朵慨鏀规墍鏈夊瘑鐮�
+ changePasword(a, mfc);
}
if (isOpen) {
int bIndex = mfc.sectorToBlock(a);
@@ -124,54 +188,52 @@
* @param a 涔﹀啓鐨勬墖鍖�
* // * @param callback 杩斿洖鐩戝惉
*/
- public boolean changePasword(int a) {
- MifareClassic mfc = MifareClassic.get(tag);
+ public boolean changePasword(int a, MifareClassic mfc) {
+// MifareClassic mfc = MifareClassic.get(tag);
byte[] data = new byte[16];
if (null != mfc) {
try {
- mfc.connect();
-
- int count = mfc.getSectorCount();
- boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey);
-
- //楠岃瘉鏄惁鏄粯璁ゅ瘑鐮侊紝褰撻粯璁ゅ瘑鐮佹椂淇敼瀵嗙爜
- if (isOpen) {
- //灏嗗瘑鐮佽浆鎹负keyA
- byte[] dataA = HexUtil.hexToByteArray(companyKeyA);
- for (int i = 0; i < dataA.length; i++) {
- data[i] = dataA[i];
- }
- //杈撳叆鎺у埗浣�
- data[6] = (byte) 0xFF;
- data[7] = (byte) 0x07;
- data[8] = (byte) 0x80;
- data[9] = (byte) 0x69;
- byte[] dataB = HexUtil.hexToByteArray(companyKeyB);
- //灏嗗瘑鐮佽浆鎹负KeyB
- for (int i = 0; i < dataB.length; i++) {
- data[i + 10] = dataB[i];
- }
- int bIndex = mfc.sectorToBlock(a);
- int bCount = mfc.getBlockCountInSector(a);
- //鍐欏埌鎵囧尯鐨勬渶鍚庝竴涓潡
- mfc.writeBlock(bIndex + bCount - 1, data);
+// mfc.connect();
+// int count = mfc.getSectorCount();
+// boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey);
+// //楠岃瘉鏄惁鏄粯璁ゅ瘑鐮侊紝褰撻粯璁ゅ瘑鐮佹椂淇敼瀵嗙爜
+// if (isOpen) {
+ //灏嗗瘑鐮佽浆鎹负keyA
+ byte[] dataA = HexUtil.hexToByteArray(companyKeyA);
+ for (int i = 0; i < dataA.length; i++) {
+ data[i] = dataA[i];
+ }
+ //杈撳叆鎺у埗浣�
+ data[6] = (byte) 0xFF;
+ data[7] = (byte) 0x07;
+ data[8] = (byte) 0x80;
+ data[9] = (byte) 0x69;
+ byte[] dataB = HexUtil.hexToByteArray(companyKeyB);
+ //灏嗗瘑鐮佽浆鎹负KeyB
+ for (int i = 0; i < dataB.length; i++) {
+ data[i + 10] = dataB[i];
+ }
+ int bIndex = mfc.sectorToBlock(a);
+ int bCount = mfc.getBlockCountInSector(a);
+ //鍐欏埌鎵囧尯鐨勬渶鍚庝竴涓潡
+ mfc.writeBlock(bIndex + bCount - 1, data);
// byte[] dataa = mfc.readBlock(bIndex + bCount - 1);
// // 淇敼瀵嗙爜 A
// mfc.writeBlock(mfc.sectorToBlock(a) + 3, dataA);
// // 淇敼瀵嗙爜 B
// mfc.writeBlock(mfc.sectorToBlock(a) + 7, dataB);
- }
+// }
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
// callback.isSusses(false);
} finally {
- try {
- mfc.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
+// try {
+// mfc.close();
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
}
}
return false;
diff --git a/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java b/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java
index e8ed9d6..412adeb 100644
--- a/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java
+++ b/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java
@@ -133,7 +133,7 @@
} else {
Log.i("NFCWreatActivity", "isOpen===" + isOpen);
- return "-1";
+ return "-2";
}
} catch (IOException e) {
return "-1";
diff --git a/app/src/main/java/com/dayu/recharge/tools/WriteCardUtils.java b/app/src/main/java/com/dayu/recharge/tools/WriteCardUtils.java
index 9ace2a3..245cd36 100644
--- a/app/src/main/java/com/dayu/recharge/tools/WriteCardUtils.java
+++ b/app/src/main/java/com/dayu/recharge/tools/WriteCardUtils.java
@@ -17,15 +17,8 @@
//鍚戝崱鍐欏叆鐢ㄦ埛淇℃伅
public static boolean setUser(Intent intent, UserCard userCard, Activity activity) {
- userFlag = NFCWriteHelper.getInstence(intent,activity).writeData(userCard.getZeroBytes(), 1, 0);
- if (!userFlag) {
- return false;
- }
- userFlag = NFCWriteHelper.getInstence(intent,activity).writeData(userCard.getOneBytes(), 1, 1);
- if (!userFlag) {
- return false;
- }
- userFlag = NFCWriteHelper.getInstence(intent,activity).writeData(userCard.getTwoBytes(), 1, 2);
+ userFlag = NFCWriteHelper.getInstence(intent,activity).writeUserData(userCard);
+
return userFlag;
}
}
diff --git a/app/src/main/java/com/dayu/recharge/view/ConfirmDialog.java b/app/src/main/java/com/dayu/recharge/view/ConfirmDialog.java
new file mode 100644
index 0000000..68ccef3
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/view/ConfirmDialog.java
@@ -0,0 +1,54 @@
+package com.dayu.recharge.view;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.dayu.recharge.R;
+
+/**
+ * author: zuo
+ * Date: 2024-03-25
+ * Time: 13:22
+ * 澶囨敞锛�
+ */
+public class ConfirmDialog extends Dialog {
+
+
+ Activity mContext;
+ View.OnClickListener mListner;
+
+ public ConfirmDialog(@NonNull Activity context) {
+ super(context, R.style.ws_pay_showSelfDialog);
+ mContext = context;
+ initView();
+ }
+
+ public ConfirmDialog(@NonNull Activity context, View.OnClickListener listner) {
+ super(context, R.style.ws_pay_showSelfDialog);
+ mContext = context;
+ mListner = listner;
+ initView();
+ }
+
+ private void initView() {
+ getWindow().setGravity(Gravity.CENTER);
+ setContentView(R.layout.confirm_dialog);
+ setCanceledOnTouchOutside(false);
+ TextView cannel = (TextView) this.findViewById(R.id.confirm_cancel);
+ TextView ok = (TextView) this.findViewById(R.id.confirm_ok);
+ cannel.setOnClickListener(v -> ConfirmDialog.this.dismiss());
+ if (mListner == null) {
+ ok.setOnClickListener((View v) -> {
+ ConfirmDialog.this.dismiss();
+ mContext.finish();
+ });
+ } else {
+ ok.setOnClickListener(mListner);
+ }
+ }
+}
diff --git a/app/src/main/java/com/dayu/recharge/view/ProgressDialog.java b/app/src/main/java/com/dayu/recharge/view/ProgressDialog.java
index 4ac546d..e535cf3 100644
--- a/app/src/main/java/com/dayu/recharge/view/ProgressDialog.java
+++ b/app/src/main/java/com/dayu/recharge/view/ProgressDialog.java
@@ -2,9 +2,7 @@
import android.app.Activity;
import android.app.Dialog;
-import android.content.Context;
-import com.dayu.recharge.activity.NewCardActivity;
import com.tencent.bugly.crashreport.CrashReport;
/**
@@ -22,7 +20,6 @@
dialog = android.app.ProgressDialog.show(activity, "", "姝e湪閫氫俊璇风◢鍚�", true, true);
} catch (Exception e) {
e.printStackTrace();
- CrashReport.postCatchedException(e);
}
}
diff --git a/app/src/main/res/layout/confirm_dialog.xml b/app/src/main/res/layout/confirm_dialog.xml
new file mode 100644
index 0000000..cdde6c5
--- /dev/null
+++ b/app/src/main/res/layout/confirm_dialog.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#00ffffff"
+ android:gravity="center"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ws_pay_bg_dialog_top_stroke"
+ android:gravity="center"
+ android:orientation="vertical"
+ android:padding="20dp">
+
+ <TextView
+ android:id="@+id/confirm_data"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="22sp"
+ android:textColor="#000000"
+ android:text="纭閫�鍑哄悧锛�"
+ />
+
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/confirm_cancel"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:background="@drawable/ws_login_red_btn_one"
+ android:paddingLeft="15dp"
+ android:paddingTop="5dp"
+ android:paddingRight="15dp"
+ android:paddingBottom="5dp"
+ android:text="鍙栨秷"
+ android:textSize="@dimen/text_size" />
+
+ <TextView
+ android:id="@+id/confirm_ok"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="100dp"
+ android:layout_marginTop="20dp"
+ android:background="@drawable/ws_login_red_btn_one"
+ android:paddingLeft="15dp"
+ android:paddingTop="5dp"
+ android:paddingRight="15dp"
+ android:paddingBottom="5dp"
+ android:text="纭"
+ android:textSize="@dimen/text_size" />
+
+ </LinearLayout>
+
+
+ </LinearLayout>
+
+</LinearLayout>
+
diff --git a/easysocket/.idea/.gitignore b/easysocket/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/easysocket/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/easysocket/.idea/gradle.xml b/easysocket/.idea/gradle.xml
new file mode 100644
index 0000000..de8896e
--- /dev/null
+++ b/easysocket/.idea/gradle.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <option name="testRunner" value="GRADLE" />
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="gradleJvm" value="jbr-17" />
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project>
\ No newline at end of file
diff --git a/easysocket/.idea/misc.xml b/easysocket/.idea/misc.xml
new file mode 100644
index 0000000..452c977
--- /dev/null
+++ b/easysocket/.idea/misc.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
+ <component name="ProjectRootManager" version="2" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/build/classes" />
+ </component>
+ <component name="ProjectType">
+ <option name="id" value="Android" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/easysocket/.idea/vcs.xml b/easysocket/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/easysocket/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/easysocket/local.properties b/easysocket/local.properties
new file mode 100644
index 0000000..a4b82aa
--- /dev/null
+++ b/easysocket/local.properties
@@ -0,0 +1,8 @@
+## This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# Location of the SDK. This is only used by Gradle.
+# For customization when using a Version Control System, please read the
+# header note.
+#Mon Mar 25 17:17:41 CST 2024
+sdk.dir=D\:\\android\\sdk
diff --git a/easysocket/src/main/java/com/easysocket/EasySocket.java b/easysocket/src/main/java/com/easysocket/EasySocket.java
index 56dba09..eb8eee0 100644
--- a/easysocket/src/main/java/com/easysocket/EasySocket.java
+++ b/easysocket/src/main/java/com/easysocket/EasySocket.java
@@ -12,8 +12,6 @@
import com.easysocket.interfaces.conn.ISocketActionListener;
import com.easysocket.utils.LogUtil;
-import java.nio.charset.Charset;
-
/**
* Author锛欰lex
* Date锛�2019/6/4
@@ -129,8 +127,9 @@
*/
public EasySocket disconnect(boolean isNeedReconnect) {
LogUtil.d("EasySocket--銆媎isconnect");
- if (defConnection != null)
- getDefconnection().disconnect(isNeedReconnect);
+ if (defConnection != null) {
+ getDefconnection().disconnect(isNeedReconnect);
+ }
return this;
}
diff --git a/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java b/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java
index af5491a..9dc1556 100644
--- a/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java
+++ b/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java
@@ -122,12 +122,9 @@
public synchronized void connect() {
if (connectionStatus.get() == SocketStatus.SOCKET_DISCONNECTING) {
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- LogUtil.d("---> socket>>connect>>姝e湪鏂紑杩炴帴锛屽欢鏃朵竴绉掑煼琛岄噸杩�");
- connect();
- }
+ new Handler().postDelayed(() -> {
+ LogUtil.d("---> socket>>connect>>姝e湪鏂紑杩炴帴锛屽欢鏃朵竴绉掑煼琛岄噸杩�");
+ connect();
}, 1000); // 寤舵椂1绉�
return;
}
@@ -328,6 +325,10 @@
return this;
}
+ /**
+ * 娑堟伅鍥炶皟涓昏澶勭悊瓒呮椂娑堟伅
+ * @param callBack
+ */
@Override
public void onCallBack(SuperCallBack callBack) {
callbackResponseDispatcher.addSocketCallback(callBack);
diff --git a/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java b/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java
index 5ce8190..f4290bb 100644
--- a/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java
+++ b/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java
@@ -29,7 +29,7 @@
* 淇濆瓨鍙戦�佺殑姣忎釜鍥炶皟娑堟伅鐨勭洃鍚疄渚嬶紝key涓哄洖璋冩爣璇哻allbackId锛岃繖鏍峰洖璋冩秷鎭湁鍙嶉鐨勬椂鍊欙紝灏卞彲浠ユ壘鍒板苟璋冪敤
* 瀵瑰簲鐨勭洃鍚璞�
*/
- private Map<String, SuperCallBack> callbacks = new HashMap<>();
+ private volatile Map<String, SuperCallBack> callbacks = new HashMap<>();
/**
* 淇濆瓨闇�瑕佽繘琛岃秴鏃舵娴嬬殑璇锋眰锛岃繖鏄竴涓欢鏃堕槦鍒楋紝鍏冪礌瓒呮椂鐨勬椂鍊欎細琚彇鍑烘潵
*/
@@ -76,13 +76,19 @@
timeoutExecutor.execute(new Runnable() {
@Override
public void run() {
+ LogUtil.d("浠诲姟瓒呮椂杞");
try {
// 鍙湁瓒呮椂鐨勫厓绱犳墠浼氳鍙栧嚭锛屾病鏈夌殑璇濅細琚瓑寰�
timeoutItem item = timeoutQueue.take();
if (item != null) {
+ LogUtil.d("瓒呮椂浠诲姟ID锛�" + item.callbackId);
SuperCallBack callBack = callbacks.remove(item.callbackId);
- if (callBack != null)
+ if (callBack != null) {
+ LogUtil.d("瓒呮椂浠诲姟ID锛�" + item.callbackId + "callBack != null");
callBack.onError(new RequestTimeOutException("request timeout"));
+ }else {
+ LogUtil.d("瓒呮椂浠诲姟ID锛�" + item.callbackId + " callBack == null");
+ }
}
} catch (InterruptedException e) {
e.printStackTrace();
diff --git a/local.properties b/local.properties
index b21f6f6..285b71e 100644
--- a/local.properties
+++ b/local.properties
@@ -4,6 +4,6 @@
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
-#Tue Feb 27 10:36:34 CST 2024
-sdk.dir=D\:\\AndroidStudio\\sdk
+#Fri Mar 15 09:00:13 CST 2024
ndk.dir=D\:\\android\\sdk\\ndk\\android-ndk-r21
+sdk.dir=D\:\\android\\sdk
--
Gitblit v1.8.0