我有一个正在扫描 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 进行扫描的方式:
\nwifiManager.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}; \nRun Code Online (Sandbox Code Playgroud)\n知道为什么 Wi-Fi 扫描在 Pixel3 手机上效果更差吗?有没有办法从 \n 获取准确的 Wi-Fi 扫描错误代码/错误消息而不是简单的布尔值boolean success = 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 ...
}
Run Code Online (Sandbox Code Playgroud)
我相信谷歌的操作系统开发人员为了获得更好的电池寿命,只是阻止应用程序一直进行“wifi扫描”。正如代码中的注释所描述的,如果出现错误,您应该简单地使用旧的结果。比尔达夫
| 归档时间: |
|
| 查看次数: |
2087 次 |
| 最近记录: |