分享

Android 对Wifi进行操作

 Babylly 2011-12-29
因为需要一直在弄网络的问题,今天看了一下Wifi的操作,经过整理,做出来了一个类,可能不全,但是个人感觉已经完全能够满足需要了,当然,里面的方法也有可能是错误的或者是不全的,这个类我没有进行完整的测试,只测试了其中的一些方法。

       其实操作Wifi也是很简单的,主要使用以下几个对象或变量:

       private WifiManager wifiManager;// 声明管理对象OpenWifi
       private WifiInfo wifiInfo;// Wifi信息
       private List<ScanResult> scanResultList; // 扫描出来的网络连接列表
       private List<WifiConfiguration> wifiConfigList;// 网络配置列表
       private WifiLock wifiLock;// Wifi锁


       其实这些不写成一个单独的类也是可以操作的,介理这里为了使用方便,写了一个统一的类对Wifi进行操作,通过这些方法,基本上可以得到所有操作的数据。

java代码:
  1. package eoe.wifi;

  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. public class WifiManageClass {
  10. private WifiManager wifiManager;
  11. // 声明管理对象
  12. private WifiInfo wifiInfo;
  13. // Wifi信息
  14. private List<ScanResult> scanResultList;
  15. // 扫描出来的网络连接列表
  16. private List<WifiConfiguration> wifiConfigList;
  17. // 网络配置列表
  18. private WifiLock wifiLock;
  19. // Wifi锁
  20. public WifiManageClass(Context context) {
  21. this.wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE);
  22. // 获取Wifi服务
  23. // 得到Wifi信息
  24. this.wifiInfo = wifiManager.getConnectionInfo();
  25. // 得到连接信息
  26. }
  27. public boolean getWifiStatus() {
  28. return wifiManager.isWifiEnabled();
  29. } // 打开/关闭
  30. wifi public boolean openWifi() {
  31. if (!wifiManager.isWifiEnabled()) {
  32. return wifiManager.setWifiEnabled(true);
  33. } else { return false; }
  34. }
  35. public boolean closeWifi() {
  36. if (!wifiManager.isWifiEnabled()) { return true; }
  37. else { return wifiManager.setWifiEnabled(false); }
  38. }
  39. // 锁定/解锁wifi
  40. // 其实锁定WiFI就是判断wifi是否建立成功,在这里使用的是held,握手的意思acquire 得到!

  41. public void lockWifi() { wifiLock.acquire(); }
  42. public void unLockWifi() {
  43. if (!wifiLock.isHeld()) {
  44. wifiLock.release();
  45. // 释放资源
  46. }
  47. }
  48. // 我本来是写在构造函数中了,但是考虑到不是每次都会使用Wifi锁,所以干脆自己建立一个方法!需要时调用,建立就OK

  49. public void createWifiLock() {
  50. wifiLock = wifiManager.createWifiLock("flyfly");
  51. // 创建一个锁的标志
  52. }
  53. // 扫描网络
  54. public void startScan() {
  55. wifiManager.startScan();
  56. scanResultList = wifiManager.getScanResults();
  57. // 扫描返回结果列表
  58. wifiConfigList = wifiManager.getConfiguredNetworks();
  59. // 扫描配置列表
  60. }
  61. public List<ScanResult> getWifiList() {
  62. return scanResultList;
  63. }
  64. public List<WifiConfiguration> getWifiConfigList() {
  65. return wifiConfigList;
  66. }
  67. // 获取扫描列表
  68. public StringBuilder lookUpscan() {
  69. StringBuilder scanBuilder = new StringBuilder();
  70. for (int i = 0; i < scanResultList.size(); i++) {
  71. scanBuilder.append("编号:" + (i + 1));
  72. scanBuilder.append(scanResultList.get(i).toString());
  73. //所有信息
  74. scanBuilder.append("\n"); }
  75. return scanBuilder; }
  76. //获取指定信号的强度
  77. public int getLevel(int NetId) { return scanResultList.get(NetId).level; }
  78. // 获取本机Mac地址
  79. public String getMac() { return (wifiInfo == null) ? "" : wifiInfo.getMacAddress(); }
  80. public String getBSSID() { return (wifiInfo == null) ? null : wifiInfo.getBSSID(); }
  81. public String getSSID() { return (wifiInfo == null) ? null : wifiInfo.getSSID(); }
  82. // 返回当前连接的网络的ID
  83. public int getCurrentNetId() { return (wifiInfo == null) ? null : wifiInfo.getNetworkId(); }
  84. // 返回所有信息
  85. public String getwifiInfo() { return (wifiInfo == null) ? null : wifiInfo.toString(); }
  86. // 获取IP地址
  87. public int getIP() { return (wifiInfo == null) ? null : wifiInfo.getIpAddress(); }
  88. // 添加一个连接
  89. public boolean addNetWordLink(WifiConfiguration config) {
  90. int NetId = wifiManager.addNetwork(config);
  91. return wifiManager.enableNetwork(NetId, true); }
  92. // 禁用一个链接
  93. public boolean disableNetWordLick(int NetId) {
  94. wifiManager.disableNetwork(NetId);
  95. return wifiManager.disconnect();
  96. }
  97. // 移除一个链接
  98. public boolean removeNetworkLink(int NetId) {
  99. return wifiManager.removeNetwork(NetId);
  100. }
  101. //不显示SSID
  102. public void hiddenSSID(int NetId) {
  103. wifiConfigList.get(NetId).hiddenSSID=true;
  104. }
  105. //显示SSID
  106. public void displaySSID(int NetId) { wifiConfigList.get(NetId).hiddenSSID=false; }
  107. }
复制代码

       下面是操作这些所需要的权限,当然根据操作的内容不同,可能权限也不同,下面的权限仅供参考:

java代码:
  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
  2. </uses-permission><uses-permission android:name="adnroid.permission.ACCESS_CHECKIN_PROPERTTES"></uses-permission><uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="adnroid.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>
复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多