Эх сурвалжийг харах

优化蓝牙连接业务逻辑

Frankensteinly 10 сар өмнө
parent
commit
ea142fa1a1

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

@@ -55,12 +55,12 @@ import pub.devrel.easypermissions.AfterPermissionGranted
  */
 object BusinessManager {
 
-    // 已连接的蓝牙钥匙集合(TODO 现在的和界面共用,是所有的,要改掉)
+    // 已连接的蓝牙钥匙集合
     var deviceList: MutableList<BleBean> = mutableListOf()
     // TODO 待连接的钥匙Mac集合
     val notConnectedList: MutableList<String> = mutableListOf()
     // TODO 是否正在进行准备流程
-    var isPreparing: Boolean = false
+    private var isPreparing: Boolean = false
 
     // TODO 归还设备是否需要登录
     var NEED_AUTH = true
@@ -353,10 +353,17 @@ object BusinessManager {
             val mac = notConnectedList[0]
             prepareBle(mac, ActivityUtils.currentActivity() as BaseActivity<*>, null) { isDone, bleBean ->
                 Executor.runOnMain {
+                    isPreparing = false
+                    if (!isDone) {
+                        // 移到末尾,防止循环影响
+                        notConnectedList.remove(mac)
+                        notConnectedList.add(mac)
+                        connectKey()
+                        return@runOnMain
+                    }
                     if (deviceList.any { it.bleDevice.mac == mac }) {
                         notConnectedList.remove(mac)
                     }
-                    isPreparing = false
                     if (notConnectedList.isNotEmpty()) {
                         connectKey()
                     }
@@ -393,41 +400,19 @@ object BusinessManager {
 
             override fun onScanStarted(success: Boolean) {
                 LogUtil.i("onScanStarted:${success}")
-//                deviceList.clear()
             }
 
             override fun onScanning(bleDevice: BleDevice?) {
                 bleDevice?.let {
                     LogUtil.i("onScanning:${it.mac}")
-                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
-                        if (!it.name.isNullOrBlank()) {
-                            deviceList.add(BleBean(it))
-                            if (notConnectedList.any { itMac -> itMac == bleDevice.mac }) {
-                                doConnect(it, loadingCallBack, prepareDoneCallBack)
-                            } else {}
-                        } else {}
-                    } else {
-                        deviceList.add(BleBean(it))
+                    if (notConnectedList.any { itMac -> itMac == bleDevice.mac }) {
+                        doConnect(it, loadingCallBack, prepareDoneCallBack)
                     }
                 }
             }
 
             override fun onScanFinished(scanResultList: MutableList<BleDevice>?) {
-                //                if (deviceList.isEmpty() == true) {
-//                    ToastUtils.tip(R.string.ble_no_device_found)
-//                    loadingCallBack?.invoke(false, null, false)
-//                    return
-//                }
-//                getBleDeviceByMac(mac)?.bleDevice?.let {
-//                    doConnect(it, loadingCallBack, prepareDoneCallBack)
-//                }
-//                scanResultList?.find { it.mac == mac }?.let {
                 loadingCallBack?.invoke(false, null, null)
-                if (deviceList.isEmpty()) {
-                    LogUtil.w("No ble device found")
-                    loadingCallBack?.invoke(false, null, false)
-                    return
-                }
             }
         })
     }
@@ -566,7 +551,7 @@ object BusinessManager {
     /******************************************蓝牙通用准备结束******************************************/
 
     fun getBleDeviceByMac(mac: String?): BleBean? {
-        return deviceList.find { it.bleDevice.mac == mac && BleManager.getInstance().isConnected(it.bleDevice) }
+        return deviceList.find { it.bleDevice.mac == mac }
     }
 
     /**

+ 1 - 1
app/src/main/java/com/grkj/iscs/modbus/ModBusController.kt

@@ -163,7 +163,7 @@ object ModBusController {
     }
 
     /**
-     * 初始化钥匙——关闭所有钥匙灯光
+     * 初始化钥匙
      */
     private fun initKey() {
         LogUtil.i("initKey : $dockList")