android="
6. android:
orientation="vertical"
7. android:
layout_width="fill_parent"
8. android:
layout_height="fill_parent"
9. >
10.11. android:
id="@+id/allNetWork"
12. android:
layout_width="fill_parent"
13. android:
layout_height="wrap_content"
14. android:
text="当前没有扫描到Wifi网络"
15. />
16.
44.
45.
46.
47.
复制代码
上面布局文件中的ScrollView用来在Activity中显示右侧滚动条,如果数据多的话,则可以往下滑动继续显示未显示完的数据。
主页面代码:
1.packageorg.sunchao;
2.
3.importjava.util.List;
4.
5.importandroid.app.Activity;
6.import.wifi.ScanResult;
7.importandroid.os.Bundle;
8.importandroid.view.View;
9.importandroid.view.View.OnClickListener;
10.importandroid.widget.Button;
11.importandroid.widget.ScrollView;
12.importandroid.widget.TextView;
13.importandroid.widget.Toast;
14.
15.publicclassMainextendsActivityimplementsOnClickListener{
16. //右侧滚动条按钮
17. privateScrollViewsView;
18. privateTextViewallNetWork;
19. privateButtonscan;
20. privateButtonstart;
21. privateButtonstop;
22. privateButtoncheck;
23. privateWifiAdminmWifiAdmin;
24. //扫描结果列表
25. privateListlist;
26. privateScanResultmScanResult;
27. privateStringBuffermStringBuffer=newStringBuffer();
28.
29. /**Calledwhentheactivityisfirstcreated.*/
30. @Override
31. publicvoidonCreate(BundlesavedInstanceState){
32. super.onCreate(savedInstanceState);
33. setContentView(R.layout.main);
34. mWifiAdmin=newWifiAdmin(Main.this);
35. init();
36. }
37.
38. //按钮的初始化
39. publicvoidinit(){
40. sView=(ScrollView)findViewById(R.id.mScrollView);
41. allNetWork=(TextView)findViewById(R.id.allNetWork);
42. scan=(Button)findViewById(R.id.scan);
43. start=(Button)findViewById(R.id.start);
44. stop=(Button)findViewById(R.id.stop);
45. check=(Button)findViewById(R.id.check);
46. scan.setOnClickListener(Main.this);
47. start.setOnClickListener(Main.this);
48. stop.setOnClickListener(Main.this);
49. check.setOnClickListener(Main.this);
50. }
51.
52. //WIFI_STATE_DISABLING0
53. //WIFI_STATE_DISABLED1
54. //WIFI_STATE_ENABLING2
55. //WIFI_STATE_ENABLED3
56. publicvoidstart(){
57. mWifiAdmin.openWifi();
58. Toast.makeText(Main.this,"当前Wifi网卡状态为"+mWifiAdmin.checkState(),
59. Toast.LENGTH_SHORT).show();
60. }
61.
62. publicvoidstop(){
63. mWifiAdmin.closeWifi();
64. Toast.makeText(Main.this,"当前Wifi网卡状态为"+mWifiAdmin.checkState(),
65. Toast.LENGTH_SHORT).show();
66. }
67.
68. publicvoidcheck(){
69. Toast.makeText(Main.this,"当前Wifi网卡状态为"+mWifiAdmin.checkState(),
70. Toast.LENGTH_SHORT).show();
71. }
72.
73. publicvoidgetAllNetWorkList(){
74. //每次点击扫描之前清空上一次的扫描结果
75. if(mStringBuffer!
=null){
76. mStringBuffer=newStringBuffer();
77. }
78.
79. //开始扫描网络
80. mWifiAdmin.startScan();
81. list=mWifiAdmin.getWifiList();
82.
83. if(list!
=null){
84. for(inti=0;i85. mScanResult=list.get(i);
86. //得到网络的SSID:
thenetworkname
87. mStringBuffer=mStringBuffer
88. .append(mScanResult.SSID).append(" ")
89. .append(mScanResult.BSSID).append(" ")
90. .append(mScanResult.capabilities).append(" ")
91. .append(mScanResult.frequency).append(" ")
92. .append(mScanResult.level).append(" ")
93. .append("");
94. }
95. allNetWork.setText("扫描到的所有Wifi网络:
"+mStringBuffer.toString());
96. }
97. }
98.
99. @Override
100. publicvoidonClick(Viewv){
101. switch(v.getId()){
102. caseR.id.scan:
103. getAllNetWorkList();
104. break;
105. caseR.id.start:
106. start();
107. break;
108. caseR.id.stop:
109. stop();
110. break;
111. caseR.id.check:
112. check();
113. break;
114. default:
115. break;
116. }
117. }
118.}
119.
复制代码
上面用到了一个WifiAdmin类,这是我自己写的一个类,用于对Wifi的操作进行一次封装,里面的方法很多,我们本次Demo只用到了其中几种,但我还是先全部放上去吧,以后会用到的。
WifiAdmin工具类代码:
1.packageorg.sunchao;
2.
3.importjava.util.List;
4.
5.importandroid.content.Context;
6.import.wifi.ScanResult;
7.import.wifi.WifiConfiguration;
8.import.wifi.WifiInfo;
9.import.wifi.WifiManager;
10.import.wifi.WifiManager.WifiLock;
11.
12.publicclassWifiAdmin{
13. //定义WifiManager对象
14. privateWifiManagermWifiManager;
15. //定义WifiInfo对象
16. privateWifiInfomWifiInfo;
17. //扫描出的网络连接列表
18. privateListmWifiList;
19. //网络连接列表
20. privateListmWifiConfiguration;
21. //定义一个WifiLock
22. WifiLockmWifiLock;
23.
24. //构造器
25. publicWifiAdmin(Contextcontext){
26. //取得WifiManager对象
27. mWifiManager=(WifiManager)context
28. .getSystemService(Context.WIFI_SERVICE);
29. //取得WifiInfo对象
30. mWifiInfo=mWifiManager.getConnectionInfo();
31. }
32.
33. //打开WIFI
34. publicvoidopenWifi(){
35. if(!
mWifiManager.isWifiEnabled()){
36. mWifiManager.setWifiEnabled(true);
37. }
38. }
39.
40. //关闭WIFI
41. publicvoidcloseWifi(){
42. if(mWifiManager.isWifiEnabled()){
43. mWifiManager.setWifiEnabled(false);
44. }
45. }
46.
47. //检查当前WIFI状态
48. publicintcheckState(){
49. returnmWifiManager.getWifiState();
50. }
51.
52. //锁定WifiLock
53. publicvoidacquireWifiLock(){
54. mWifiLock.acquire();
55. }
56.
57. //解锁WifiLock
58. publicvoidreleaseWifiLock(){
59. //判断时候锁定
60. if(mWifiLock.isHeld()){
61. mWifiLock.acquire();
62. }
63. }
64.
65. //创建一个WifiLock
66. publicvoidcreatWifiLock(){
67. mWifiLock=mWifiManager.createWifiLock("Test");
68. }
69.
70. //得到配置好的网络
71. publicListgetConfiguration(){
72. returnmWifiConfiguration;
73. }
74.
75. //指定配置好的网络进行连接
76. publicvoidconnectConfiguration(intindex){
77. //索引大于配置好的网络索引返回
78. if(index>mWifiConfiguration.size()){
79.