问题描述
我正在尝试将我的Android 10设备连接到WiFi网络。我正在使用WiFiNetworkSpecifier API来描述我想连接的网络属性。连接进行得很好,但是我经常看到向用户显示的提示花费的时间太长(从2到28秒),无法显示我用WifiNetworkSpecifier对象描述的网络。
这是我的代码(与此处链接的Google示例相同-> https://developer.android.com/guide/topics/connectivity/wifi-bootstrap)
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(
new WifiNetworkSpecifier.Builder()
.setSsid(SSID)
.setWpa2Passphrase(psw)
.build()
)
.build();
networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
if (WiFiCoordinator.this.listner != null){
WiFiCoordinator.this.listner.onConnected();
}
cm.bindProcesstoNetwork(network);
}
@Override
public void onUnavailable() {
super.onUnavailable();
listner.onTestNetworkNotAvailable();
}
};
cm.requestNetwork(networkRequest,networkCallback);
连接没有问题,但是OS花费的时间对我来说并不适合。我的代码有什么问题吗?
非常感谢
解决方法
通过对比实验发现Android 11可以和Android 9一样好
我猜是 Android 10 的错误。对比Android 11和Android 10的代码,我们发现请求网络流程存在差异。