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);