I need to get BSSID(MAC) of all AP's. Please find below code block.
List<WifiConfiguration> test = wifiManager.getConfiguredNetworks();
for(int k=0;k<test.size();k++){
Log.d("acheck", "test BSSID = "+test.get(k).BSSID);
Log.d("acheck", "test BSSID = "+test.get(k).BSSID);
}
But above code block returns SSID properly but null for BSSID. I want to connect to strongest access point with user defined SSID. Is there any API method available to get best signal strength's AP with user defined SSID.(In my case there are many SSID's with single SSID with multiple AP's available.)
Adapted the answer by @ToonSuperLove, mainly to avoid NPEs.
public class WifiTest extends Activity {
public void loadWifiAvailableList(EditText etWifiList) {
WifiManager wifiManager = (WifiManager)
getSystemService(Context.WIFI_SERVICE);
List<ScanResult> results = wifiManager.getScanResults();
String message = "No results. Check wireless is on";
if (results != null) {
final int size = results.size();
if (size == 0) message = "No access points in range";
else {
ScanResult bestSignal = results.get(0);
etWifiList.setText(""); // etWifiList is EditText
int count = 1;
for (ScanResult result : results) {
etWifiList.append(count++ + ". " + result.SSID + " : "
+ result.level + "\n" + result.BSSID + "\n"
+ result.capabilities + "\n"
+ "\n=======================\n");
if (WifiManager.compareSignalLevel(bestSignal.level,
result.level) < 0) {
bestSignal = result;
}
}
message = String.format(
"%s networks found. %s is the strongest.", size,
bestSignal.SSID + " : " + bestSignal.level);
}
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}