关于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.
2. import java.util.List;
3. import android.content.Context;
4. import android.net.wifi.ScanResult;
5. import android.net.wifi.WifiConfiguration;
6. import android.net.wifi.WifiInfo;
7. import android.net.wifi.WifiManager;
8. import android.net.wifi.WifiManager.WifiLock;
9.
10. public class TestWiFi
11. {
12. //定义WifiManager对象
13. private WifiManager mWifiManager;
14.
15. //定义WifiInfo对象
16. private WifiInfo mWifiInfo;
17.
18. //扫描出的网络连接列表
19. private List<ScanResult>mWifiList;
20.
21. //网络连接列表
22. private List<WifiConfiguration> mWifiConfigurations;
23.
24. // wifiLock锁
25. WifiLock mWifiLock;
26. public TestWiFi(Context context)
27. {
28. //取得WifiManager对象
29. mWifiManager= (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
30. //取得WifiInfo对象
31. mWifiInfo=mWifiManager.getConnectionInfo();
32. }
33.
34. //打开wifi
35. public void openWifi()
36. {
37. if(!mWifiManager.isWifiEnabled())
38. {
39. mWifiManager.setWifiEnabled(true);
40. }
41. }
42.
43. //关闭wifi
44. public void closeWifi()
45. {
46. if(mWifiManager.isWifiEnabled())
47. {
48. mWifiManager.setWifiEnabled(false);
49. }
50. }
51.
52. //锁定wifi[
53. public void acquireWifiLock()
54. {
55. mWifiLock .acquire();
56. }
57.
58. //解锁wif
59. public void releaseWifiLock()
60. {
61.
62. //解锁前锁定
63. if(mWifiLock.isHeld())
64. {
65. mWifiLock .acquire();
66. }
67. }
68.
69. //创建一个wifiLock
70. public void creatWifiLock()
71. {
72. mWifiLock mWifiManager.createWifiLock("Test");
73. }
74.
75. //得到配置好的网络
76. public List<WifiConfiguration> getConfiguration()
77. {
78. return mWifiConfigurations ;
79. }
80.
81. // 指定配置好的网络进行连接
82. public void conectConfiguration( int index)
83. {
84. //索引大于配置好的网络索引
85. if (index > mWifiConfigurations .size())
86. {
87. return;
88. }
89. //连接配置好的指定的网络
90. mWifiManager[/color][color=black].enableNetwork(mWifiConfigurations.get(index).networkId,true);
91. }
92.
93. //开始扫描
94. public void startScan()
95. {
96. mWifiManager .startScan();
97. // 得到扫描结果
98. mWifiList = mWifiManager .getScanResults();
99. // 得到配置好的网络连接
100. mWifiConfigurations = mWifiManager .getConfiguredNetworks();
101. }
102.
103. //得到网络列表
104. public List<ScanResult> getwifiList()
105. {
106. return mWifiList;
107. }
108.
109. //查看扫描结果
110. public StringBuilder lookUpScan()
111. {
112. StringBuilder stringBuilder =new StringBuilder();
113. for (int i = 0; i <mWifiList.size(); i++)
114. {
115. stringBuilder.append("Index "+newInteger(i + 1).toString() +":";
116. //将ScanResult信息转换成一个字符串
117. //其中包括BSSID,SSID,capabilities,frequency和level
118. stringBuilder.append((mWifiList.get(i)).toString());
119. stringBuilder.append("\n");
120. }
121. return stringBuilder;
122. }
123.
124. //得到Mac地址
125. public String getMacAdrress()
126. {
127. return(mWifiInfo ==null) ? "NULL":mWifiInfo.toString();
128. }
129.
130. //得到接入点的BSSID
131. public String getBSSID()
132. {
133. return mWifiInfo == null ) ? "NULL":mWifiInfo.getBSSID();
134. }
135.
136. //得到IP地址
137. public int getIPAddress()
138. {
139. return(mWifiInfo ==null) ? 0 : mWifiInfo.getIpAddress();
140.
141. }
142.
143. //得到连接的ID
144. public int getNetWorkId()
145. {
146. return ( mWifiInfo == null ) ? 0 : mWifiInfo .getNetworkId();
147. }
148.
149. // 得到 wifiInfo 的所有信息包
150. public String getWifiInfo()
151. {
152. return ( mWifiInfo == null ) ? "NULL" : mWifiInfo .toString();
153. }
154.
155. //添加一个网络并连接
156. public void addNetwork(WifiConfiguration wcg)
157. {
158. int wcgID =mWifiManager.addNetwork(wcg);
159. mWifiManager.enableNetwork(wcgID,true);
160. }
161.
162. public void disconnectWifi(int netId)
163. {
164. mWifiManager.disableNetwork(netId);
165. mWifiManager.disconnect();
166. }
167. }
168.
复制代码
2.2 使用wifi网络连接,需要在AndroidManifest.xml中加入对应的权限:
1.
2. <uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" />
3. < uses-permission android:name = "android.permission.ACCESS_CHECKIN_PROPERTIES" />
4. < uses-permission android:name="android.permission.WAKE_LOCK" />
5. < uses-permission android:name="android.permission.INTERNET" />
6. < uses-permission android:name ="android.permission.CHANGE_WIFI_STATE"/>
7. <uses-permission android:name"android.permission.MODIFY_PHONE_STATE">
8.