From 45dfc2d793bcce8c6ab897cddbd2badfefea5556 Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Sun, 14 Jun 2026 15:23:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2wifi=E6=89=AB=E6=8F=8F?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E4=BB=8E=E8=AE=BE=E5=A4=87=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=9B=9E=E4=BC=A0Wifi=E5=88=97=E8=A1=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ckkj/water/device/SelectWifiActivity.java | 78 +++++++------------ .../water/espBle/EspProvisionManager.java | 22 ++++++ 2 files changed, 48 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/ckkj/water/device/SelectWifiActivity.java b/app/src/main/java/com/ckkj/water/device/SelectWifiActivity.java index 03dc3f4..1bd0da1 100644 --- a/app/src/main/java/com/ckkj/water/device/SelectWifiActivity.java +++ b/app/src/main/java/com/ckkj/water/device/SelectWifiActivity.java @@ -1,13 +1,9 @@ package com.ckkj.water.device; import android.Manifest; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.pm.PackageManager; -import android.net.wifi.ScanResult; -import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; @@ -26,6 +22,8 @@ import com.ckkj.water.device.mvp.DeviceImpl; import com.ckkj.water.device.mvp.DevicePresenter; import com.ckkj.water.espBle.EspProvisionManager; import com.ckkj.water.espBle.ProvisionCallback; +import com.espressif.provisioning.WiFiAccessPoint; +import com.espressif.provisioning.listeners.WiFiScanListener; import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.network.BaseBean; import com.ckkj.water.permission.PermissionActivity; @@ -45,9 +43,7 @@ import java.util.Set; public class SelectWifiActivity extends BaseActivity implements DeviceContract.DeviceView { - private WifiManager wifiManager; private WifiListAdapter wifiListAdapter; - private WifiScanReceiver wifiScanReceiver; //100 来自设备添加, 200 来自设备信息 private int WITCH_FROM_CODE = 100; @@ -68,23 +64,9 @@ public class SelectWifiActivity extends BaseActivity wifiList) { + runOnUiThread(() -> displayWifiListFromDevice(wifiList)); + } + + @Override + public void onWiFiScanFailed(Exception e) { + runOnUiThread(() -> { + ToastUtil.showShort(mContext, "扫描失败: " + e.getMessage()); + hideDialogLoading(); + }); + } + + }); } - private void displayWifiList(List scanResults) { + private void displayWifiListFromDevice(ArrayList wifiNetworks) { Set wifiSet = new HashSet<>(); List wifiNameList = new ArrayList<>(); - for (ScanResult result : scanResults) { - String wifiName = result.SSID; + for (WiFiAccessPoint network : wifiNetworks) { + String wifiName = network.getWifiName(); if (wifiName != null && !wifiName.isEmpty() && !wifiSet.contains(wifiName)) { wifiSet.add(wifiName); wifiNameList.add(wifiName); @@ -390,31 +389,6 @@ public class SelectWifiActivity extends BaseActivity results = wifiManager.getScanResults(); - displayWifiList(results); - } else { - ToastUtil.showShort(mContext, getString(R.string.wifi_scan_failed)); - } - } - } - } - @Override public int getLayoutResId(Bundle savedInstanceState) { return 0; diff --git a/app/src/main/java/com/ckkj/water/espBle/EspProvisionManager.java b/app/src/main/java/com/ckkj/water/espBle/EspProvisionManager.java index bccc4db..66b9f34 100644 --- a/app/src/main/java/com/ckkj/water/espBle/EspProvisionManager.java +++ b/app/src/main/java/com/ckkj/water/espBle/EspProvisionManager.java @@ -325,6 +325,28 @@ public class EspProvisionManager { }); } + /** + * 通过蓝牙请求 ESP32 扫描周围 WiFi + * @param scanListener 扫描结果监听器 + */ + public void scanWifiFromDevice(WiFiScanListener scanListener) { + if (!checkConnected()) { + if (scanListener != null) { + scanListener.onWiFiScanFailed(new Exception("设备未连接")); + } + return; + } + + if (espDevice == null) { + if (scanListener != null) { + scanListener.onWiFiScanFailed(new Exception("设备实例为空")); + } + return; + } + + espDevice.scanNetworks(scanListener); + } + public void disconnect() { boolean shouldNotify = connected || connecting || provisioning; mainHandler.removeCallbacks(connectRetryTask);