擷取手機wifi資訊
/**
* 擷取Wifi的Mac位址
* @param context
* @return
*/
public static String getWifiBssid(Context context) {
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
if(info != null){
return info.getBSSID();
}
return "";
}
/**
* 擷取Wifi的名稱
* getSSID()擷取到的SSID名稱和手機的Android版本有關,
* 如果是Android 4.2(API Level = 17)及其以上的版本,擷取到的SSID名稱是有雙引号的, "Wifi"
* 如果是Android 4.2以下的版本,擷取到的SSID名稱沒有雙引号, Wifi
* @param context
* @return
*/
public static String getWifiSsid(Context context) {
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
if(info != null){
return info.getSSID();
}
return "";
}
有的時候, Wifi并沒有連接配接成功,這個時候,我們可以通過scanResult來掃描周圍的熱點:
String wserviceName = Context.WIFI_SERVICE;
WifiManager wm = (WifiManager) getSystemService(wserviceName);
List<ScanResult> wifiList = wm.getScanResults();
for (int i = ; i < wifiList.size(); i++) {
ScanResult result = wifiList.get(i);
//do something about result.BSSID;
}
/**
* 擷取網絡的ID,有時候名稱一樣,就必須從NetworkID來判斷是否連着同一個網絡
* @param context
* @return
*/
public static int getNetworkId(Context context){
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
if(info != null){
return info.getNetworkId();
}
return -;
}
public static final String LINK_SPEED_UNITS = "Mbps";
/**
* 擷取目前網絡連接配接速度,以機關 "Mbps" 計算
* @param context
* @return
*/
public static int getLinkSpeed(Context context) {
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
if(info != null){
return info.getLinkSpeed();
}
return ;
}
對于wifi資訊,需要添權重限
/**
* 擷取IMEI号
* @param context
* @return
*/
public static String getIMEI(Context context) {
String imei = null;
try {
TelephonyManager telephonyMgr = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
imei = telephonyMgr.getDeviceId();
} catch (Exception e) {
e.printStackTrace();
}
return imei;
}
對于IMIE資訊,需要添權重限:
*擷取手機品牌和型号
String model = android.os.Build.MODEL; //型号
String brand = android.os.Build.BRAND; //品牌
監聽網絡連接配接發生變化
可能在有些情況下,我們會想在網絡變化的情況下去判斷做變化,為此我們需要監聽系統廣播,擷取網絡變化的通知,并進行處理
public class NetworkConnectReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
// 當網絡發生變化時候
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
try {
// 判斷是否連接配接到了wifi
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); // 擷取網絡連接配接狀态
if (State.CONNECTED == state) {
// dosomething
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
需要添權重限