Android上的WiFi扫描

Android上的WiFi扫描,android,wifi,Android,Wifi,我有一个扫描Wi-Fi网络的应用程序。当一次Wi-Fi扫描完成后,我将开始新的扫描。我正在Pixel3和SamsungS10手机上测试。在这两款手机上,我都禁用了开发者选项中的Wi-Fi扫描限制。我在办公室做扫描,那里有很多不同的Wi-Fi网络。我观察到的问题是,在Pixel3上,Wi-Fi扫描在一段时间内工作正常,然后他们开始返回扫描错误,连续扫描了十几次,之后扫描又工作正常。这是周期性的。三星10手机上根本不会出现这种问题。以下是我如何进行扫描: wifiManager.startScan(

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

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扫描错误代码/错误消息,而不是简单的布尔值
boolean success=intent.getBooleanExtra(WifiManager.EXTRA\u RESULTS\u UPDATED,false)

此页面()包含以下代码:

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 ...
}
private void scanFailure(){
//处理失败:新扫描未成功
/考虑使用旧的扫描结果:这些是旧的结果!
List results=wifiManager.getScanResults();
//…可能使用较旧的扫描结果。。。
}
我相信谷歌的操作系统开发者,为了获得更好的电池寿命,只是阻止应用程序一直进行“wifi扫描”。正如代码中的注释所描述的,如果出现错误,只需使用旧结果即可。
BierDav

为什么每次都要在接收时扫描
onReceive
?非常旧的代码,从我早期开始,但可能会有所帮助