左晓为主开发手持机充值管理机
generallibrary/src/main/java/com/dayu/general/tool/NfcWreatHelper.kt
@@ -78,24 +78,20 @@
     * @param b   书写的块(从0开始数)
     * @param callback 操作结果回调
     */
    fun writeDataAsync(str: ByteArray?, a: Int, b: Int, callback: (Boolean) -> Unit): Disposable {
    fun writeDataAsync(str: ByteArray?, a: Int, b: Int, callback: NFCCallBack): Disposable {
        showLoading()
        val disposable = Observable.fromCallable {
            writeData(str, a, b, object : NFCCallBack {
                override fun isSusses(flag: Boolean, msg: String?) {
                    // 这个回调在IO线程中,不处理UI相关操作
                }
            })
            writeData(str, a, b, callback)
        }
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({ result ->
            hideLoading()
            callback(result)
            callback.isSusses(result, if (result) "写卡成功" else "写卡失败")
        }, { error ->
            hideLoading()
            error.printStackTrace()
            callback(false)
            callback.isSusses(false, "写卡异常: ${error.message}")
        })
        
        compositeDisposable.add(disposable)
@@ -112,33 +108,35 @@
     */
    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 操作结果回调
     * @param callBack 操作结果和消息回调
     */
    fun writeUserDataAsync(userCard: UserCard, callback: (Boolean) -> Unit): Disposable {
    fun writeUserDataAsync(userCard: UserCard, callBack: NFCCallBack): Disposable {
        showLoading()
        val disposable = Observable.fromCallable {
            writeUserData(userCard)
            writeUserData(userCard, callBack)
        }
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({ result ->
            hideLoading()
            callback(result)
            // 结果已经在writeUserData中通过callBack回调了
        }, { error ->
            hideLoading()
            error.printStackTrace()
            callback(false)
            callBack.isSusses(false, "异步写卡异常: ${error.message}")
        })
        
        compositeDisposable.add(disposable)
@@ -161,6 +159,22 @@
    }
    /**
     * 写卡
     *
     * @param userCard 用户卡内容
     * @param callBack 回调接口
     */
    fun writeUserData(userCard: UserCard, callBack: NFCCallBack): Boolean {
        try {
            return adapter.writeUserData(userCard, 7, callBack)
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
            callBack.isSusses(false, "写卡异常: ${e.message}")
        }
        return false
    }
    /**
     * 修改密码(异步)
     *
     * @param ps 密码列表