WIFI全称Wireless Fidelity, 又称802.11b标准。WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance(WECA), 2002年10月正式改名Wi-Fi Alliance。

Android 提供android.net.wifi 包。wifi api为app和底层无线栈进行交流提供途径。底层无线栈为wifi提供接入点。

 

android.net.wifi 中常用的类有:

1. ScanResult, 主要用来描述已经检测出的接入点,包括接入点的地址、接入点的名称、身份认证、频率、信号强度等。

2. WifiConfiguration, wifi网络配置,包括安全配置等。

3. WifiInfo, Wifi无线连接的描述,包括接入点、网络连接状态、隐藏的接入点、IP地址、连接速度、MAC地址、网络ID、信号强度等。

4. WifiManager, 提供管理wifi连接的大部分API。

5. WifiManager.WifiLock, 通过WifiLock来锁定wifi网络,使其一直保持连接,直到这个锁定被释放。如果app需要下载很大的文件,就需要保持wifi锁,来确保app有足够的时间下载完成。wifi锁不能超越wifi-enabled设置,也没有飞行模式。

 

WifiManager的常用方法

1. addNetwork

2. calculateSignalLevel,

3. compareSignalLevel,

4. createWifiLock,

5. disableNetwork,

6. disconnect,

7. enableNetwork,

8. getConfiguredNetworks,

9. getDhcpInfo,

10. getScanResults,

11. getWifiState,

12. isWifiEnabled,

13. pingSupplicant,

14. reassociate,

15. removeNetwork,

16. saveConfiguration,

17. setWifiEnabled,

18. startScan,

19. updateNetwork.

 

学习如何控制app中的wifi连接。

// 获得WifiManager对象

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

 

public class WifiAdmin {

  private WifiManager mWifiManager;

  private WifiInfo mWifiInfo;

  private List<ScanResult> mWifiList;

  private List<WifiConfiguration> mWifiConfigurations;

  private WifiLock mWifiLock;

 

  public WifiAdmin(Context context) {

    mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    mWifiInfo = mWifiManager.getConnectionInfo();

  }

    // 打开wifi

    if(!mWifiManager.isWifiEnabled()){

      mWifiManager.setWifiEnabled(true);

    }

    // 关闭wifi

    if(mWifiManager.isWifiEnabled()){

      mWifiManager.setWifiEnabled(false);

    }

    // 锁定wifilock

    if(!mWifiLock.isHeld()) {

      mWifiLock.acquire();

    }

    // 解锁wifiLock

    if(mWifiLock.isHeld()) {

      mWifiLock.unAcquire();

    }

    // 创建一个wifiLock

    mWifiLock = mWifiManager.createWifiLock(“xxx”);

    // 扫描wifi网络

    mWifiManager.startScan();

    mWifiList = mWifiManager.getScanResults();

    // 得到wifi连接

    mWifiConfiguration = mWifiManager.getConfiguredNetworks();

    // 得到MAC地址

    mWifiInfo.getMacAddress();

    // 得到接入点的BSSID

    mWifiInfo.getBSSID();

    // 得到IP地址

    mWifiInfo.getIpAddress();

    // 得到连接的ID

    mWifiInfo.getNetworkId();

    // 得到WifiInfo所有信息

    mWifiInfo.toString();

    // 添加一个网络并连接

    int wifiConfigId = mWifiManager.addNetwork(wifiConfig);

    mWifiManager.enableNetwork(wifiConfigId, true);

    // 断开指定网络

    mWifiManager.disableNetwork(wifiConfigId);

    mWifiManager.disconnect();

}

 

在AndroidManifest.xml文件中授权

<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE”/>

<uses-permission android:name=”android.permission.ACCESS_CHECKIN_PROPERTIES”/>

<uses-permission android:name=”android.permission.WAKE_LOCK”/>

<uses-permission android:name=”android.permission.INTERNET”/>

<uses-permission android:name=”android.permission.CHANGE_WIFI_STATE”/>

<uses-permission android:name=”android.permission.MODIFY_PHONE_STATE”/>

Android网络开发之WIFI的更多相关文章

  1. Android 网络开发之WIFI

    WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...

  2. Android网络开发之用tcpdump抓包

    Android开发过程中,当涉及到网络通信的时候,有一些字段须要抓包获取.我之前由于SSDP设备发现的包头格式没有写对,经过抓包分析和标准包头对照发现了这个困扰我非常久的问题.总之,掌握在Androi ...

  3. Android网络开发之OkHttp--基本用法POST

    1.OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar 2.通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程.主要分为五步: (1).声明并实例化一个OkHttp ...

  4. Android网络开发之OkHttp--基本用法GET

    1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...

  5. Android网络开发之Volley--Volley自定义Request

    1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...

  6. Android网络开发之Volley--Volley基本用法ImageRequest(三)

    1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...

  7. Android网络开发之Volley--Volley基本用法JsonObjectReques(二)

    1.JsonObjectRequest用法 用法和StringRequest基本相同,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置JsonObjectRequest对象 ...

  8. Android网络开发之Volley--Volley基本用法StringRequest(一)

    1.StringRequest用法 主要分为3步: (1).实例化一个RequestQueue对象 (2).设置StringRequest对象参数,并将StringRequest对象加入Request ...

  9. Android网络开发之HttpURLConnection

    http是一个可靠的传输,建立在TCP/IP连接之上,缺省端口是80,其他端口号也可以用.Android可以用HttpURLConnection或HttpClient接口来开发http程序. http ...

随机推荐

  1. Access control configuration prevents your request from being allo

    我发现在在XP环境下我输入网易的220.181.28.42也找不到网页,就跟在LINUX下一样 都揭示: 错误 您所请求的网址(URL)无法获取 --------------------------- ...

  2. 混沌数学之ASin模型

    相关软件:混沌数学之离散点集图形DEMO 相关代码: class ASinEquation : public DiscreteEquation { public: ASinEquation() { m ...

  3. HDU4183 起点到终点再到起点 除起点每点仅经过一次 网络流

    题意: T个测试数据 n个圆 下面 fre x y r 表示圆的频率 坐标和半径 要求: 从频率为400(最小的) 圆 走到频率为789(最大)的圆,再走回来,除起点每个点只能经过一次 问这样的路径是 ...

  4. SVN jsvnadmin 安装与基本使用

    1. jsvnadmin  介绍 https://code.google.com/p/jsvnadmin/ Svn Admin是一个Java开发的管理Svn服务器的项目用户的web应用.安装好Svn服 ...

  5. ListView GridViewColumn.CellTemplate

    <ListView.View> <GridView> <GridViewColumn Header="Meaningful Use Objectives&quo ...

  6. iframe之onload事件小记

    项目上做了一个具有wizard(向导)功能的菜单导航页面,子页面的引入通过主页面上iframe的src属性切换实现.为了有个良好的交互体验,每次更新iframe的src时,主页面上都显示一个模态的lo ...

  7. javascript进行遍历

    javascript进行遍历 <!doctype html> <html lang="en"> <head> <meta charset= ...

  8. 如何监控执行的SQL语句?

    环境: SQL Server 2012. 打开SQL Server Profiler. 在菜单中选择New Trace, 连接上SQL Server. 在弹出的窗口中选择Event selection ...

  9. Immediately-Invoked Puzzler

    The Poplar Puzzle-makers weren’t too impressed. They barely noticed your simple and beautiful array ...

  10. iOS后台播放音乐

    iOS实现在后台播放音乐 iOS4之后就支持后台播放音频了.只需下面两步就可以实现后台播放音频操作了. 1. 在Info.plist中,添加"Required background mode ...