#java #android #android-wifi #android-10.0
#java #Android #android-wifi #android-10.0
Вопрос:
Я пытаюсь подключить свое устройство Android 10 к сети Wi-Fi. Я использую API WiFiNetworkSpecifier для описания сетевых свойств, к которым я хочу подключиться. Соединение проходит нормально, но я часто вижу, что запрос, показанный пользователю, занимает слишком много времени (от 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);
С подключением проблем нет, но время, затраченное ОС на поиск запрошенной сети, для меня не подходит. Есть ли какие-либо проблемы в моем коде?
Большое спасибо
Ответ №1:
В результате сравнительных экспериментов установлено, что Android 11 может работать так же хорошо, как Android 9
Я думаю, это ошибка Android 10. Сравнивая код Android 11 и Android 10, мы обнаруживаем, что существует разница в сетевом процессе запроса.
Комментарии:
1. ConnectivityService.requestNetwork -> WIFINetworkFactory-> needNetworkFor