package com.hdl.photovoltaic.utils;
|
|
import android.content.Context;
|
import android.net.ConnectivityManager;
|
import android.net.NetworkInfo;
|
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiManager;
|
|
import java.net.Inet4Address;
|
import java.net.InetAddress;
|
import java.net.NetworkInterface;
|
import java.net.SocketException;
|
import java.util.Enumeration;
|
|
|
public class NetworkUtils123 {
|
|
private static NetworkUtils123 mNetworkUtils123;
|
|
|
public static NetworkUtils123 getInstance() {
|
if (null == mNetworkUtils123) {
|
synchronized (NetworkUtils123.class) {
|
if (null == mNetworkUtils123) {
|
mNetworkUtils123 = new NetworkUtils123();
|
}
|
}
|
}
|
return mNetworkUtils123;
|
}
|
|
/**
|
* 获得IP地址,分为两种情况:
|
* 一:是wifi下;
|
* 二:是移动网络下;
|
*/
|
public String getIPAddress(Context context) {
|
NetworkInfo info = ((ConnectivityManager) context
|
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
|
if (info != null && info.isConnected()) {
|
if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络
|
try {
|
//Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces();
|
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
|
NetworkInterface intf = en.nextElement();
|
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
|
InetAddress inetAddress = enumIpAddr.nextElement();
|
if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
|
return inetAddress.getHostAddress();
|
}
|
}
|
}
|
} catch (SocketException e) {
|
e.printStackTrace();
|
}
|
} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络
|
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
|
//调用方法将int转换为地址字符串
|
String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址
|
return ipAddress;
|
}
|
} else {
|
//当前无网络连接,请在设置中打开网络
|
}
|
return null;
|
}
|
|
/**
|
* 将得到的int类型的IP转换为String类型
|
*
|
* @param ip int类型
|
* @return -
|
*/
|
public static String intIP2StringIP(int ip) {
|
return (ip & 0xFF) + "." +
|
((ip >> 8) & 0xFF) + "." +
|
((ip >> 16) & 0xFF) + "." +
|
(ip >> 24 & 0xFF);
|
}
|
|
|
}
|