Android 上的 WiFi 扫描

Say*_*aki 2 android wifi

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

\n
wifiManager.startScan();\n\nBroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {\n  @Override\n  public void onReceive(Context c, Intent intent) {\n    boolean success = intent.getBooleanExtra(\n                       WifiManager.EXTRA_RESULTS_UPDATED, false);\n    if (success) {\n      scanSuccess();\n    } else {\n      scanFailure();\n    }\n\n    wifiManager.startScan();\n  }\n}; \n
Run Code Online (Sandbox Code Playgroud)\n

知道为什么 Wi-Fi 扫描在 Pixel3 手机上效果更差吗?有没有办法从 \n 获取准确的 Wi-Fi 扫描错误代码/错误消息而不是简单的布尔值boolean success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false);

\n

Bie*_*Dav 5

此页面(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 ...
}
Run Code Online (Sandbox Code Playgroud)

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