Android之Wifi学习教程.docx
- 文档编号:10785287
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:36
- 大小:180.10KB
Android之Wifi学习教程.docx
《Android之Wifi学习教程.docx》由会员分享,可在线阅读,更多相关《Android之Wifi学习教程.docx(36页珍藏版)》请在冰豆网上搜索。
Android之Wifi学习教程
在Android中对Wifi操作,android本身提供了一些有用的包,在.wifi包下面。
简单介绍一下:
大致可以分为四个主要的类ScanResult,wifiConfiguration,WifiInfo,WifiManager
(1)ScanResult,主要是通过wifi硬件的扫描来获取一些周边的wifi热点的信息。
(2)wifiConfiguration在我们连通一个wifi接入点的时候,需要获取到的一些信息。
大家可以跟我们有线的设备进行对比一下。
(3)WifiInfo在我们的wifi已经连通了以后,可以通过这个类获得一些已经连通的wifi连接的信息获取当前链接的信息,这里信息就比较简单了,这里简单介绍一下这里的方法:
getBSSID()获取BSSID
getDetailedStateOf()获取客户端的连通性
getHiddenSSID()获得SSID是否被隐藏
getIpAddress()获取IP地址
getLinkSpeed()获得连接的速度
getMacAddress()获得Mac地址
getRssi()获得802.11n网络的信号
getSSID()获得SSID
getSupplicanState()返回具体客户端状态的信息
(4)wifiManager这个不用说,就是用来管理我们的wifi连接,这里已经定义好了一些类,可以供我们使用。
这里来说相对复杂,里面的内容比较多,但是通过字面意思,我们还是可以获得很多相关的信息。
这个类里面预先定义了许多常量,我们可以直接使用,不用再次创建。
介绍完了,开始写一个Demo吧。
程序已启动效果图如下:
看代码,其中有注释,我就不多说了。
布局文件代码:
1.
2. android=" 3. android: id="@+id/mScrollView"android: layout_width="fill_parent" 4. android: layout_height="wrap_content"android: scrollbars="vertical"> 5. 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;i 85. 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.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android Wifi 学习 教程