android下为自己定义wifimanager类

分类: android日常笔记 371人阅读 评论(0) 收藏 举报

[java] view plain copy print ?
  1. package com.FIDO.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 wifiManager {
  10. private WifiManager wifiManager;//wifi 管理
  11. private WifiInfo wifiInfo; //wifi 信息
  12. private ListscanResultList;//扫描出来的网络列表
  13. private ListwifiConfigList;//网络配置列表
  14. private WifiLock wifiLock;//wifi锁
  15. //获取连接信息
  16. public wifiManager(Context context){//获取当前wifi服务
  17. this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
  18. this.wifiInfo = wifiManager.getConnectionInfo();
  19. }
  20. //得到连接信息
  21. public boolean getWifiStatus(){
  22. return wifiManager.isWifiEnabled();
  23. }
  24. //打开 / 关闭wifi
  25. public boolean openWifi(){
  26. if(!wifiManager.isWifiEnabled()){
  27. return wifiManager.setWifiEnabled(true);
  28. }else{
  29. return false;
  30. }
  31. }
  32. public boolean closeWifi(){
  33. if(!wifiManager.isWifiEnabled()){
  34. return true;
  35. }else{
  36. return wifiManager.setWifiEnabled(false);
  37. }
  38. }
  39. // 其实锁定WiFI就是判断wifi是否建立成功,在这里使用的是held,握手的意思acquire 得到
  40. public void lockWifi(){
  41. wifiLock.acquire();
  42. }
  43. public void unLockWifi(){
  44. if(!wifiLock.isHeld()){
  45. wifiLock.release();
  46. }
  47. }
  48. // 创建wifi锁,考虑到不是每次都会使用Wifi锁,所以干脆自己建立一个方法!需要时调用,建立就OK
  49. public void createWifiLock(){
  50. wifiLock = wifiManager.createWifiLock("hanzhen");
  51. }
  52. //扫描网络
  53. public void startScan(){
  54. wifiManager.startScan();
  55. scanResultList = wifiManager.getScanResults(); //扫描 返回结果列表
  56. wifiConfigList = wifiManager.getConfiguredNetworks(); //扫描 配置列表
  57. }
  58. public ListgetWifiList(){
  59. return scanResultList;
  60. }
  61. public ListgetWifiConfigList(){
  62. return wifiConfigList;
  63. }
  64. //获取扫描列表
  65. public StringBuilder lookUpscan(){
  66. StringBuilder scanBuilder = new StringBuilder();
  67. for(int i=0; i
  68. scanBuilder.append("编号:"+(i+1));
  69. scanBuilder.append(scanResultList.get(i).toString());
  70. scanBuilder.append("\n");
  71. }
  72. return scanBuilder;
  73. }
  74. //获取指定信号的强度
  75. public int getLevel(int NetId){
  76. return scanResultList.get(NetId).level;
  77. }
  78. //获取本机MAC地址
  79. public String getMac(){
  80. return (wifiInfo ==null) ?"" : wifiInfo.getMacAddress();
  81. }
  82. public String getBSSID(){
  83. return (wifiInfo == null) ?null : wifiInfo.getBSSID();
  84. }
  85. public String getSSID(){
  86. return (wifiInfo ==null) ?null : wifiInfo.getSSID();
  87. }
  88. //返回当前连接的网络ID
  89. public int getCurrentNetId(){
  90. return (wifiInfo ==null) ?null : wifiInfo.getNetworkId();
  91. }
  92. //返回所有信息
  93. public String getwifiInfo(){
  94. return (wifiInfo ==null) ?null : wifiInfo.toString();
  95. }
  96. //返回IP 地址
  97. private String intToIp(int i){
  98. return (i&0xff)+"."+((i>>8)&0xff)+"."+((i>>16)&0xff)+"."+((i>>24)&0xff);
  99. }
  100. public String getIp(){
  101. return (wifiInfo == null) ?null : intToIp(wifiInfo.getIpAddress());
  102. }
  103. //添加一个连接
  104. public boolean addNetWorkLink(WifiConfiguration config){
  105. int NetId = wifiManager.addNetwork(config);
  106. return wifiManager.enableNetwork(NetId,true);
  107. }
  108. //禁用一个连接
  109. public boolean disableNetWorkLink(int NetId){
  110. wifiManager.disableNetwork(NetId);
  111. return wifiManager.disconnect();
  112. }
  113. //移除一个连接
  114. public boolean removeNetWorkLink(int NetId){
  115. return wifiManager.removeNetwork(NetId);
  116. }
  117. //不显示SSID
  118. public void hiddenSSID(int NetId){
  119. wifiConfigList.get(NetId).hiddenSSID = true;
  120. }
  121. //显示SSID
  122. public void displaySSID(int NetId){
  123. wifiConfigList.get(NetId).hiddenSSID = false;
  124. }
  125. }

 

 

 

 

 

 

 

 

 

 

 

 

WifiManager自动连接wifi接入点

2807人阅读 评论(1) 收藏 举报 string 网络 null 加密 service access [java] view plain copy print ?
  1. /**
  2. *
  3. * wifi管理类
  4. *
  5. *
  6. */
  7. public class WifiOperator
  8. {
  9. /**
  10. * wifiManager
  11. */
  12. private WifiManager wm;
  13. /**
  14. * 上下文
  15. */
  16. private Context mContext;
  17. /**
  18. * 数据库配置信息
  19. */
  20. private NetworkConfigDbHelper configDBHelper;
  21. /**
  22. * <默认构造函数>
  23. * @param context 上下文
  24. */
  25. public WifiOperator(Context context)
  26. {
  27. mContext = context;
  28. wm = (WifiManager)mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
  29. configDBHelper = new NetworkConfigDbHelper(context);
  30. }
  31. /**
  32. * 切换网络
  33. * @param type 网络类型(1为中心网络 2 为车载网络)
  34. * @return 结果码 -1-本地设置为空;0-连接成功;1-已经为当前连接
  35. * @see [类、类#方法、类#成员]
  36. */
  37. public int access2Wifi(String type)
  38. {
  39. // 获取本地的网络配置信息
  40. NetworkConfigBean setting = configDBHelper.getNetworkConfigBySettingType(type).get(type);
  41. if (setting == null)
  42. {
  43. // 本地设置为空
  44. return -1;
  45. }
  46. // 无线未打开时,开启无线
  47. if (!wm.isWifiEnabled() && WifiManager.WIFI_STATE_ENABLING != wm.getWifiState())
  48. {
  49. wm.setWifiEnabled(true);
  50. }
  51. // 获取本地的配置信息
  52. String sSSID = "\"" + setting.getSsid() +"\"";
  53. String sKey = "\"" + setting.getPassword() +"\"";
  54. int encryptionType = getKeyMgmtType(setting.getEncryptionType());
  55. List configurations = wm.getConfiguredNetworks();
  56. WifiConfiguration config = null;
  57. boolean isExisted =false;
  58. int networkId = -1;
  59. for (int i = configurations.size() -1; i >=0; i--)
  60. {
  61. config = configurations.get(i);
  62. if (config.SSID.equals(sSSID))
  63. {
  64. networkId = config.networkId;
  65. isExisted = true;
  66. break;
  67. }
  68. }
  69. if (!isExisted)
  70. {
  71. // 安全类型 无、WEP(128)、WPA(TKIP)、WPA2(AES)
  72. config = new WifiConfiguration();
  73. // 名称
  74. config.SSID = sSSID;
  75. config.allowedKeyManagement.set(encryptionType);
  76. if (encryptionType != 0)
  77. {
  78. // 密码
  79. config.preSharedKey = sKey;
  80. }
  81. config.hiddenSSID = false;
  82. config.priority = 30;
  83. config.status = WifiConfiguration.Status.ENABLED;
  84. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
  85. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  86. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  87. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
  88. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
  89. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
  90. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
  91. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.NONE);
  92. config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
  93. // 必须添加,否则无线路由无法连接
  94. config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
  95. networkId = wm.addNetwork(config);
  96. if (networkId != -1)
  97. {
  98. wm.saveConfiguration();
  99. }
  100. }
  101. else
  102. {
  103. // 获取当前的wifi连接
  104. WifiInfo curConnection = wm.getConnectionInfo();
  105. if (curConnection != null && sSSID.equals(curConnection.getSSID()))
  106. {
  107. // 已经是当前连接
  108. return 1;
  109. }
  110. config.allowedKeyManagement.set(encryptionType);
  111. if (encryptionType !=0)
  112. {
  113. // 密码
  114. config.preSharedKey = sKey;
  115. }
  116. wm.updateNetwork(config);
  117. }
  118. if (networkId != -1)
  119. {
  120. wm.disconnect();
  121. wm.enableNetwork(networkId, true);
  122. }
  123. return 0;
  124. }
  125. /**
  126. * 获取加密类型
  127. * @param type 加密类型
  128. * @return 加密类型
  129. * @see [类、类#方法、类#成员]
  130. */
  131. private int getKeyMgmtType(String type)
  132. {
  133. if (type == null)
  134. {
  135. return WifiConfiguration.KeyMgmt.NONE;
  136. }
  137. if ("WEP".equals(type))
  138. {
  139. return WifiConfiguration.KeyMgmt.IEEE8021X;
  140. }
  141. else if ("WPA-PSK".equals(type))
  142. {
  143. return WifiConfiguration.KeyMgmt.WPA_PSK;
  144. }
  145. else if ("WPA2-PSK".equals(type))
  146. {
  147. return WifiConfiguration.KeyMgmt.WPA_PSK;
  148. }
  149. return WifiConfiguration.KeyMgmt.NONE;
  150. }
  151. }
/** *  * wifi管理类 *  *  */public class WifiOperator{    /**     * wifiManager     */    private WifiManager wm;        /**     * 上下文     */    private Context mContext;        /**     * 数据库配置信息     */    private NetworkConfigDbHelper configDBHelper;        /**     * <默认构造函数>     * @param context 上下文     */    public WifiOperator(Context context)    {        mContext = context;        wm = (WifiManager)mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);        configDBHelper = new NetworkConfigDbHelper(context);    }        /**     * 切换网络     * @param type 网络类型(1为中心网络 2 为车载网络)     * @return 结果码 -1-本地设置为空;0-连接成功;1-已经为当前连接     * @see [类、类#方法、类#成员]     */    public int access2Wifi(String type)    {        // 获取本地的网络配置信息        NetworkConfigBean setting = configDBHelper.getNetworkConfigBySettingType(type).get(type);        if (setting == null)        {            // 本地设置为空            return -1;        }                // 无线未打开时,开启无线        if (!wm.isWifiEnabled() && WifiManager.WIFI_STATE_ENABLING != wm.getWifiState())        {            wm.setWifiEnabled(true);        }        // 获取本地的配置信息        String sSSID = "\"" + setting.getSsid() + "\"";        String sKey = "\"" + setting.getPassword() + "\"";        int encryptionType = getKeyMgmtType(setting.getEncryptionType());                List configurations = wm.getConfiguredNetworks();        WifiConfiguration config = null;        boolean isExisted = false;        int networkId = -1;        for (int i = configurations.size() - 1; i >= 0; i--)        {            config = configurations.get(i);            if (config.SSID.equals(sSSID))            {                networkId = config.networkId;                isExisted = true;                break;            }        }        if (!isExisted)        {            // 安全类型 无、WEP(128)、WPA(TKIP)、WPA2(AES)            config = new WifiConfiguration();            // 名称            config.SSID = sSSID;            config.allowedKeyManagement.set(encryptionType);            if (encryptionType != 0)            {                // 密码                config.preSharedKey = sKey;            }            config.hiddenSSID = false;                        config.priority = 30;            config.status = WifiConfiguration.Status.ENABLED;            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);                        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);                        config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.NONE);                        config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);            // 必须添加,否则无线路由无法连接            config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);                        networkId = wm.addNetwork(config);            if (networkId != -1)            {                wm.saveConfiguration();            }        }        else        {            // 获取当前的wifi连接            WifiInfo curConnection = wm.getConnectionInfo();            if (curConnection != null && sSSID.equals(curConnection.getSSID()))            {                // 已经是当前连接                return 1;            }                        config.allowedKeyManagement.set(encryptionType);            if (encryptionType != 0)            {                // 密码                config.preSharedKey = sKey;            }            wm.updateNetwork(config);        }                if (networkId != -1)        {            wm.disconnect();            wm.enableNetwork(networkId, true);        }        return 0;    }        /**     * 获取加密类型     * @param type 加密类型     * @return 加密类型     * @see [类、类#方法、类#成员]     */    private int getKeyMgmtType(String type)    {        if (type == null)        {            return WifiConfiguration.KeyMgmt.NONE;        }                if ("WEP".equals(type))        {            return WifiConfiguration.KeyMgmt.IEEE8021X;        }        else if ("WPA-PSK".equals(type))        {            return WifiConfiguration.KeyMgmt.WPA_PSK;        }        else if ("WPA2-PSK".equals(type))        {            return WifiConfiguration.KeyMgmt.WPA_PSK;        }        return WifiConfiguration.KeyMgmt.NONE;    }}

 

 

 

 

android wifi讲解 wifi列表显示

 

2013-10-29 08:40:03      我来说两句       作者:在路上001
收藏      我要投稿

 

    最近项目中用到了wifi模块,今天做一个简单的总结。 1.怎样获取wifi对象并进行操作 要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个对象来管理WIFI设备。   addNetwork(WifiConfiguration config) 添加一个config描述的WIFI网络,默认情况下,这个WIFI网络是DISABLE状态的。 calculateSignalLevel(int rssi , int numLevels) 计算信号的等级 compareSignalLevel(int rssiA, int rssiB) 对比网络A和网络B的信号强度 createWifiLock(int lockType, String tag) 创建一个WIFI 锁,锁定当前的WIFI连接 disableNetwork(int netId) 让一个网络连接失效 disconnect() 断开当前的WIFI连接 enableNetwork(int netId, Boolean disableOthers) 连接netId所指的WIFI网络,并是其他的网络都被禁用 getConfiguredNetworks() 获取网络连接的状态 getConnectionInfo() 获取当前连接的信息 getDhcpInfo() 获取DHCP 的信息 getScanResulats() 获取扫描测试的结果 getWifiState() 获取当前WIFI设备的状态 isWifiEnabled() 判断WIFI设备是否打开 pingSupplicant() ping操作,和PC的ping操作相同作用 ressociate() 重新连接WIFI网络,即使该网络是已经被连接上的 reconnect() 重新连接一个未连接上的WIFI网络 removeNetwork() 移除某一个网络 saveConfiguration() 保留一个配置信息 setWifiEnabled() 让一个连接有效 startScan() 开始扫描 updateNetwork(WifiConfiguration config) 更新一个网络连接 2.常用的wifi状态 WIFI_STATE_DISABLED WIFI网卡不可用  WIFI_STATE_DISABLING WIFI网卡正在关闭  WIFI_STATE_ENABLED WIFI网卡可用  WIFI_STATE_ENABLING WIFI网卡正在打开  WIFI_STATE_UNKNOWN WIFI网卡状态不可知 3.列表查看有连接信号的wifi热点 ScanResult对象就是用来表示附近wifi热点的属性的,可以通过WifiManager.getScanResults()返回一个ScanResult列表,后面我附上查看附近wifi热点的demo,ScanResult的重要属性有一下几个: BSSID 接入点的地址 SSID 网络的名字,唯一区别WIFI网络的名字 Capabilities 网络接入的性能 Frequency 当前WIFI设备附近热点的频率(MHz) Level 所发现的WIFI网络信号强度 4.连接wifi热点 通过WifiManager.getConfiguredNetworks()方法会返回WifiConfiguration对象的列表,然后再调用WifiManager.enableNetwork();方法就可以连接上指定的热点。 5.查看已经连接上的wifi信息 WifiInfo是专门用来表示连接的对象,这个对象可以通过WifiManager.getConnectionInfo()来获取。WifiInfo中包含了当前连接中的相关信息。   getBSSID() 获取BSSID属性 getDetailedStateOf() 获取客户端的连通性 getHiddenSSID() 获取SSID 是否被隐藏 getIpAddress() 获取IP 地址 getLinkSpeed() 获取连接的速度 getMacAddress() 获取Mac 地址 getRssi() 获取802.11n 网络的信号 getSSID() 获取SSID getSupplicanState() 获取具体客户端状态的信息 在wifi操作中常用的类和方法就这些,下面给出一个列表显示wifi热点的demo。   1.activity的布局很简单就是一个ListView,activity_wifi_list.xml内容如下: [ html]                         2.ListView的item布局文件item_wifi_list.xml内容如下: [html]  <?xml version="1.0" encoding="utf-8"?>                                     3.下面就activity的代码了,这里需要自己自定义列表。 [java]   public class WifiListActivity extends Activity {          private WifiManager wifiManager;       List list;       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_wifi_list);           init();       }          private void init() {           wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);           openWifi();           list = wifiManager.getScanResults();           ListView listView = (ListView) findViewById(R.id.listView);           if (list == null) {               Toast.makeText(this, "wifi未打开!", Toast.LENGTH_LONG).show();           }else {               listView.setAdapter(new MyAdapter(this,list));           }                  }              /**       *  打开WIFI       */       private void openWifi() {          if (!wifiManager.isWifiEnabled()) {           wifiManager.setWifiEnabled(true);          }                }          public class MyAdapter extends BaseAdapter {              LayoutInflater inflater;           List list;           public MyAdapter(Context context, List list) {               // TODO Auto-generated constructor stub               this.inflater = LayoutInflater.from(context);               this.list = list;           }              @Override           public int getCount() {               // TODO Auto-generated method stub               return list.size();           }              @Override           public Object getItem(int position) {               // TODO Auto-generated method stub               return position;           }              @Override           public long getItemId(int position) {               // TODO Auto-generated method stub               return position;           }              @Override           public View getView(int position, View convertView, ViewGroup parent) {               // TODO Auto-generated method stub               View view = null;               view = inflater.inflate(R.layout.item_wifi_list, null);               ScanResult scanResult = list.get(position);               TextView textView = (TextView) view.findViewById(R.id.textView);               textView.setText(scanResult.SSID);               TextView signalStrenth = (TextView) view.findViewById(R.id.signal_strenth);               signalStrenth.setText(String.valueOf(Math.abs(scanResult.level)));               ImageView imageView = (ImageView) view.findViewById(R.id.imageView);               //判断信号强度,显示对应的指示图标               if (Math.abs(scanResult.level) > 100) {                   imageView.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_wifi_signal_0));               } else if (Math.abs(scanResult.level) > 80) {                   imageView.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_wifi_signal_1));               } else if (Math.abs(scanResult.level) > 70) {                   imageView.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_wifi_signal_1));               } else if (Math.abs(scanResult.level) > 60) {                   imageView.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_wifi_signal_2));               } else if (Math.abs(scanResult.level) > 50) {                   imageView.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_wifi_signal_3));               } else {                   imageView.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_wifi_signal_4));               }               return view;           }          }      }   程序运行效果图如下:

 

Android_WiFi

分类: 【Android_Network】 949人阅读 评论(0) 收藏 举报

Android提供了android.net.wifi包供我们操作WiFi。首先介绍一下几个类:

WifiManager:提供了管理WiFI连接的大部分API

ScanResult:已经检测出的接入点(包括接入点的地址、名称、身份认证、频率、信号强度)

WifiConfiguration:WiFi连接的网络配置(包括安全配置等)

WifiInfo:WiFI无线连接的描述(包括接入点、网络连接状态、隐藏的接入点、IP地址、连接速度、MAC地址、网络ID、信号强度等等)

WifiManager.WifiLock:允许应用程序一直使用WiFI无线网络,通常情况下当用户在一段时间内没有任何操作的时候,WiFi网络会自动关闭。我们使用WifiLock来锁定WiFi网络,使其一直保持连接,直到这个锁被释放。多个应用程序可能有多个锁,当多有的应用程序的锁都被释放的时候,WiFi才被关闭。

下面我们通过代码理解WiFI的使用:

通过以下代码获得WifiManager对象(Wifi是系统的一项服务)

[java] view plain copy print ?
  1. WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
打开WiFI [java] view plain copy print ?
  1. public void openWifi() {
  2. if (!mWifiManager.isWifiEnabled()) {
  3. mWifiManager.setWifiEnabled(true);
  4. }
  5. }
public void openWifi() {if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(true);}}
关闭WiFi [java] view plain copy print ?
  1. public void closeWifi() {
  2. if (!mWifiManager.isWifiEnabled()) {
  3. mWifiManager.setWifiEnabled(false);
  4. }
  5. }
public void closeWifi() {if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);}}
创建一个WifiLock [java] view plain copy print ?
  1. public void creatWifiLock() {
  2. mWifiLock = mWifiManager.createWifiLock("Test");
  3. }
public void creatWifiLock() {mWifiLock = mWifiManager.createWifiLock("Test");}
锁定WifiLock [java] view plain copy print ?
  1. public void acquireWifiLock() {
  2. mWifiLock.acquire();
  3. }
public void acquireWifiLock() {mWifiLock.acquire();}
释放WifiLock [java] view plain copy print ?
  1. public void releaseWifiLock() {
  2. if (mWifiLock.isHeld()) {
  3. mWifiLock.release();
  4. }
  5. }
public void releaseWifiLock() {if (mWifiLock.isHeld()) {mWifiLock.release();}}
添加一个WiFi并连接 [java] view plain copy print ?
  1. public void addNetworkAndConn(WifiConfiguration wcg) {
  2. int netId = mWifiManager.addNetwork(wcg);
  3. mWifiManager.enableNetwork(netId, true);
  4. }
public void addNetworkAndConn(WifiConfiguration wcg) {int netId = mWifiManager.addNetwork(wcg);mWifiManager.enableNetwork(netId, true);}
断开一个指定ID的WiFi [java] view plain copy print ?
  1. public void disconnectWifi(int netId) {
  2. mWifiManager.disableNetwork(netId);
  3. mWifiManager.disconnect();
  4. }
public void disconnectWifi(int netId) {mWifiManager.disableNetwork(netId);mWifiManager.disconnect();}
连接到一个已经配置好了的WiFi [html] view plain copy print ?
  1. public void connectConfiguration(int index) {
  2. // 索引大于配置好的网络索引返回
  3. if (index > mWifiConfiguration.size()) {
  4. return;
  5. }
  6. mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
  7. true);
  8. }
public void connectConfiguration(int index) {// 索引大于配置好的网络索引返回if (index > mWifiConfiguration.size()) {return;}mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,true);}

扫描可接入的WiFi

[java] view plain copy print ?
  1. public void startScan() {
  2. mWifiManager.startScan();
  3. // 得到扫描结果
  4. List wifiList = mWifiManager.getScanResults();
  5. // 得到配置好的网络连接
  6. List wifiConfigList = mWifiManager.getConfiguredNetworks();
  7. }
public void startScan() {mWifiManager.startScan();// 得到扫描结果List wifiList = mWifiManager.getScanResults();// 得到配置好的网络连接List wifiConfigList = mWifiManager.getConfiguredNetworks();}
查看扫描结果
[java] view plain copy print ?
  1. public StringBuilder lookUpScan() {
  2. StringBuilder stringBuilder = new StringBuilder();
  3. for (int i = 0; i < mWifiList.size(); i++) {
  4. stringBuilder
  5. .append("Index_" + new Integer(i + 1).toString() + ":");
  6. // 将ScanResult信息转换成一个字符串包
  7. // 其中把包括:BSSID、SSID、capabilities、frequency、level
  8. stringBuilder.append((mWifiList.get(i)).toString());
  9. stringBuilder.append("\n");
  10. }
  11. return stringBuilder;
  12. }
public StringBuilder lookUpScan() {StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < mWifiList.size(); i++) {stringBuilder.append("Index_" + new Integer(i + 1).toString() + ":");// 将ScanResult信息转换成一个字符串包// 其中把包括:BSSID、SSID、capabilities、frequency、levelstringBuilder.append((mWifiList.get(i)).toString());stringBuilder.append("\n");}return stringBuilder;}
得到WiFi的一些信息 [java] view plain copy print ?
  1. WifiInfo mifiInfo = mWifiManager.getConnectionInfo();
  2. // 得到MAC地址
  3. public String GetMacAddress() {
  4. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
  5. }
  6. // 得到接入点的BSSID
  7. public String GetBSSID() {
  8. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
  9. }
  10. // 得到IP地址
  11. public int GetIPAddress() {
  12. return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
  13. }
  14. // 得到连接的ID
  15. public int GetNetworkId() {
  16. return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
  17. }
  18. // 得到WifiInfo的所有信息包
  19. public String GetWifiInfo() {
  20. return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
  21. }
WifiInfo mifiInfo = mWifiManager.getConnectionInfo();// 得到MAC地址public String GetMacAddress() {return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();}// 得到接入点的BSSIDpublic String GetBSSID() {return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();}// 得到IP地址public int GetIPAddress() {return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();}// 得到连接的IDpublic int GetNetworkId() {return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();}// 得到WifiInfo的所有信息包public String GetWifiInfo() {return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();}

最后,使用WiFi必须添加的权限

[html] view plain copy print ?
  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">uses-permission>
  2. <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES">uses-permission>
  3. <uses-permission android:name="android.permission.WAKE_LOCK">uses-permission>
  4. <uses-permission android:name="android.permission.INTERNET">uses-permission>
  5. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE">uses-permission>
  6. <uses-permission android:name="android.permission.MODIFY_PHONE_STATE">uses-permission>
     

更多相关文章

  1. android解析xml文件 Android DOM解析XML之全球实时地震信息列表
  2. android系统信息总结
  3. android 网络连接判断
  4. android连接网络
  5. Android中读取短信信息
  6. Android: ADB网络调试
  7. execlp启动android进程命令窗口通过adb shell 进入android 的Lin
  8. 获取Android 设备信息——build.prop
  9. android调用隐藏的网络信息设置菜单实现

随机推荐

  1. GDB在线调试Android Framework Native C/
  2. Android自动化测试初探
  3. Android ImageView的scaleType属性与adju
  4. 将Android封装库通过gradle部署到maven私
  5. 使用命令行签名Android应用程序
  6. ContentProvider和Uri详解
  7. Android中Handler小例子
  8. android之从Bmob获取数据显示在ListView
  9. Android 屏幕截图
  10. Awesome Adb——一份超全超详细的 ADB 用