android wifi 用法解讀

關於wifi的操做主要包括如下幾個類和接口:

1.1    ScanResult:主要用來描述已經檢測出的接入點,包括介入點的地址,介入點的名稱,身份認證,頻率,信號強度等信息
1.2    wifiConfiguration:wifi網絡的配置,包括安全配置等
1.3    wifiInfo:wifi無線鏈接的描述,包括接入點,網絡鏈接狀態,隱藏的接入點,IP地址,鏈接速度,mac地址,網絡ID,信號強度等信息。

1.4    wifiManager:提供了管理wifi鏈接的大部分API,它主要包括以下內容:

a)已經配置好的網絡的清單。這個清單能夠查看和修改,並且能夠修改個別記錄的屬性
b)當鏈接中有活動的wi-fi網絡時,能夠創建或者關閉這個鏈接,而且能夠查詢有關網絡的狀態的動態信息。
c)對接入點的掃描結果包含足夠的信息來決定須要與什麼接入點創建鏈接。
d)還定義了許多常量來表示wi-fi狀態的改變。

1.5    wifiManager.WifiLock:容許程序一直使用wifi無線網絡,使其一直保持鏈接

2    代碼例子:
2.1 TestWifi:

  1. import java.util.List;
  2. import android.content.Context;
  3. import android.net.wifi.ScanResult;
  4. import android.net.wifi.WifiConfiguration;
  5. import android.net.wifi.WifiInfo;
  6. import android.net.wifi.WifiManager;
  7. import android.net.wifi.WifiManager.WifiLock;

  8. public class TestWiFi
  9. {
  10. //定義WifiManager對象
  11. private WifiManager mWifiManager;

  12. //定義WifiInfo對象
  13. private WifiInfo mWifiInfo;

  14. //掃描出的網絡鏈接列表
  15. private List<ScanResult>mWifiList;

  16. //網絡鏈接列表
  17. private List<WifiConfiguration> mWifiConfigurations;

  18. // wifiLock鎖
  19. WifiLock mWifiLock;
  20. public TestWiFi(Context context)
  21. {
  22. //取得WifiManager對象
  23. mWifiManager= (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
  24. //取得WifiInfo對象
  25. mWifiInfo=mWifiManager.getConnectionInfo();
  26. }

  27. //打開wifi
  28. public void openWifi()
  29. {
  30. if(!mWifiManager.isWifiEnabled())
  31. {
  32. mWifiManager.setWifiEnabled(true);
  33. }
  34. }

  35.    //關閉wifi
  36. public void closeWifi() 
  37.   {
  38. if(mWifiManager.isWifiEnabled())
  39. {
  40. mWifiManager.setWifiEnabled(false);
  41. }
  42. }

  43. //鎖定wifi[
  44. public void acquireWifiLock()
  45. {
  46. mWifiLock .acquire();
  47. }

  48.    //解鎖wif
  49.   public void releaseWifiLock()
  50. {

  51. //解鎖前鎖定
  52. if(mWifiLock.isHeld())
  53. {
  54. mWifiLock .acquire();
  55. }
  56. }

  57.    //建立一個wifiLock
  58. public void creatWifiLock()
  59. {
  60. mWifiLock mWifiManager.createWifiLock("Test");
  61. }

  62.   //獲得配置好的網絡
  63. public List<WifiConfiguration> getConfiguration() 
  64. {
  65. return mWifiConfigurations ; 
  66.   }

  67.    // 指定配置好的網絡進行鏈接 
  68. public  void conectConfiguration( int index) 
  69. {
  70. //索引大於配置好的網絡索引 
  71. if (index > mWifiConfigurations .size()) 
  72.   {
  73. return;
  74.   }
  75. //鏈接配置好的指定的網絡
  76. mWifiManager[/color][color=black].enableNetwork(mWifiConfigurations.get(index).networkId,true);
  77. }

  78.   //開始掃描
  79. public void startScan() 
  80. {
  81. mWifiManager .startScan(); 
  82. // 獲得掃描結果 
  83. mWifiList = mWifiManager .getScanResults(); 
  84. // 獲得配置好的網絡鏈接 
  85. mWifiConfigurations = mWifiManager .getConfiguredNetworks(); 
  86.   }

  87.    //獲得網絡列表
  88. public List<ScanResult> getwifiList()
  89. {
  90. return mWifiList;
  91. }

  92.   //查看掃描結果
  93. public StringBuilder lookUpScan()
  94. {
  95. StringBuilder stringBuilder =new StringBuilder();
  96. for (int i = 0; i <mWifiList.size(); i++)
  97. {
  98. stringBuilder.append("Index "+newInteger(i + 1).toString() +":";
  99. //將ScanResult信息轉換成一個字符串
  100. //其中包括BSSID,SSID,capabilities,frequency和level
  101. stringBuilder.append((mWifiList.get(i)).toString());
  102. stringBuilder.append("\n");
  103. }
  104. return stringBuilder;
  105. }

  106. //獲得Mac地址
  107. public String getMacAdrress()
  108. {
  109. return(mWifiInfo ==null) ? "NULL":mWifiInfo.toString();
  110. }

  111.   //獲得接入點的BSSID
  112. public String getBSSID() 
  113. {
  114. return mWifiInfo == null ) ? "NULL":mWifiInfo.getBSSID();
  115. }

  116.   //獲得IP地址
  117.   public int getIPAddress()
  118. {
  119. return(mWifiInfo ==null) ? 0 : mWifiInfo.getIpAddress();

  120. }

  121.    //獲得鏈接的ID
  122. public int getNetWorkId()
  123. {
  124. return ( mWifiInfo == null ) ? 0 : mWifiInfo .getNetworkId(); 
  125. }

  126.     // 獲得 wifiInfo 的全部信息包 
  127. public String getWifiInfo() 
  128.   {
  129. return ( mWifiInfo == null ) ? "NULL" : mWifiInfo .toString(); 
  130.   }

  131. //添加一個網絡並鏈接
  132. public void addNetwork(WifiConfiguration wcg)
  133. {
  134. int wcgID =mWifiManager.addNetwork(wcg);
  135. mWifiManager.enableNetwork(wcgID,true);
  136. }

  137. public void disconnectWifi(int netId)
  138. {
  139. mWifiManager.disableNetwork(netId);
  140. mWifiManager.disconnect();
  141. }
  142. }
複製代碼
2.2 使用wifi網絡鏈接,須要在AndroidManifest.xml中加入對應的權限:

  1. <uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" /> 
  2. < uses-permission android:name = "android.permission.ACCESS_CHECKIN_PROPERTIES" /> 
  3. < uses-permission android:name="android.permission.WAKE_LOCK" /> 
  4. < uses-permission android:name="android.permission.INTERNET" /> 
  5. < uses-permission android:name ="android.permission.CHANGE_WIFI_STATE"/>
  6. <uses-permission android:name"android.permission.MODIFY_PHONE_STATE">
複製代碼
相關文章
相關標籤/搜索