Xamarin:当尝试在 IOT 模块中连接到 wifi 时,android 10 中会弹出多个请求网络

问题描述

我正在开发具有 wifi 连接的 IOT 模块,我正在使用带有 android 10 的三星进行测试。 该芯片是 ESP8266。Wi-Fi 信号,没有互联网连接。 该项目是在 xamarin 中开发的。

问题是当我尝试连接到设备的信号时。我在进行连接请求时,设备中出现多个弹窗,请求连接,并没有等到连接成功,设备立即一次次发起连接请求,最后崩溃。

我调试的时候,NetworkAvailable运行了,但是连手机连信号都没有完成,手机又吃完了一个新的请求网络,不要等到真正连接了,我也不知道为什么会发起多个请求。

这是我的代码

 public async Task<bool> Connect(string WiFiName,string WifiPassword)
        {
            bool result = false;
            var formattedSsid = $"\"{WiFiName}\"";
            var formattedPassword = $"\"{WifiPassword}\"";
    
            try
            {
               
                    AutoResetEvent autoResetEvent = new AutoResetEvent(false);
    
                    var wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
                    .SetSsid(WiFiName)
                    .SetWpa2Passphrase(WifiPassword)
                    .Build();
    
                    var networkRequest = new NetworkRequest.Builder()
                    .AddTransportType(TransportType.Wifi) // we want WiFi
                    .SetNetworkSpecifier(wifiNetworkSpecifier) // we want _our_ network
                    .Build();
    
                    UnregisterNetworkCallback(_networkCallback);
    
                    _networkCallback = new NetworkCallback()
                    {
                        NetworkAvailable = network =>
                        {
                            result = true;
                            autoResetEvent.Set(); //signal
                        },NetworkUnavailable = () =>
                        {
                            result = false;
                            autoResetEvent.Set(); //signal
                        },};
    
                    connectivityManager.RequestNetwork(networkRequest,_networkCallback);
    
                    autoResetEvent.WaitOne();
    
               
            }
            catch (Exception e)
            {
                Crashes.Trackerror(e);
               
            }
            finally
            {
            }
    
            return result;
        }
    
        private void UnregisterNetworkCallback(NetworkCallback _networkCallback)
        {
            if (_networkCallback != null)
            {
                try
                {
                    _connectivityManager.UnregisterNetworkCallback(_networkCallback);
    
                }
                catch (Exception) {
                } finally
                {
                    _networkCallback = null;
                }
            }
        }
    
    
    public class NetworkCallback : ConnectivityManager.NetworkCallback
    {
        public Action<Network> NetworkAvailable { get; set; }
        public Action NetworkUnavailable { get; set; }
    
        public NetworkCallback()
        {
         
        }
    
        public override void OnAvailable(Network network)
        {
            try
            {
                WiFiAndroid.connectivityManager.BindProcesstoNetwork(null);
                WiFiAndroid.connectivityManager.BindProcesstoNetwork(network);
            }
            catch (Exception ex)
            {
                var error = ex;
            }
        }
    
        public override void OnUnavailable()
        {
            base.OnUnavailable();
            NetworkUnavailable?.Invoke();
        }
    }

enter image description here

形象,是一遍遍的请求。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)