2013-08-28 1 views
6

Если есть две сети Wi-Fi в диапазоне, которые имеют одинаковый SSID, тип безопасности и пароль, есть ли какой-либо доступный идентификатор, чтобы различать их? Есть ли способ получить этот идентификатор в андроиде?Как отличить различные Wi-Fi-сети?

ответ

6

Вы можете отличить их через BSSID - если кто-то не будет назначать фиксированный MAC адрес они будут иметь наверняка различных (уникальных) MAC адресов.

Также они могут быть на другом канале. Я думаю, что это невозможно, если две сети имеют одинаковые SSID, тот же канал и тот же BSSID.

+1

, поэтому я должен только проверять «BSSID» или «BSSID» и «SSID» и канал или «MAC»? которые всегда работают правильно? – Soheil

+1

Я думаю, что проверить BSSID достаточно, но все же вы также можете проверить канал. – Sajmon

1

Вы можете попытаться извлечь MAC-адрес из отправляющих сетей Router/AP. Этот адрес будет уникальным.

1

использование getSubtype().

Заканчивать слайд 9 here:

ConnectivityManager mConnectivity = null; 
TelephonyManager mTelephony = null; 
// Skip if no connection, or background data disabled 
NetworkInfo info = mConnectivity.getActiveNetworkInfo(); 
if (info == null || !mConnectivity.getBackgroundDataSetting()) { 
    return false; 
} 

// Only update if WiFi or 3G is connected and not roaming 
int netType = info.getType(); 
int netSubtype = info.getSubtype(); 
if (netType == ConnectivityManager.TYPE_WIFI) { 
    return info.isConnected(); 
} else if (netType == ConnectivityManager.TYPE_MOBILE 
    && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS 
    && !mTelephony.isNetworkRoaming()) { 
     return info.isConnected(); 
} else { 
    return false; 
} 
+0

что возвращается 'getSubtype()'? – Soheil

+1

http://developer.android.com/reference/android/net/NetworkInfo.html – JNL