android - Android 上的 WiFi 扫描

标签 android wifi

我有一个正在扫描 Wi-Fi 网络的应用程序。完成一次 Wi-Fi 扫描后,我将开始新的一次。我正在 Pixel3 和 SamsungS10 手机上进行测试。在两部手机上,我都从开发者选项中禁用了 Wi-Fi 扫描限制。我在有很多不同 Wi-Fi 网络的办公室进行扫描。我观察到的问题是,在 Pixel3 上,Wi-Fi 扫描在一段时间内工作正常,然后开始在连续十几次扫描中返回扫描错误,之后扫描又工作正常。这是周期性发生的。三星S10手机上根本不会出现此问题。以下是我进行扫描的方法:

wifiManager.startScan();

BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context c, Intent intent) {
    boolean success = intent.getBooleanExtra(
                       WifiManager.EXTRA_RESULTS_UPDATED, false);
    if (success) {
      scanSuccess();
    } else {
      scanFailure();
    }

    wifiManager.startScan();
  }
}; 

知道为什么 Wi-Fi 扫描在 Pixel3 手机上效果更差吗?有什么方法可以获取准确的 Wi-Fi 扫描错误代码/错误消息,而不是简单的 bool 值 bool 成功=intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false);

最佳答案

此页面 ( https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-process ) 包含以下代码:

private void scanFailure() {
  // handle failure: new scan did NOT succeed
  // consider using old scan results: these are the OLD results!
  List<ScanResult> results = wifiManager.getScanResults();
  //... potentially use older scan results ...
}

我相信 Google 的操作系统开发人员为了获得更好的电池生命周期,只是阻止应用程序一直进行“wifi 扫描”。正如代码中的注释所描述的,如果出现错误,您应该简单地使用旧的结果。 比尔达夫

关于android - Android 上的 WiFi 扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63569335/

相关文章:

android - 从 android 联系人列表中获取电子邮件

webserver - 寻找与机器人配合使用的 Wi-Fi 微 Controller

ios - Captive Portal 如何强制打开浏览器

android - 自定义 attr 获取颜色返回无效值

Android 第二个 Activity 不加载

android - ConstraintLayout 中的可调整大小的小部件

android - 如何通过 Appium 为 Android 设备获取/设置网络连接

c# - 获取无线网络的主机IP

java - 了解 Wifi 分析仪如何使用 java 在 Windows 10 上工作

android - 当应用程序被销毁时,定位服务无法正常工作 Mi 设备