コード例 #1
0
 private void ClearWifiNetworksCollection()
 {
     if (NumberOfDetectedAccessPoints != 0)
     {
         DetectedWifiNetworks.Clear();
         ListOfWifiNetworks.Clear();
         NumberOfDetectedAccessPoints = 0;
         CurrentWifiNetworkName       = "-";
         CurrentWifiNetworkSpeed      = 0;
         CurrentWifiNetworkIP         = 0;
         CurrentWifiNetworkIPText     = "-";
         Toast.MakeText(Android.App.Application.Context, "List of wifi networks has been cleared successfully.", ToastLength.Short).Show();
     }
 }
コード例 #2
0
        private void GetWifiNetworks()
        {
            if (!IsScanning)
            {
                if (RefreshTime < 10)
                {
                    Toast.MakeText(Android.App.Application.Context, "You have to set refresh time first!", ToastLength.Short).Show();
                }
                else
                {
                    IsScanning = true;
                    Toast.MakeText(Android.App.Application.Context, "Scanning has been started!", ToastLength.Short).Show();

                    var locator = CrossGeolocator.Current;
                    locator.DesiredAccuracy = 5;

                    var startTimeSpan  = TimeSpan.Zero;
                    var periodTimeSpan = TimeSpan.FromSeconds(RefreshTime);

                    timer = new Timer(async(e) =>
                    {
                        ListOfWifiNetworks.Clear();

                        wifiManager = (WifiManager)context.GetSystemService(Context.WifiService);
                        await locator.StartListeningAsync(TimeSpan.FromSeconds(1), 0.01, false, null);
                        var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(20), null, true);

                        if (wifiManager.ConnectionInfo.NetworkId != -1 && wifiManager.ConnectionInfo.SSID != "UNKNOWNSSID")
                        {
                            CurrentWifiNetworkName   = wifiManager.ConnectionInfo.SSID;
                            CurrentWifiNetworkIP     = wifiManager.ConnectionInfo.IpAddress;
                            CurrentWifiNetworkIPText = Android.Text.Format.Formatter.FormatIpAddress(CurrentWifiNetworkIP);
                            CurrentWifiNetworkSpeed  = wifiManager.ConnectionInfo.LinkSpeed;
                        }
                        else
                        {
                            CurrentWifiNetworkName   = "-";
                            CurrentWifiNetworkIPText = "-";
                            CurrentWifiNetworkSpeed  = 0;
                        }

                        Latitude  = position.Latitude;
                        Longitude = position.Longitude;

                        wifiReceiver = new WifiReceiver();
                        context.RegisterReceiver(wifiReceiver, new IntentFilter(WifiManager.ScanResultsAvailableAction));
                        IsBusy = true;

                        wifiManager.StartScan();
                        CollectionofNetworksArrived.WaitOne();
                        context.UnregisterReceiver(wifiReceiver);
                        if (ListOfWifiNetworks.Count > 0)
                        {
                            DetectedWifiNetworks.Clear();
                            foreach (var item in ListOfWifiNetworks)
                            {
                                DetectedWifiNetworks.Add(item);
                            }
                        }
                        CollectionofNetworksArrived.Reset();
                        IsBusy = false;
                        if (AutoSaveToDatabase)
                        {
                            Device.BeginInvokeOnMainThread(async() =>
                            {
                                await SaveListToDatabase();
                            });
                        }
                        if (AutoSaveToFile)
                        {
                            Device.BeginInvokeOnMainThread(() =>
                            {
                                SaveListToFile();
                            });
                        }
                        NumberOfDetectedAccessPoints = DetectedWifiNetworks.Count;
                        await locator.StopListeningAsync();
                    }, null, startTimeSpan, periodTimeSpan);
                }
            }
            else
            {
                Toast.MakeText(Android.App.Application.Context, "Scanning has already started!", ToastLength.Short).Show();
            }
        }