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/NfcReadHelper.kt | 247 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 243 insertions(+), 4 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt b/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt
index a8f81f1..2466055 100644
--- a/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt
+++ b/generallibrary/src/main/java/com/dayu/general/tool/NfcReadHelper.kt
@@ -2,8 +2,17 @@
import android.app.Activity
import android.content.Intent
+import android.view.View
+import android.widget.RelativeLayout
import com.dayu.baselibrary.tools.nfc.BaseNfcReadHelper
import com.dayu.baselibrary.tools.nfc.NfcReadAdapter
+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
/**
* NFC璇诲彇宸ュ叿绫荤殑Kotlin瀹炵幇
@@ -11,6 +20,9 @@
class NfcReadHelper private constructor(intent: Intent, activity: Activity) : GeBaseHelper(activity) {
private val adapter: NfcReadAdapter = NfcReadAdapter(intent, activity)
+ private val compositeDisposable = CompositeDisposable()
+ private var loadingContainer: RelativeLayout? = null
+ private var progressWheel: ProgressWheel? = null
companion object {
private var helper: NfcReadHelper? = null
@@ -27,7 +39,83 @@
}
}
+ /**
+ * 璁剧疆鍔犺浇鍔ㄧ敾瑙嗗浘
+ */
+ 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()
+ }
+ }
+
+ /**
+ * 鑾峰彇鍗″彿(寮傛)
+ */
+ fun getCardNumberAsync(callback: (String) -> Unit): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ getCardNumber()
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ callback(result)
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback("")
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
+ }
+
+ /**
+ * 鑾峰彇鍗″彿(涓嶅叧闂繛鎺ワ紝寮傛)
+ */
+ fun getCardNumberNoCloseAsync(callback: (String) -> Unit): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ getCardNumberNoClose()
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ callback(result)
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback("")
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
+ }
/**
* 鑾峰彇鍗″彿
@@ -50,19 +138,79 @@
}
}
-
-
+ /**
+ * 鑾峰彇鍗$墖绫诲瀷鍜屽崱鍙�(寮傛)
+ */
+ fun getCardTypeAndCardNumberAsync(callback: (String) -> Unit): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ getCardTypeAndCardNumber()
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ callback(result)
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback("")
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
+ }
/**
* 鑾峰彇鍗$墖绫诲瀷鍜屽崱鍙�
*/
fun getCardTypeAndCardNumber(): String {
return try {
- adapter.cradTypeAndCardNumber
+ adapter.getCradTypeAndCardNumber(7,0,8)
} catch (e: Exception) {
e.printStackTrace()
""
}
+ }
+
+ /**
+ * 璇诲彇NFC鍗$殑鍏ㄩ儴淇℃伅(寮傛)
+ */
+ fun getAllDataAsync(callback: BaseNfcReadHelper.NFCCallMapback) {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ try {
+ adapter.getAllData(object : BaseNfcReadHelper.NFCCallMapback {
+ override fun callBack(data: Map<String, List<ByteArray>>) {
+ hideLoading()
+ callback.callBack(data)
+ }
+
+ override fun error(code: Int) {
+ hideLoading()
+ callback.error(code)
+ }
+ })
+ true
+ } catch (e: Exception) {
+ e.printStackTrace()
+ false
+ }
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ success ->
+ if (!success) {
+ hideLoading()
+ callback.error(-1)
+ }
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback.error(-1)
+ })
+
+ compositeDisposable.add(disposable)
}
/**
@@ -74,6 +222,29 @@
} catch (e: Exception) {
e.printStackTrace()
}
+ }
+
+ /**
+ * 鑾峰彇涓�涓墖鍖虹殑鏁版嵁(寮傛)
+ */
+ fun getOneSectorDataAsync(callback: (List<ByteArray>?) -> Unit): Disposable {
+ showLoading()
+ val disposable = Observable.fromCallable<Any> {
+ getOneSectorData() as Any
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ result ->
+ hideLoading()
+ callback(result as? List<ByteArray>)
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback(null)
+ })
+
+ compositeDisposable.add(disposable)
+ return disposable
}
/**
@@ -89,6 +260,46 @@
}
/**
+ * 璇诲彇NFC鍗$殑鐗瑰畾鎵囧尯淇℃伅(寮傛)
+ */
+ fun getDataAsync(a: Int, b: Int, callback: BaseNfcReadHelper.NFCCallByteback) {
+ showLoading()
+ val disposable = Observable.fromCallable {
+ try {
+ adapter.getData(a, b, object : BaseNfcReadHelper.NFCCallByteback {
+ override fun callBack(data: ByteArray) {
+ hideLoading()
+ callback.callBack(data)
+ }
+
+ override fun error(code: Int) {
+ hideLoading()
+ callback.error(code)
+ }
+ })
+ true
+ } catch (e: Exception) {
+ e.printStackTrace()
+ false
+ }
+ }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ success ->
+ if (!success) {
+ hideLoading()
+ callback.error(-1)
+ }
+ }, { error ->
+ hideLoading()
+ error.printStackTrace()
+ callback.error(-1)
+ })
+
+ compositeDisposable.add(disposable)
+ }
+
+ /**
* 璇诲彇NFC鍗$殑鐗瑰畾鎵囧尯淇℃伅
*/
fun getData(a: Int, b: Int, callback: BaseNfcReadHelper.NFCCallByteback) {
@@ -99,5 +310,33 @@
}
}
+ /**
+ * 娓呴櫎鎵�鏈夎闃咃紝闃叉鍐呭瓨娉勬紡
+ */
+ fun clearDisposables() {
+ compositeDisposable.clear()
+ }
-}
\ No newline at end of file
+ /**
+ * 璇诲彇鐢ㄦ埛鍗℃暟鎹�
+ * @return UserCard瀵硅薄锛屽鏋滆鍙栧け璐ュ垯杩斿洖null
+ */
+ fun getUserCardData(): UserCard? {
+ return try {
+ // 鑾峰彇鍩虹鍗℃暟鎹�
+ val baseCard = adapter.getUserCardData(7,UserCard())
+ // 濡傛灉鑾峰彇鎴愬姛涓旀槸UserCard绫诲瀷锛屽垯杩斿洖
+ if (baseCard is UserCard) {
+ baseCard
+ } else {
+ null
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ null
+ }
+ }
+
+
+}
+
--
Gitblit v1.8.0