From f5180b600511d1871635bd364beb5bdd15f6ae88 Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期三, 26 三月 2025 18:05:07 +0800
Subject: [PATCH] feat(nfc): 优化 NFC写卡功能并添加新方法- 在 BaseNfcWriteHelper 中添加了新的 writeData 方法,增加了 isConnect 参数 - 优化了 NativeNfcWriteHelper 中的 writeData 实现,支持选择性连接 NFC - 更新了 NfcWriteAdapter,支持新的 writeData 方法- 修改了 NfcWreatHelper 中的 writeData 方法,使用新的接口 - 优化了 NfcWreatActivity 中的写卡逻辑
---
generallibrary/src/main/java/com/dayu/general/activity/LoginActivity.kt | 3 -
generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt | 3 +
generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt | 2
generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt | 26 ++++++++++++-
generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt | 3 +
generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt | 6 ++-
generallibrary/src/main/res/layout/fragment_my.xml | 2 +
baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/BaseNfcWriteHelper.java | 1
baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java | 27 +++++++++----
baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java | 10 +++++
generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt | 6 +-
baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java | 9 +++-
generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt | 9 ++++
13 files changed, 85 insertions(+), 22 deletions(-)
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/BaseNfcWriteHelper.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/BaseNfcWriteHelper.java
index 80b5db4..378d4d0 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/BaseNfcWriteHelper.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/BaseNfcWriteHelper.java
@@ -36,6 +36,7 @@
public abstract boolean writeData(byte[] str, int a, int b,NFCCallBack callBack);
+ public abstract boolean writeData(byte[] str, int a, int b,boolean isConnect,NFCCallBack callBack);
/**
* 淇敼瀵嗙爜
*
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java
index 1080205..4c8aa09 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java
@@ -128,7 +128,6 @@
@Override
public String getCradType() {
-
MifareClassic mfc = MifareClassic.get(tag);
if (null != mfc) {
try {
@@ -402,7 +401,9 @@
}
}
} else if (!listA_PS.isEmpty()) {
- if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(0))) {
+ if (mfc.authenticateSectorWithKeyA(0, defauleKey)) {
+ isOpen = true;
+ } else if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(0))) {
isOpen = true;
}
}
@@ -448,7 +449,9 @@
}
}
} else if (!listA_PS.isEmpty()) {
- if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(0))) {
+ if (mfc.authenticateSectorWithKeyA(0, defauleKey)) {
+ isOpen = true;
+ } else if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(0))) {
isOpen = true;
}
}
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
index 612e0b6..c427898 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
@@ -125,6 +125,11 @@
@Override
public boolean writeData(byte[] str, int a, int b, NFCCallBack callBack) {
+ return writeData(str, a, b, true,null);
+ }
+
+ @Override
+ public boolean writeData(byte[] str, int a, int b, boolean isConnect, NFCCallBack callBack) {
Log.i("NFCWreatActivity", "writeData: a=" + a + " b=" + b);
if (str.length == 16) {
try {
@@ -132,7 +137,9 @@
if (null != mfc) {
try {
//杩炴帴NFC
- mfc.connect();
+ if (isConnect){
+ mfc.connect();
+ }
//鑾峰彇鎵囧尯鏁伴噺
int count = mfc.getSectorCount();
//濡傛灉浼犺繘鏉ョ殑鎵囧尯澶т簡鎴栬�呭皬浜嗙洿鎺ラ��鍑烘柟娉�
@@ -165,12 +172,12 @@
}
}
} else if (listA_PS.size() != 0 && listA_PS.size() > a) {
- if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(a))) {
+ if (mfc.authenticateSectorWithKeyA(a, defauleKey)){
+ changePasword(a, mfc);
isOpen = true;
- if (listKeyA.get(a).equals(defauleKey)) {
- //褰撳墠涓洪粯璁ょ櫧鍗″瘑鐮佹椂鍐欏崱鏃朵慨鏀瑰瘑鐮�
- changePasword(a, mfc);
- }
+
+ }else if (mfc.authenticateSectorWithKeyA(a, listA_PS.get(a))) {
+ isOpen = true;
}
}
if (isOpen) {
@@ -227,11 +234,15 @@
}
} catch (Exception e) {
e.printStackTrace();
- callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊" + e.getMessage());
+ if (callBack != null) {
+ callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊" + e.getMessage());
+ }
return false;
}
} else {
- callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊锛宐yte鏁扮粍澶у皬涓嶄负16");
+ if (callBack != null) {
+ callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊锛宐yte鏁扮粍澶у皬涓嶄负16");
+ }
}
return false;
}
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java
index 84d11e5..c3db8f3 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NfcWriteAdapter.java
@@ -61,6 +61,16 @@
}
@Override
+ public boolean writeData(byte[] str, int a, int b, boolean isConnect, NFCCallBack callBack) {
+ switch (BaseNfcActivity.adapterType) {
+ case ModelUtils.defaultType:
+ return nativeNfcWriteHelper.writeData(str, a, b,isConnect,callBack);
+
+ }
+ return false;
+ }
+
+ @Override
public boolean changePasword(int a, MifareClassic mfc) {
switch (BaseNfcActivity.adapterType) {
case ModelUtils.defaultType:
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt
new file mode 100644
index 0000000..bfd1ded
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt
@@ -0,0 +1,9 @@
+package com.dayu.general.activity
+
+class CardListActivity:BaseActivity() {
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/LoginActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/LoginActivity.kt
index 4839223..0ba2d6c 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/LoginActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/LoginActivity.kt
@@ -1,13 +1,11 @@
package com.dayu.general.activity
import android.app.Activity
-import android.content.Context
import android.content.Intent
import com.dayu.baselibrary.net.subscribers.SubscriberListener
import com.dayu.baselibrary.utils.ToastUtil
import com.dayu.general.BaseApplication
import com.dayu.general.bean.net.LoginResult
-import com.dayu.general.bean.net.SearchUserResult
import com.dayu.general.net.ApiManager
import com.dayu.general.net.BaseResponse
@@ -46,6 +44,7 @@
BaseApplication.userId = t.content?.id ?: ""
val intent = Intent(myContext, MainActivity::class.java)
myContext.startActivity(intent)
+ myContext.finish()
} else {
// 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
ToastUtil.show(t.msg)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
index e589145..6d9dc1c 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
@@ -1,7 +1,9 @@
package com.dayu.general.activity
import android.os.Bundle
+import android.view.KeyEvent
import android.view.LayoutInflater
+import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.dayu.baselibrary.net.subscribers.SubscriberListener
@@ -9,7 +11,6 @@
import com.dayu.general.BaseApplication
import com.dayu.general.R
import com.dayu.general.adapter.TabAdapter
-import com.dayu.general.bean.net.LoginResult
import com.dayu.general.bean.net.UserInfoResult
import com.dayu.general.databinding.ActivityMainBinding
import com.dayu.general.net.ApiManager
@@ -19,6 +20,8 @@
var binding: ActivityMainBinding? = null
private val fragments: ArrayList<Fragment> = ArrayList()
+ var mExitTime: Long = 0
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(LayoutInflater.from(this))
@@ -26,7 +29,7 @@
setupFragments()
initView()
initTab()
- getUserInfo();
+ getUserInfo()
}
@@ -149,4 +152,23 @@
}
}
}
+
+
+
+ //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀�
+ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ if ((System.currentTimeMillis() - mExitTime) > 2000) {
+ Toast.makeText(this@MainActivity, "鍐嶆寜涓�娆¢��鍑虹▼搴�", Toast.LENGTH_SHORT)
+ .show()
+ mExitTime = System.currentTimeMillis()
+ } else {
+ this@MainActivity.finish()
+ }
+ return true
+ }
+ return super.onKeyDown(keyCode, event)
+ }
+
+
}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt
index fb43396..bb3bf41 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt
@@ -17,6 +17,9 @@
savedInstanceState: Bundle?
): View? {
binding = FragmentMyBinding.inflate(inflater, container, false)
+ binding?.logoutRL?.setOnClickListener {
+ logout()
+ }
return binding?.root
}
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
index cd60f9c..8b61caa 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/NfcWreatActivity.kt
@@ -88,7 +88,7 @@
if (cardType.isNotEmpty()) {
// map["cardType"] = cardType
- map["cardType"] = "5"
+ map["operateType"] = "1"
}
if (remark.isNotEmpty()) {
map["remarks"] = remark
@@ -102,7 +102,9 @@
object : SubscriberListener<BaseResponse<String>>() {
override fun onNext(t: BaseResponse<String>) {
if (t.success) {
+ ToastUtil.show("鍐欏崱鎴愬姛")
this@NfcWreatActivity.finish()
+
} else {
// 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
ToastUtil.show(t.msg)
@@ -111,7 +113,7 @@
override fun onError(e: Throwable?) {
super.onError(e)
- ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}")
+ ToastUtil.show("涓婃姤澶辫触: ${e?.message ?: "鏈煡閿欒"}")
}
}
)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
index 6968f84..a0c6974 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
@@ -78,15 +78,15 @@
val map = mutableMapOf<String, Any>()
if (farmerId.isNotEmpty()) {
- map["farmerId"] = farmerId
+ map["clientNum"] = farmerId
}
if (farmerName.isNotEmpty()) {
- map["farmerName"] = farmerName
+ map["name"] = farmerName
}
if (cardNumber.isNotEmpty()) {
- map["cardNumber"] = cardNumber
+ map["cardNum"] = cardNumber
}
// 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
diff --git a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
index 781ce20..8e10e79 100644
--- a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
+++ b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt
@@ -7,7 +7,8 @@
*/
class NetConstans {
companion object {
- const val BASE_URL: String = "https://no253541tf71.vicp.fun/"
+// const val BASE_URL: String = "https://no253541tf71.vicp.fun/"
+ const val BASE_URL: String = "http://192.168.40.166:54321/"
const val TOKEN_INVALID: String = "0000"
}
diff --git a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
index 12a6fe4..4c5b085 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
@@ -37,7 +37,7 @@
*/
fun writeData(str: ByteArray?, a: Int, b: Int,callBack: NFCCallBack): Boolean {
try {
- return adapter.writeData(str, a, b,callBack)
+ return adapter.writeData(str, a, b,false,callBack)
} catch (e: Exception) {
e.printStackTrace()
}
diff --git a/generallibrary/src/main/res/layout/fragment_my.xml b/generallibrary/src/main/res/layout/fragment_my.xml
index 1494651..87243eb 100644
--- a/generallibrary/src/main/res/layout/fragment_my.xml
+++ b/generallibrary/src/main/res/layout/fragment_my.xml
@@ -311,6 +311,7 @@
android:textStyle="bold" />
<RelativeLayout
+ android:id="@+id/logoutRL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -326,6 +327,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
android:src="@drawable/ic_arrow_right"/>
</RelativeLayout>
--
Gitblit v1.8.0