Witam, potrzebuję sposobu na pobranie danych o access pointach znajdujących się w zasięgu urządzenia. Zależy mi na RSSI (jakości sygnału emitowanego przez dany access point) i adresie MAC access pointu (albo innym parametrze który pozwoli mi na rozróżnianie poszczególnych urządzeń). Ten cel próbowałem osiągnąć poprzez zastosowanie klasy Android.Net.Wifi.WifiManager i metody StartScan() która powinna zwrócić interesujące mnie informacje. Z jakiegoś powodu metoda zwraca pustą listę (nie wykrywa żadnych access pointów). Nie wiem czy to kwestia tego, że metoda jest oznaczona jako przestarzała [deprecated] czy jakiegoś błędu w kodzie. Tutaj moje pytanie: czy istnieje jakiś zamiennik dla metody StartScan() i gdzie jest ewentualny błąd w moim kodzie? Z góry dziękuję za podpowiedzi. Poniżej zamieszczam kod w którym wykorzystuję WifiManager.
class AndroidSignalDetector : ISignalDetector
{
readonly Context context;
readonly WifiManager wifiManager;
public AndroidSignalDetector()
{
context = Android.App.Application.Context.ApplicationContext;
wifiManager = (WifiManager)context.GetSystemService(Context.WifiService);
Scan();
}
public bool IsWifiEnabled()
{
if (wifiManager.IsWifiEnabled)
return true;
else
return false;
}
private void Scan()
{
wifiManager.StartScan();
}
public Dictionary<String,int> GetAccessPoints()
{
Dictionary<String, int> accessPoints = new Dictionary<string, int>();
var e = wifiManager.ScanResults.GetEnumerator();
System.Diagnostics.Debug.WriteLine("Znalezione AP = " + wifiManager.ScanResults.Count); // 0
while (e.MoveNext())
{
System.Diagnostics.Debug.WriteLine("" + e.Current.Bssid + " - " + e.Current.Level);
accessPoints.Add(e.Current.Bssid, e.Current.Level);
}
return accessPoints; // Pusta lista
}
}
``` C#