ソースを参照

优化完善连接订阅逻辑,防止重复连接;下发工作票也执行订阅操作,防止是断连状态

Frankensteinly 10 ヶ月 前
コミット
676661e671
1 ファイル変更24 行追加13 行削除
  1. 24 13
      app/src/main/java/com/grkj/iscs/BusinessManager.kt

+ 24 - 13
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -351,9 +351,16 @@ object BusinessManager {
      * 注册连接监听
      */
     private fun registerConnectListener(mac: String, callBack: ((Boolean, BleBean?) -> Unit)? = null) {
-        connectListeners.add(ConnectListener(mac, callBack))
-        if (connectListeners.size == 1) {
-            connectKey()
+        if (connectListeners.any { it.mac == mac }) {
+            return
+        }
+        if (deviceList.none { it.bleDevice.mac == mac }) {
+            connectListeners.add(ConnectListener(mac, callBack))
+            if (connectListeners.size == 1) {
+                connectKey()
+            }
+        } else {
+            callBack?.invoke(true, deviceList.find { it.bleDevice.mac == mac })
         }
     }
 
@@ -598,16 +605,20 @@ object BusinessManager {
         activity: AppCompatActivity,
         loadingCallBack: ((Boolean, String?, Boolean?) -> Unit)?,
     ) {
-        // TODO 蓝牙准备操作
-        val bleBean = getBleDeviceByMac(mac)
-        if (bleBean == null) {
-//            ToastUtils.tip(R.string.simple_key_is_not_connected)
-            return
-        }
-        // 单bleBean json赋值
-        bleBean.ticketSend = generateTicketSendJson(ticketDetail)
-        bleBean.ticketSend?.let { itJson ->
-            sendTicket(itJson, bleBean.bleDevice, loadingCallBack)
+        registerConnectListener(mac) { isDone, bleBean ->
+            if (!isDone) {
+                sendTicketBusiness(mac, ticketDetail, activity, loadingCallBack)
+                return@registerConnectListener
+            }
+            if (bleBean == null) {
+//                ToastUtils.tip(R.string.simple_key_is_not_connected)
+                return@registerConnectListener
+            }
+            // 单bleBean json赋值
+            bleBean.ticketSend = generateTicketSendJson(ticketDetail)
+            bleBean.ticketSend?.let { itJson ->
+                sendTicket(itJson, bleBean.bleDevice, loadingCallBack)
+            }
         }
     }