浏览代码

add: 获取已连接的设备的类别和串口号方法设置30秒内只执行一次

huwanxiao 1 年之前
父节点
当前提交
758ee061ca

+ 16 - 16
app/src/main/java/com/naz/sdkdemo/MainActivity.java

@@ -49,6 +49,7 @@ import com.naz.sdkdemo.bean.PrintModule2;
 import com.naz.sdkdemo.bean.PrintModule3;
 import com.naz.sdkdemo.helper.SerialPortManager;
 import com.naz.sdkdemo.http.ApiHelper;
+import com.naz.sdkdemo.utils.FastClickUtil;
 import com.naz.sdkdemo.utils.MyTools;
 import com.naz.sdkdemo.weight.UserCache;
 import com.naz.sdkdemo.weight.XToast;
@@ -72,9 +73,11 @@ import java.lang.reflect.Type;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.regex.Matcher;
@@ -396,13 +399,13 @@ public class MainActivity extends BaseActivity {
 
         @JavascriptInterface
         public void getPortStatus() {
-            toGetPortStatus();
-            new Handler().postDelayed(new Runnable() {
-                @Override
-                public void run() {
+            if(!FastClickUtil.isFastClick()) {
+                toGetPortStatus();
+                new Handler().postDelayed(() -> {
+                    Log.i(TAG, "getPortStatus:" + JSONObject.toJSONString(requestParam));
                     runOnUiThread(() -> mWebView.loadUrl("javascript:getPortStatus('" + JSONObject.toJSONString(requestParam) + "')"));
-                }
-            }, 5000);
+                }, 8000);
+            }
         }
 
         @JavascriptInterface
@@ -608,12 +611,12 @@ public class MainActivity extends BaseActivity {
             add("A00000A0");
         }
     };
-    List<String> scannerList;
-    List<String> lightList;
+    Set<String> scannerList;
+    Set<String> lightList;
     JSONObject requestParam;
-    private void toGetPortStatus() {
-        scannerList = new ArrayList<>();
-        lightList = new ArrayList<>();
+    private synchronized void toGetPortStatus() {
+        scannerList = new HashSet<>();
+        lightList = new HashSet<>();
         requestParam = new JSONObject();
         // 遍历串口
         SerialPortFinder finder = new SerialPortFinder();
@@ -651,12 +654,11 @@ public class MainActivity extends BaseActivity {
         int usbPortNum = usbSeries.size();
         int commandNum = sendCommands.size();
         int num = 0;
-        int delay = 300;
+        int delay = 500;
         if (usbPortNum >0){
             for (int i = 0; i < usbSeries.size(); i++) {
                 String seriesName = usbSeries.get(i);
                 try {
-                    Log.i(TAG, "findPort: " + seriesName);
                     SerialPortManager serialPortManager = new SerialPortManager();
                     serialPortManager.init(this, seriesName, UserCache.getSerialRate(), new SerialPortManager.SerialCallBack() {
                         @Override
@@ -666,12 +668,10 @@ public class MainActivity extends BaseActivity {
                                 Log.i(TAG, "查找USB SCANNER成功:" + seriesName + "-->" + data);
                                 scannerList.add(seriesName);
                                 requestParam.put("scanners", scannerList);
-//                                XToast.showToast("串口" + seriesName + "设置成功");
                             } else if(data.contains("A00000A0")) {
                                 Log.i(TAG, "查找USB Light成功:" + seriesName + "-->" + data);
                                 lightList.add(seriesName);
                                 requestParam.put("lights", lightList);
-//                                XToast.showToast("串口" + seriesName + "设置成功");
                             }
                         };
 
@@ -873,7 +873,7 @@ public class MainActivity extends BaseActivity {
         }
     }
 
-    String mUrl = "https://dwytb.qingyaokeji.com/index.html#/";
+    String mUrl = "http://192.168.1.115:8080/index.html#/";
     private void getUrl() {
         mWebView.loadUrl(mUrl);
     }

+ 55 - 0
app/src/main/java/com/naz/sdkdemo/utils/FastClickUtil.java

@@ -0,0 +1,55 @@
+package com.naz.sdkdemo.utils;
+
+public class FastClickUtil {
+
+    private static long lastClickTime;//记录最近一次点击时间
+    private static long interval = 30000;//间隔为10秒
+    private static int lastButtonId;//存放最近一次传入的按钮id
+
+    // 不需要传入任何参数 直接在点击事件下调用此方法即可
+    public synchronized static boolean isFastClick() {
+        long inter = System.currentTimeMillis() - lastClickTime;
+        if (inter < interval) {
+            return true;
+        }
+        lastClickTime = System.currentTimeMillis();
+        return false;
+    }
+
+    // 需要传入ButtonId
+    public static boolean isFastClick(int buttonId) {
+        if (lastButtonId == buttonId && System.currentTimeMillis() - lastClickTime < interval) {
+            return true;
+        }
+        lastClickTime = System.currentTimeMillis();
+        lastButtonId = buttonId;
+        return false;
+    }
+
+    public static long getLastClickTime() {
+        return lastClickTime;
+    }
+
+    public static void setLastClickTime(long lastClickTime) {
+        FastClickUtil.lastClickTime = lastClickTime;
+    }
+
+    public static long getInterval() {
+        return interval;
+    }
+    public static int getRestInterval() {
+        long inter = System.currentTimeMillis() - lastClickTime;
+        return (int) ((interval - inter) / 1000);
+    }
+    public static void setInterval(long interval) {
+        FastClickUtil.interval = interval;
+    }
+
+    public static int getLastButtonId() {
+        return lastButtonId;
+    }
+
+    public static void setLastButtonId(int lastButtonId) {
+        FastClickUtil.lastButtonId = lastButtonId;
+    }
+}