編輯:關於Android編程
Android系統信息獲取 之十四:獲取WIFI熱點相關信息
當在Android設備終端上使用Wifi熱點的時候,需要獲知Wifi熱點的運行狀態,熱點是否打開,連接到該WIFI熱點的設備數量,以及連接設備的具體IP和MAC地址。
使用re文件管理器去"/proc/net/arp",打開,發現連接上熱點的設備信息都在這裡了,包括mac ip等。
鑒於此,我們可以在代碼中打開該文件,並獲取WIFI熱點的信息。
獲取WIFI熱點狀態的方法getWifiApState()和判斷熱點是否可用的方法isApEnabled(),在Android源碼WifiManager.java中已經實現,但是它們是Hide方法,在SDK層面是不能訪問的,如要訪問需要用到java反射的機制。具體代碼實現如下:
其中定義WIFI AP的幾個狀態
public static final int WIFI_AP_STATE_DISABLING = 10; public static final int WIFI_AP_STATE_DISABLED = 11; public static final int WIFI_AP_STATE_ENABLING = 12; public static final int WIFI_AP_STATE_ENABLED = 13; public static final int WIFI_AP_STATE_FAILED = 14;
獲取WIFI熱點的狀態:
public int getWifiApState(Context mContext) { WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); try { Method method = wifiManager.getClass().getMethod("getWifiApState"); int i = (Integer) method.invoke(wifiManager); Log.i(TAG,"wifi state: " + i); return i; } catch (Exception e) { Log.e(TAG,"Cannot get WiFi AP state" + e); return WIFI_AP_STATE_FAILED; } }
public boolean isApEnabled(Context mContext) { int state = getWifiApState(mContext); return WIFI_AP_STATE_ENABLING == state || WIFI_AP_STATE_ENABLED == state; }
獲取鏈接到當前熱點的設備IP:
private ArrayListgetConnectedHotIP() { ArrayList connectedIP = new ArrayList (); try { BufferedReader br = new BufferedReader(new FileReader( "/proc/net/arp")); String line; while ((line = br.readLine()) != null) { String[] splitted = line.split(" +"); if (splitted != null && splitted.length >= 4) { String ip = splitted[0]; connectedIP.add(ip); } } } catch (Exception e) { e.printStackTrace(); } return connectedIP; }
//輸出鏈接到當前設備的IP地址 public void printHotIp() { ArrayListconnectedIP = getConnectedHotIP(); StringBuilder resultList = new StringBuilder(); for (String ip : connectedIP) { resultList.append(ip); resultList.append("\n"); } System.out.print(resultList); Log.d(TAG,"---->>heww resultList="+resultList); }
當然在應用中要添加訪問WIFI設備的權限:
Cannot get WiFi AP state
----------------------------------
歡迎浏覽、技術交流 請尊重勞動成果 轉載請注明出處,謝謝!http://blog.csdn.net/netwalk/article/details/23183501
android-async-http開源項目可以是我們輕松的獲取網絡數據或者向服務器發送數據,使用起來非常簡單,關於android-async-http開源項目的介紹內
綜述對於MVP (Model View Presenter)架構是從著名的MVC(Model View Controller)架構演變而來的。而對於Android應用的開
自定義View一直是自己的短板,趁著公司項目不緊張的時候,多加強這方面的練習。這一系列文章主要記錄自己在自定義View的學習過程中的心得與體會。刷微博的時候,發現微博運動
從官網下載了ndk,可是運行ndk-build竟然提示錯誤E:\android-ndk-r10d>ndk-build‘”E:\