From 8814f3f0828e6ac652a29cc9de9f971fd55bca5b Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 07 五月 2025 14:54:42 +0800
Subject: [PATCH] 2025年05月07日14:54:39

---
 app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java |   81 +++++++++++++++++++++++++++++++---------
 1 files changed, 62 insertions(+), 19 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java
index f826573..dd1c82d 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java
@@ -2,6 +2,7 @@
 
 
 import android.Manifest;
+import android.app.Application;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.net.wifi.ScanResult;
@@ -9,10 +10,14 @@
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.SystemClock;
+import android.text.TextUtils;
 import android.util.Log;
 
 import androidx.core.app.ActivityCompat;
 
+
+import com.hdl.photovoltaic.HDLApp;
+import com.hdl.photovoltaic.other.HdlLogLogic;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -20,14 +25,25 @@
 
 public class WifiUtils {
 
-
+    private static WifiUtils mWifiUtils;
     public WifiManager mWifiManager;
     public WifiManager.WifiLock mWifiLock;
 
     public Context mContext;
 
-    public WifiUtils(Context context) {
-        this.mContext = context;
+    public static WifiUtils getInstance() {
+        if (null == mWifiUtils) {
+            synchronized (WifiUtils.class) {
+                if (null == mWifiUtils) {
+                    mWifiUtils = new WifiUtils();
+                }
+            }
+        }
+        return mWifiUtils;
+    }
+
+    public WifiUtils() {
+        this.mContext = HDLApp.getInstance();
         mWifiManager = (WifiManager) this.mContext.getSystemService(Context.WIFI_SERVICE);
     }
 
@@ -36,18 +52,17 @@
      *
      * @return 杩斿洖ssid鍚嶇О
      */
-    public String getCurrentConnectWifiSsid() {
-        WifiInfo wifiInfo = this.getCurrentConnectWifiInfo();
-        return wifiInfo.getSSID().replace("\"", "");
-    }
-
-    /**
-     * 鑾峰彇褰撳墠杩炴帴鐨剋ifi
-     *
-     * @return wifi淇℃伅
-     */
-    public WifiInfo getCurrentConnectWifiInfo() {
-        return (mWifiManager == null) ? null : mWifiManager.getConnectionInfo();
+    public MyWifiInfo getCurrentConnectWifiInfo() {
+        if (mWifiManager == null) {
+            return new MyWifiInfo();
+        }
+        MyWifiInfo myWifiInfo = new MyWifiInfo();
+        try {
+            WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
+            myWifiInfo.setSSID(wifiInfo.getSSID().replace("\"", ""));
+        } catch (Exception ignored) {
+        }
+        return myWifiInfo;
     }
 
     /**
@@ -99,17 +114,45 @@
 
     //鑾峰彇鎵弿缁撴灉
     public List<ScanResult> getScanResult() {
-        List<ScanResult> results = new ArrayList<>();
+        List<ScanResult> newResults = new ArrayList<>();
+
         try {
             if (mWifiManager != null) {
 //                mWifiManager.startScan();
 //                SystemClock.sleep(1000);
-                results = mWifiManager.getScanResults();
+                List<ScanResult> results = mWifiManager.getScanResults();
+                for (int i = 0; i < results.size(); i++) {
+                    ScanResult scanResult = results.get(i);
+                    if (scanResult == null || TextUtils.isEmpty(scanResult.SSID)) {
+                        continue;
+                    }
+                    if (!checkRepetition(newResults, scanResult)) {
+                        //涓嶅瓨鍦ㄥ氨娣诲姞
+                        newResults.add(scanResult);
+                    }
+                }
+
             }
         } catch (Exception ex) {
-            Log.d("WifiUtils", ex.getMessage());
+            HdlLogLogic.print("WifiUtils----->" + ex.getMessage(), false);
         }
-        return results;
+        return newResults;
+    }
+
+    /**
+     * 妫�鏌ュ垪琛ㄦ暟鎹槸鍚﹂噸澶�
+     *
+     * @param list       婧愬垪琛ㄦ暟鎹�
+     * @param scanResult 琚鏌ュ璞�
+     * @return true琛ㄧず瀛樺湪锛宖alse琛ㄧず涓嶅瓨鍦�
+     */
+    public boolean checkRepetition(List<ScanResult> list, ScanResult scanResult) {
+        for (int i = 0; i < list.size(); i++) {
+            if (list.get(i).SSID.equals(scanResult.SSID)) {
+                return true;
+            }
+        }
+        return false;
     }
 
     //鑾峰彇宸茬粡閰嶇疆濂界殑缃戠粶杩炴帴

--
Gitblit v1.8.0