From 14b15539a8fbbce1145197993e0c062400174ef1 Mon Sep 17 00:00:00 2001
From: zuoxiao <lf_zuo@163.com>
Date: 星期四, 26 六月 2025 16:51:12 +0800
Subject: [PATCH] docs(baselibrary): 更新 NativeNfcReadHelper 类文档
---
generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 161 insertions(+), 4 deletions(-)
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 0a6e18c..c4ad095 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
@@ -2,14 +2,25 @@
import android.app.Activity
import android.content.Intent
+import android.view.View
+import android.widget.RelativeLayout
import com.dayu.baselibrary.tools.nfc.NFCCallBack
import com.dayu.baselibrary.tools.nfc.NfcWriteAdapter
import com.dayu.general.bean.card.UserCard
+import com.pnikosis.materialishprogress.ProgressWheel
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
+import io.reactivex.rxjava3.core.Observable
+import io.reactivex.rxjava3.disposables.CompositeDisposable
+import io.reactivex.rxjava3.disposables.Disposable
+import io.reactivex.rxjava3.schedulers.Schedulers
class NfcWreatHelper private constructor(intent: Intent, activity: Activity) :
GeBaseHelper(activity) {
private val adapter: NfcWriteAdapter = NfcWriteAdapter(intent, activity)
+ private val compositeDisposable = CompositeDisposable()
+ private var loadingContainer: RelativeLayout? = null
+ private var progressWheel: ProgressWheel? = null
companion object {
private var helper: NfcWreatHelper? = null
@@ -27,6 +38,65 @@
}
}
+ /**
+ * 璁剧疆鍔犺浇鍔ㄧ敾瑙嗗浘
+ */
+ fun setLoadingView(loadingContainer: RelativeLayout, progressWheel: ProgressWheel) {
+ this.loadingContainer = loadingContainer
+ this.progressWheel = progressWheel
+ }
+
+ /**
+ * 鏄剧ず鍔犺浇鍔ㄧ敾
+ */
+ private fun showLoading() {
+ loadingContainer?.let {
+ it.visibility = View.VISIBLE
+ }
+ progressWheel?.let {
+ it.spin()
+ }
+ }
+
+ /**
+ * 闅愯棌鍔犺浇鍔ㄧ敾
+ */
+ private fun hideLoading() {
+ loadingContainer?.let {
+ it.visibility = View.GONE
+ }
+ progressWheel?.let {
+ it.stopSpinning()
+ }
+ }
+
+ /**
+ * 鍐欏崱(寮傛)
+ *
+ * @param str 涔﹀啓鍐呭锛�16涓瓧鑺�
+ * @param a 涔﹀啓鐨勬墖鍖� (浠�0寮�濮嬫暟)
+ * @param b 涔﹀啓鐨勫潡(浠�0寮�濮嬫暟)
+ * @param callback 鎿嶄綔缁撴灉鍥炶皟
+ */
+ fun writeDataAsync(str: ByteArray?, a: Int, b: Int, callback: NFCCallBack): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ writeData(str, a, b, callback)
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ callback.isSusses(result, if (result) "鍐欏崱鎴愬姛" else "鍐欏崱澶辫触")
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback.isSusses(false, "鍐欏崱寮傚父: ${error.message}")
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
+ }
/**
* 鍐欏崱
@@ -38,11 +108,39 @@
*/
fun writeData(str: ByteArray?, a: Int, b: Int, callBack: NFCCallBack): Boolean {
try {
- return adapter.writeData(str, a, b, false, callBack)
+ return adapter.writeData(str, a, b, true, callBack)
} catch (e: Exception) {
e.printStackTrace()
}
return false
+ }
+
+
+
+ /**
+ * 鍐欏崱(寮傛)
+ *
+ * @param userCard 鐢ㄦ埛鍗″唴瀹�
+ * @param callBack 鎿嶄綔缁撴灉鍜屾秷鎭洖璋�
+ */
+ fun writeUserDataAsync(userCard: UserCard, callBack: NFCCallBack): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ writeUserData(userCard, callBack)
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ // 缁撴灉宸茬粡鍦╳riteUserData涓�氳繃callBack鍥炶皟浜�
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callBack.isSusses(false, "寮傛鍐欏崱寮傚父: ${error.message}")
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
}
/**
@@ -60,14 +158,73 @@
return false
}
- fun changePS( ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean,nfcCallBack: NFCCallBack): Boolean {
+ /**
+ * 鍐欏崱
+ *
+ * @param userCard 鐢ㄦ埛鍗″唴瀹�
+ * @param callBack 鍥炶皟鎺ュ彛
+ */
+ fun writeUserData(userCard: UserCard, callBack: NFCCallBack): Boolean {
try {
- return adapter.changePasword( ps, isConnect, isClose,nfcCallBack)
+ return adapter.writeUserData(userCard, 7, callBack)
+ } catch (e: java.lang.Exception) {
+ e.printStackTrace()
+ callBack.isSusses(false, "鍐欏崱寮傚父: ${e.message}")
+ }
+ return false
+ }
+
+ /**
+ * 淇敼瀵嗙爜(寮傛)
+ *
+ * @param ps 瀵嗙爜鍒楄〃
+ * @param isConnect 鏄惁淇濇寔杩炴帴
+ * @param isClose 鏄惁鍏抽棴
+ * @param callback 缁撴灉鍥炶皟
+ */
+ fun changePSAsync(ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean, callback: (Boolean, String?) -> Unit): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ var resultSuccess = false
+ var resultMessage: String? = null
+
+ changePS(ps, isConnect, isClose, object : NFCCallBack {
+ override fun isSusses(flag: Boolean, msg: String?) {
+ resultSuccess = flag
+ resultMessage = msg
+ }
+ })
+
+ Pair(resultSuccess, resultMessage)
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ callback(result.first, result.second)
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback(false, error.message)
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
+ }
+
+ fun changePS(ps: List<ByteArray>, isConnect: Boolean, isClose: Boolean, nfcCallBack: NFCCallBack): Boolean {
+ try {
+ return adapter.changePasword(ps, isConnect, isClose, nfcCallBack)
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
return false
}
-
+ /**
+ * 娓呴櫎鎵�鏈夎闃咃紝闃叉鍐呭瓨娉勬紡
+ */
+ fun clearDisposables() {
+ compositeDisposable.clear()
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0