zoukankan      html  css  js  c++  java
  • Android网络开发之WIFI

    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”/>

  • 相关阅读:
    程序格式
    java数据类型
    java-helloworld
    原生字符串
    字符串常见操作19个操作
    字符串函数操作
    【字符串切片操作和range函数用法】
    【字符串拼接之两种方法】
    C#中ref和out的区别使用
    c语言内部函数、外部函数多文件编译总结(vs2015编译环境)
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3186342.html
Copyright © 2011-2022 走看看