Android 上的 WiFi 扫描
WiFi scan on Android
我有一个正在扫描 Wi-Fi 网络的应用程序。完成一次 Wi-Fi 扫描后,我将开始新的扫描。我正在 Pixel3 和 SamsungS10 手机上对此进行测试。在这两款手机上,我都从开发者选项中禁用了 Wi-Fi 扫描限制。我在办公室进行扫描,那里有很多不同的 Wi-Fi 网络。我观察到的问题是,在 Pixel3 上,Wi-Fi 扫描在一段时间内工作正常,然后他们开始返回扫描错误,大约连续十几个扫描,然后扫描再次工作正常。这是周期性发生的。 SamsungS10 手机根本不会出现这个问题。以下是我进行扫描的方式:
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_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 的 OS 开发人员为了获得更好的电池寿命,只是阻止应用一直进行“wifi 扫描”。正如代码中的注释所描述的,如果出现错误,您应该简单地使用旧结果。
比尔达夫
我有一个正在扫描 Wi-Fi 网络的应用程序。完成一次 Wi-Fi 扫描后,我将开始新的扫描。我正在 Pixel3 和 SamsungS10 手机上对此进行测试。在这两款手机上,我都从开发者选项中禁用了 Wi-Fi 扫描限制。我在办公室进行扫描,那里有很多不同的 Wi-Fi 网络。我观察到的问题是,在 Pixel3 上,Wi-Fi 扫描在一段时间内工作正常,然后他们开始返回扫描错误,大约连续十几个扫描,然后扫描再次工作正常。这是周期性发生的。 SamsungS10 手机根本不会出现这个问题。以下是我进行扫描的方式:
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_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 的 OS 开发人员为了获得更好的电池寿命,只是阻止应用一直进行“wifi 扫描”。正如代码中的注释所描述的,如果出现错误,您应该简单地使用旧结果。 比尔达夫