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(); } }
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(); } }