Przeglądaj źródła

界面调整;修复多蓝牙设备连接冲突

Frankensteinly 10 miesięcy temu
rodzic
commit
898948c0ff

+ 11 - 8
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -367,24 +367,27 @@ object BusinessManager {
                     Log.d("doScanBle", "扫描到的设备:${it.mac}")
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                         if (!it.name.isNullOrBlank()) {
-                            BleUtil.instance?.deviceList?.add(BleBean(it))
+//                            BleUtil.instance?.deviceList?.add(BleBean(it))
                         } else {
 
                         }
                     } else {
-                        BleUtil.instance?.deviceList?.add(BleBean(it))
+//                        BleUtil.instance?.deviceList?.add(BleBean(it))
                     }
                 }
             }
 
             override fun onScanFinished(scanResultList: MutableList<BleDevice>?) {
                 loadingCallBack?.invoke(false, null, null)
-                if (BleUtil.instance?.deviceList?.isEmpty() == true) {
-                    ToastUtils.tip(R.string.ble_no_device_found)
-                    loadingCallBack?.invoke(false, null, false)
-                    return
-                }
-                BleUtil.instance?.getBleDeviceByMac(mac)?.bleDevice?.let {
+//                if (BleUtil.instance?.deviceList?.isEmpty() == true) {
+//                    ToastUtils.tip(R.string.ble_no_device_found)
+//                    loadingCallBack?.invoke(false, null, false)
+//                    return
+//                }
+//                BleUtil.instance?.getBleDeviceByMac(mac)?.bleDevice?.let {
+//                    doConnect(it, loadingCallBack, prepareDoneCallBack)
+//                }
+                scanResultList?.find { it.mac == mac }?.let {
                     doConnect(it, loadingCallBack, prepareDoneCallBack)
                 }
             }

+ 4 - 0
app/src/main/java/com/grkj/iscs/ble/BleUtil.kt

@@ -22,6 +22,10 @@ class BleUtil private constructor() {
 
     // 已连接的设备集合(TODO 现在的和界面共用,是所有的,要改掉)
     var deviceList: MutableList<BleBean> = mutableListOf()
+    // TODO 待连接的mac集合
+    val notConnectedList: MutableList<String> = mutableListOf()
+    // TODO 是否正在进行标准流程
+    var isProcessing: Boolean = false
 
     companion object {
         var instance: BleUtil? = null

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

@@ -4,6 +4,7 @@ import android.content.Context
 import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.base.BaseActivity
+import com.grkj.iscs.ble.BleUtil
 import com.grkj.iscs.extentions.removeLeadingZeros
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_ELEC_LOCK_BOARD
@@ -15,6 +16,10 @@ import com.grkj.iscs.util.ActivityUtils
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
 import java.util.concurrent.Executors
 import java.util.stream.Collectors
 
@@ -182,11 +187,17 @@ object ModBusController {
                         if (PresentationManager.mConfigKeyList.any { it.rfid == rfid }) {
                             val mac = PresentationManager.mConfigKeyList.find { it.rfid == rfid }?.keyMac
                             updateKeyMac(dockBean.addr.toInt(), key.isLeft, mac!!)
+                            if (BleUtil.instance?.notConnectedList?.none { it == mac } == true) {
+                                BleUtil.instance?.notConnectedList?.add(mac)
+                            }
                             // TODO 蓝牙准备操作
-                            BusinessManager.prepareBle(mac, ActivityUtils.currentActivity() as BaseActivity<*>, { b,s,_ ->
-                                (ActivityUtils.currentActivity() as BaseActivity<*>).handleLoading(b, s)
-                            }) { _,_ ->
-
+//                            BusinessManager.prepareBle(mac, ActivityUtils.currentActivity() as BaseActivity<*>, { b,s,_ ->
+//                                (ActivityUtils.currentActivity() as BaseActivity<*>).handleLoading(b, s)
+//                            }) { isDone, bleBean ->
+//
+//                            }
+                            Executor.runOnMain {
+                                connectKey()
                             }
                         }
                     }
@@ -198,6 +209,33 @@ object ModBusController {
         }
     }
 
+    private fun connectKey() {
+        if (!BleUtil.instance?.notConnectedList.isNullOrEmpty()) {
+            if (BleUtil.instance?.isProcessing == true) {
+                Executor.delayOnMain(1000) {
+                    connectKey()
+                }
+            } else {
+                BleUtil.instance?.isProcessing = true
+                val mac = BleUtil.instance?.notConnectedList?.get(0)
+                println("haha1 : $mac")
+                BusinessManager.prepareBle(mac!!, ActivityUtils.currentActivity() as BaseActivity<*>, { b,s,_ ->
+                    (ActivityUtils.currentActivity() as BaseActivity<*>).handleLoading(b, s)
+                }) { isDone, bleBean ->
+                    Executor.runOnMain {
+                        if (BleUtil.instance!!.deviceList.any { it.bleDevice.mac == mac }) {
+                            BleUtil.instance?.notConnectedList?.remove(mac)
+                        }
+                        BleUtil.instance?.isProcessing = false
+                        if (!BleUtil.instance?.notConnectedList.isNullOrEmpty()) {
+                            connectKey()
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     /**
      * 更新状态
      */

+ 13 - 0
app/src/main/res/drawable/simple_btn_bg_normal.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="@dimen/simple_container_radius" />
+    <stroke
+        android:width="@dimen/simple_btn_stroke"
+        android:color="@color/white" />
+    <gradient
+        android:angle="270"
+        android:endColor="#002482"
+        android:startColor="#0075c3"
+        android:type="linear" />
+</shape>

+ 13 - 0
app/src/main/res/drawable/simple_btn_bg_pressed.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="@dimen/simple_container_radius" />
+    <stroke
+        android:width="@dimen/simple_btn_stroke"
+        android:color="@color/white" />
+    <gradient
+        android:angle="270"
+        android:endColor="#001A4B"
+        android:startColor="#005CA3"
+        android:type="linear" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/simple_btn_bg_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true" android:drawable="@drawable/simple_btn_bg_pressed" />
+    <item android:state_pressed="false" android:drawable="@drawable/simple_btn_bg_normal" />
+</selector>

+ 1 - 4
app/src/main/res/drawable/simple_btn_bg.xml → app/src/main/res/drawable/swipe_bg.xml

@@ -2,8 +2,5 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <solid android:color="@color/white" />
-    <corners android:radius="@dimen/selectable_input_radius" />
-    <stroke
-        android:width="@dimen/simple_btn_stroke"
-        android:color="@color/simple_btn_stroke" />
+    <corners android:radius="@dimen/simple_container_radius" />
 </shape>

+ 1 - 2
app/src/main/res/drawable/tip_bg_white.xml

@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
-    <solid android:color="@color/white" />
     <corners android:radius="@dimen/selectable_input_radius" />
     <stroke
         android:width="@dimen/simple_btn_stroke"
-        android:color="#535B67" />
+        android:color="#1acbfd" />
 </shape>

+ 32 - 8
app/src/main/res/drawable/tip_bg_yellow.xml

@@ -1,9 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <solid android:color="@color/simple_tip_bg" />
-    <corners android:radius="@dimen/selectable_input_radius" />
-    <stroke
-        android:width="@dimen/simple_btn_stroke"
-        android:color="#1affffff" />
-</shape>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/selectable_input_radius" />
+            <stroke
+                android:width="4dp"
+                android:color="@color/black" />
+        </shape>
+    </item>
+
+    <item>
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/selectable_input_radius" />
+            <stroke
+                android:width="@dimen/simple_btn_stroke"
+                android:color="@color/white" />
+        </shape>
+    </item>
+</layer-list>
+
+
+    <!--<shape xmlns:android="http://schemas.android.com/apk/res/android"-->
+    <!--    android:shape="rectangle">-->
+    <!--    <corners android:radius="@dimen/selectable_input_radius" />-->
+    <!--    <stroke-->
+    <!--        android:width="@dimen/simple_btn_stroke"-->
+    <!--        android:color="@color/white" />-->
+    <!--    <stroke-->
+    <!--        android:width="@dimen/simple_btn_stroke"-->
+    <!--        android:color="@color/black" />-->
+    <!--    <L-->
+    <!--</shape>-->

+ 6 - 9
app/src/main/res/layout/activity_simple_login.xml

@@ -6,25 +6,22 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:gravity="center"
-    tools:context=".presentation.simple.SimpleLoginActivity">
+    tools:context=".presentation.simple.SimpleLoginActivity"
+    android:background="@mipmap/login_bg">
 
     <TextView
         style="@style/SimpleTextView"
         android:textSize="40dp"
         android:text="@string/simple_title" />
 
-    <ImageView
-        android:layout_width="100dp"
-        android:layout_height="100dp"
-        android:background="@mipmap/login_icon"
-        android:layout_marginTop="40dp"/>
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/simple_please_swipe_card"
-        android:background="#a4adb3"
-        android:textColor="@color/white"
-        android:layout_marginTop="5dp"
+        android:background="@drawable/swipe_bg"
+        android:textColor="#002482"
+        android:textStyle="bold"
+        android:layout_marginTop="150dp"
         android:padding="10dp"/>
 </LinearLayout>

+ 14 - 17
app/src/main/res/layout/activity_simple_process.xml

@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:padding="20dp"
-    android:background="@color/white"
+    android:background="@mipmap/process_bg"
     tools:context=".presentation.simple.SimpleProcessActivity">
 
     <!--  步骤0:开始执行按钮  -->
@@ -37,8 +37,7 @@
             <ImageView
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
-                android:background="@mipmap/permit"
-                android:layout_marginRight="5dp"/>
+                android:background="@mipmap/permit"/>
             <TextView
                 android:id="@+id/tv_execute"
                 style="@style/SimpleTextView"
@@ -97,7 +96,7 @@
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
                 android:background="@mipmap/confirm"
-                android:layout_marginRight="5dp"/>
+                />
 
             <TextView
                 style="@style/SimpleTextView"
@@ -155,7 +154,7 @@
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
                 android:background="@mipmap/waiting"
-                android:layout_marginRight="5dp"/>
+                />
 
             <TextView
                 style="@style/SimpleTextView"
@@ -216,14 +215,13 @@
                 android:id="@+id/iv_shared1"
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
-                android:background="@mipmap/lock"
-                android:layout_marginRight="5dp"/>
+                android:background="@mipmap/shared"
+                />
 
             <TextView
                 android:id="@+id/tv_shared1"
                 style="@style/SimpleTextView"
-                android:text="@string/simple_shared"
-                android:background="@color/simple_shared_processing"/>
+                android:text="@string/simple_shared"/>
         </LinearLayout>
     </LinearLayout>
 
@@ -279,14 +277,13 @@
                 android:id="@+id/iv_shared2"
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
-                android:background="@mipmap/unlock"
-                android:layout_marginRight="5dp"/>
+                android:background="@mipmap/shared"
+                />
 
             <TextView
                 android:id="@+id/tv_shared2"
                 style="@style/SimpleTextView"
-                android:text="@string/simple_shared"
-                android:background="@color/simple_shared_done"/>
+                android:text="@string/simple_shared"/>
         </LinearLayout>
     </LinearLayout>
 
@@ -338,7 +335,7 @@
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
                 android:background="@mipmap/confirm"
-                android:layout_marginRight="5dp"/>
+                />
 
             <TextView
                 style="@style/SimpleTextView"
@@ -396,7 +393,7 @@
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
                 android:background="@mipmap/waiting"
-                android:layout_marginRight="5dp"/>
+                />
 
             <TextView
                 style="@style/SimpleTextView"
@@ -438,7 +435,7 @@
             android:layout_width="@dimen/simple_icon_size"
             android:layout_height="@dimen/simple_icon_size"
             android:background="@mipmap/home"
-            android:layout_marginRight="5dp"/>
+            />
         <TextView
             style="@style/SimpleTextView"
             android:text="@string/simple_return_home"/>
@@ -453,7 +450,7 @@
             android:layout_width="@dimen/simple_icon_size"
             android:layout_height="@dimen/simple_icon_size"
             android:background="@mipmap/settings"
-            android:layout_marginRight="5dp"/>
+            />
         <TextView
             style="@style/SimpleTextView"
             android:text="@string/simple_setting"/>

+ 2 - 1
app/src/main/res/layout/activity_simple_setting.xml

@@ -4,7 +4,8 @@
     android:id="@+id/main"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".presentation.simple.SimpleSettingActivity">
+    tools:context=".presentation.simple.SimpleSettingActivity"
+    android:background="@mipmap/process_bg">
 
     <LinearLayout
         android:id="@+id/ll_home"

BIN
app/src/main/res/mipmap/confirm.png


BIN
app/src/main/res/mipmap/home.png


BIN
app/src/main/res/mipmap/lock.png


BIN
app/src/main/res/mipmap/login_bg.png


BIN
app/src/main/res/mipmap/permit.png


BIN
app/src/main/res/mipmap/process_bg.png


BIN
app/src/main/res/mipmap/reset.png


BIN
app/src/main/res/mipmap/settings.png


BIN
app/src/main/res/mipmap/shared.png


BIN
app/src/main/res/mipmap/switch_off.png


BIN
app/src/main/res/mipmap/switch_on.png


BIN
app/src/main/res/mipmap/unlock.png


BIN
app/src/main/res/mipmap/waiting.png


+ 3 - 2
app/src/main/res/values/dimens.xml

@@ -52,10 +52,11 @@
     <dimen name="dialog_card_login_width">320dp</dimen>
     <dimen name="dialog_card_login_height">180dp</dimen>
 
-    <dimen name="simple_btn_stroke">1dp</dimen>
+    <dimen name="simple_btn_stroke">2dp</dimen>
     <dimen name="simple_container_padding">20dp</dimen>
+    <dimen name="simple_container_radius">20dp</dimen>
     <dimen name="simple_ticket_tip_width">180dp</dimen>
     <dimen name="simple_large_text">25dp</dimen>
     <dimen name="simple_small_text">10dp</dimen>
-    <dimen name="simple_icon_size">20dp</dimen>
+    <dimen name="simple_icon_size">40dp</dimen>
 </resources>

+ 4 - 4
app/src/main/res/values/styles.xml

@@ -48,7 +48,7 @@
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
         <item name="android:gravity">center</item>
-        <item name="android:textColor">@color/black</item>
+        <item name="android:textColor">@color/white</item>
         <item name="android:textSize">@dimen/common_text_size</item>
     </style>
 
@@ -59,7 +59,7 @@
         <item name="android:textSize">@dimen/common_text_size</item>
         <item name="android:textColor">@color/black</item>
         <item name="android:padding">5dp</item>
-        <item name="android:background">@drawable/simple_btn_bg</item>
+        <item name="android:background">@drawable/simple_btn_bg_normal</item>
         <item name="android:layout_margin">10dp</item>
     </style>
 
@@ -68,8 +68,8 @@
         <item name="android:layout_height">wrap_content</item>
         <item name="android:gravity">center</item>
         <item name="android:orientation">horizontal</item>
-        <item name="android:padding">5dp</item>
+        <item name="android:paddingRight">10dp</item>
         <item name="android:layout_margin">10dp</item>
-        <item name="android:background">@drawable/simple_btn_bg</item>
+        <item name="android:background">@drawable/simple_btn_bg_selector</item>
     </style>
 </resources>