/**
* This class is used to handle device's network.
*
* @author lijk
*/
public class NetworkUtils {
private static final int WIFI = ConnectivityManager.TYPE_WIFI;
private static final int _3G = ConnectivityManager.TYPE_MOBILE;
public static final byte AuthModeOpen = 0x00;
public static final byte AuthModeShared = 0x01;
public static final byte AuthModeAutoSwitch = 0x02;
public static final byte AuthModeWPA = 0x03;
public static final byte AuthModeWPAPSK = 0x04;
public static final byte AuthModeWPANone = 0x05;
public static final byte AuthModeWPA2 = 0x06;
public static final byte AuthModeWPA2PSK = 0x07;
public static final byte AuthModeWPA1WPA2 = 0x08;
public static final byte AuthModeWPA1PSKWPA2PSK = 0x09;
/**
* Method to check if network is available.
*
* @return true if either 3G or WiFi network is available, false otherwise.
*/
public static boolean isNetworkAvailable() {
boolean networkStatus = false;
try {
ConnectivityManager manager = (ConnectivityManager) CppApplication
.getAppContext().getSystemService(
Context.CONNECTIVITY_SERVICE);
boolean isMobileNetworkAvailable = false;
if (manager != null) {
NetworkInfo info = manager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (info != null) {
isMobileNetworkAvailable = info.isConnectedOrConnecting();
}
}
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
boolean isWifiAvailable = false;
if (wifiManager != null) {
NetworkInfo info = manager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
isWifiAvailable = wifiInfo.getSupplicantState() == SupplicantState.COMPLETED
&& info.isConnected();
}
return isMobileNetworkAvailable || isWifiAvailable;
} catch (Exception e) {
networkStatus = false;
}
return networkStatus;
}
/**
* Method to get the list of available WiFi Ssids.
*
* @return the {@link ArrayList} containing the WiFi Ssids of all previously
* configured WiFi networks.
*/
public static ArrayList<String> getAvailableWifiSsids() {
ArrayList<String> ssids = new ArrayList<String>();
String currentWifiSsid = getCurrentlyConnectedWifiSsid();
if (!TextUtils.isEmpty(currentWifiSsid)) {
ssids.add(currentWifiSsid);
}
try {
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
List<ScanResult> scanResult = wifiManager.getScanResults();
VCLog.debug(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: scanResult.size->"
+ scanResult.size());
for (ScanResult curScanResultObj : scanResult) {
try {
String wifiSsid = curScanResultObj.SSID;
if (TextUtils.isEmpty(wifiSsid)) {
continue;
}
if (wifiSsid.charAt(0) == '"') {
wifiSsid = wifiSsid.substring(1);
}
if (wifiSsid.charAt(wifiSsid.length() - 1) == '"') {
wifiSsid = wifiSsid.substring(0, wifiSsid.length() - 1);
}
if (!TextUtils.isEmpty(wifiSsid)
&& !ssids.contains(wifiSsid)) {
ssids.add(wifiSsid);
}
} catch (Exception e) {
VCLog.error(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: Exception while removing \"->"
+ e.getMessage());
}
}
} catch (Exception e) {
VCLog.error(
Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: Exception->"
+ e.getMessage());
}
VCLog.debug(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: size->" + ssids.size());
return ssids;
}
/**
* This method is used to get the currently connected Wifi SSID
*
* @return
*/
public static String getCurrentlyConnectedWifiSsid() {
String ssid = null;
try {
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
ssid = wifiInfo.getSSID().toString();
if (ssid.charAt(0) == '"') {
ssid = ssid.substring(1);
}
if (ssid.charAt(ssid.length() - 1) == '"') {
ssid = ssid.substring(0, ssid.length() - 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return ssid;
}
/**
* Method to get authmode of select wifi sssid.
*
* @param wifi
* ssid.
* @return authmode.
*/
public static byte getSelectWiFiAuthMode(String ssid) {
byte mAuthMode = AuthModeOpen;
WifiManager mWifiManager = null;
mWifiManager = (WifiManager) CppApplication.getAppContext()
.getSystemService(Context.WIFI_SERVICE);
if (mWifiManager != null && mWifiManager.isWifiEnabled()) {
List<ScanResult> ScanResultlist = mWifiManager.getScanResults();
if (ScanResultlist != null) {
for (int i = 0, len = ScanResultlist.size(); i < len; i++) {
ScanResult AccessPoint = ScanResultlist.get(i);
if (AccessPoint != null) {
if (AccessPoint.SSID.equals(ssid)) {
boolean WpaPsk = AccessPoint.capabilities
.contains("WPA-PSK");
boolean Wpa2Psk = AccessPoint.capabilities
.contains("WPA2-PSK");
boolean Wpa = AccessPoint.capabilities
.contains("WPA-EAP");
boolean Wpa2 = AccessPoint.capabilities
.contains("WPA2-EAP");
if (AccessPoint.capabilities.contains("WEP")) {
mAuthMode = AuthModeOpen;
break;
}
if (WpaPsk && Wpa2Psk) {
mAuthMode = AuthModeWPA1PSKWPA2PSK;
break;
} else if (Wpa2Psk) {
mAuthMode = AuthModeWPA2PSK;
break;
} else if (WpaPsk) {
mAuthMode = AuthModeWPAPSK;
break;
}
if (Wpa && Wpa2) {
mAuthMode = AuthModeWPA1WPA2;
break;
} else if (Wpa2) {
mAuthMode = AuthModeWPA2;
break;
} else if (Wpa) {
mAuthMode = AuthModeWPA;
break;
}
mAuthMode = AuthModeOpen;
}
}
}
}
}
return mAuthMode;
}
// 180.97.33.107 www.baidu.com
public static boolean pingIP(String address) {
Process p;
int status = -1;
try {
p = Runtime.getRuntime().exec("/system/bin/ping -c 1 " + address);
status = p.waitFor();
} catch (IOException e) {
e.printStackTrace();
return false;
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
if (status == 0) {
return true;
} else {
return false;
}
}
}
* This class is used to handle device's network.
*
* @author lijk
*/
public class NetworkUtils {
private static final int WIFI = ConnectivityManager.TYPE_WIFI;
private static final int _3G = ConnectivityManager.TYPE_MOBILE;
public static final byte AuthModeOpen = 0x00;
public static final byte AuthModeShared = 0x01;
public static final byte AuthModeAutoSwitch = 0x02;
public static final byte AuthModeWPA = 0x03;
public static final byte AuthModeWPAPSK = 0x04;
public static final byte AuthModeWPANone = 0x05;
public static final byte AuthModeWPA2 = 0x06;
public static final byte AuthModeWPA2PSK = 0x07;
public static final byte AuthModeWPA1WPA2 = 0x08;
public static final byte AuthModeWPA1PSKWPA2PSK = 0x09;
/**
* Method to check if network is available.
*
* @return true if either 3G or WiFi network is available, false otherwise.
*/
public static boolean isNetworkAvailable() {
boolean networkStatus = false;
try {
ConnectivityManager manager = (ConnectivityManager) CppApplication
.getAppContext().getSystemService(
Context.CONNECTIVITY_SERVICE);
boolean isMobileNetworkAvailable = false;
if (manager != null) {
NetworkInfo info = manager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (info != null) {
isMobileNetworkAvailable = info.isConnectedOrConnecting();
}
}
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
boolean isWifiAvailable = false;
if (wifiManager != null) {
NetworkInfo info = manager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
isWifiAvailable = wifiInfo.getSupplicantState() == SupplicantState.COMPLETED
&& info.isConnected();
}
return isMobileNetworkAvailable || isWifiAvailable;
} catch (Exception e) {
networkStatus = false;
}
return networkStatus;
}
/**
* Method to get the list of available WiFi Ssids.
*
* @return the {@link ArrayList} containing the WiFi Ssids of all previously
* configured WiFi networks.
*/
public static ArrayList<String> getAvailableWifiSsids() {
ArrayList<String> ssids = new ArrayList<String>();
String currentWifiSsid = getCurrentlyConnectedWifiSsid();
if (!TextUtils.isEmpty(currentWifiSsid)) {
ssids.add(currentWifiSsid);
}
try {
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
List<ScanResult> scanResult = wifiManager.getScanResults();
VCLog.debug(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: scanResult.size->"
+ scanResult.size());
for (ScanResult curScanResultObj : scanResult) {
try {
String wifiSsid = curScanResultObj.SSID;
if (TextUtils.isEmpty(wifiSsid)) {
continue;
}
if (wifiSsid.charAt(0) == '"') {
wifiSsid = wifiSsid.substring(1);
}
if (wifiSsid.charAt(wifiSsid.length() - 1) == '"') {
wifiSsid = wifiSsid.substring(0, wifiSsid.length() - 1);
}
if (!TextUtils.isEmpty(wifiSsid)
&& !ssids.contains(wifiSsid)) {
ssids.add(wifiSsid);
}
} catch (Exception e) {
VCLog.error(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: Exception while removing \"->"
+ e.getMessage());
}
}
} catch (Exception e) {
VCLog.error(
Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: Exception->"
+ e.getMessage());
}
VCLog.debug(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: size->" + ssids.size());
return ssids;
}
/**
* This method is used to get the currently connected Wifi SSID
*
* @return
*/
public static String getCurrentlyConnectedWifiSsid() {
String ssid = null;
try {
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
ssid = wifiInfo.getSSID().toString();
if (ssid.charAt(0) == '"') {
ssid = ssid.substring(1);
}
if (ssid.charAt(ssid.length() - 1) == '"') {
ssid = ssid.substring(0, ssid.length() - 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return ssid;
}
/**
* Method to get authmode of select wifi sssid.
*
* @param wifi
* ssid.
* @return authmode.
*/
public static byte getSelectWiFiAuthMode(String ssid) {
byte mAuthMode = AuthModeOpen;
WifiManager mWifiManager = null;
mWifiManager = (WifiManager) CppApplication.getAppContext()
.getSystemService(Context.WIFI_SERVICE);
if (mWifiManager != null && mWifiManager.isWifiEnabled()) {
List<ScanResult> ScanResultlist = mWifiManager.getScanResults();
if (ScanResultlist != null) {
for (int i = 0, len = ScanResultlist.size(); i < len; i++) {
ScanResult AccessPoint = ScanResultlist.get(i);
if (AccessPoint != null) {
if (AccessPoint.SSID.equals(ssid)) {
boolean WpaPsk = AccessPoint.capabilities
.contains("WPA-PSK");
boolean Wpa2Psk = AccessPoint.capabilities
.contains("WPA2-PSK");
boolean Wpa = AccessPoint.capabilities
.contains("WPA-EAP");
boolean Wpa2 = AccessPoint.capabilities
.contains("WPA2-EAP");
if (AccessPoint.capabilities.contains("WEP")) {
mAuthMode = AuthModeOpen;
break;
}
if (WpaPsk && Wpa2Psk) {
mAuthMode = AuthModeWPA1PSKWPA2PSK;
break;
} else if (Wpa2Psk) {
mAuthMode = AuthModeWPA2PSK;
break;
} else if (WpaPsk) {
mAuthMode = AuthModeWPAPSK;
break;
}
if (Wpa && Wpa2) {
mAuthMode = AuthModeWPA1WPA2;
break;
} else if (Wpa2) {
mAuthMode = AuthModeWPA2;
break;
} else if (Wpa) {
mAuthMode = AuthModeWPA;
break;
}
mAuthMode = AuthModeOpen;
}
}
}
}
}
return mAuthMode;
}
// 180.97.33.107 www.baidu.com
public static boolean pingIP(String address) {
Process p;
int status = -1;
try {
p = Runtime.getRuntime().exec("/system/bin/ping -c 1 " + address);
status = p.waitFor();
} catch (IOException e) {
e.printStackTrace();
return false;
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
if (status == 0) {
return true;
} else {
return false;
}
}
}