package me.pjq.pushup.lan; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.Log; import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; import java.nio.ByteOrder; /** * Created by kicoolzhang on 11/12/13. */ public class WifiNetworkHelper { private static final String TAG = "WifiNetworkHelper"; WifiManager mWifiManager; WifiManager.WifiLock mWifiLock; public WifiNetworkHelper(Context ctx) { mWifiManager = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE); mWifiLock = mWifiManager.createWifiLock( android.os.Build.VERSION.SDK_INT >= 12 ? WifiManager.WIFI_MODE_FULL_HIGH_PERF : WifiManager.WIFI_MODE_FULL, getClass().getName()); WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); Log.i(TAG, "Own IP Address: " + wifiIpAddress(wifiInfo.getIpAddress()) + "Network SSID: " + wifiInfo.getSSID() + "Netword ID: " + wifiInfo.getNetworkId()); } public WifiNetworkInfo getWifiInfo() { WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); return new WifiNetworkInfo(wifiInfo); } protected static String wifiIpAddress(int ipAddress) { // Convert little-endian to big-endianif needed if (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) { ipAddress = Integer.reverseBytes(ipAddress); } byte[] ipByteArray = BigInteger.valueOf(ipAddress).toByteArray(); String ipAddressString; try { ipAddressString = InetAddress.getByAddress(ipByteArray).getHostAddress(); } catch (UnknownHostException ex) { Log.e(TAG, "Unable to get host address."); ipAddressString = null; } Log.i(TAG, "Wifi IP:" + ipAddressString); return ipAddressString; } public void lock() { mWifiLock.acquire(); } public void unlock() { mWifiLock.release(); } public static class WifiNetworkInfo { WifiInfo wifiInfo; String wifiIpAddress; public WifiNetworkInfo(WifiInfo wifiInfo) { this.wifiInfo = wifiInfo; wifiIpAddress = wifiIpAddress(wifiInfo.getIpAddress()); } public String getWifiIpAddress() { return wifiIpAddress; } public String getSSID() { return wifiInfo.getSSID(); } public String getNetwordId() { return Integer.toString(wifiInfo.getNetworkId()); } } }