zoukankan      html  css  js  c++  java
  • wifi

    1    关于wifi的操作主要包括以下几个类和接口:

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

    1.2      wifiConfiguration:wifi网络的配置,包括安全配置等

    1.3      wifiInfo:wifi无线连接的描述,包括接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,mac地址,网络ID,信号强度等信息。

    1.4      wifiManager:提供了管理wifi连接的大部分API,它主要包括如下内容:

    a)已经配置好的网络的清单。这个清单可以查看和修改,而且可以修改个别记录的属性
    b)        当连接中有活动的wi-fi网络时,可以建立或者关闭这个连接,并且可以查询有关网络的状态的动态信息。
    c)对接入点的扫描结果包含足够的信息来决定需要与什么接入点建立连接。
    d)        还定义了许多常量来表示wi-fi状态的改变。

    1.5      wifiManager.WifiLock:允许程序一直使用wifi无线网络,使其一直保持连接

    2. 代码例子:

    2.1  TestWiFi:

      1 import java.util.List;
    2 import android.content.Context;
    3 import android.net.wifi.ScanResult;
    4 import android.net.wifi.WifiConfiguration;
    5 import android.net.wifi.WifiInfo;
    6 import android.net.wifi.WifiManager;
    7 import android.net.wifi.WifiManager.WifiLock;
    8
    9 public class TestWiFi
    10 {
    11 // 定义WifiManager对象
    12 private WifiManager mWifiManager;
    13
    14 // 定义WifiInfo对象
    15 private WifiInfo mWifiInfo;
    16
    17 // 扫描出的网络连接列表
    18 private List<ScanResult> mWifiList;
    19
    20 // 网络连接列表
    21 private List<WifiConfiguration> mWifiConfigurations;
    22
    23 // wifiLock锁
    24 WifiLock mWifiLock;
    25
    26 public TestWiFi(Context context)
    27 {
    28 // 取得WifiManager对象
    29 mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    30 // 取得WifiInfo对象
    31 mWifiInfo = mWifiManager.getConnectionInfo();
    32 }
    33
    34 /**
    35 * 打开wifi
    36 *
    37 * @see [类、类#方法、类#成员]
    38 */
    39 public void openWifi()
    40 {
    41 if (!mWifiManager.isWifiEnabled())
    42 {
    43 mWifiManager.setWifiEnabled(true);
    44 }
    45 }
    46
    47 /**
    48 * 关闭wifi
    49 *
    50 * @see [类、类#方法、类#成员]
    51 */
    52 public void closeWifi()
    53 {
    54 if (mWifiManager.isWifiEnabled())
    55 {
    56 mWifiManager.setWifiEnabled(false);
    57 }
    58 }
    59
    60 /**
    61 * 锁定wifi
    62 *
    63 * @see [类、类#方法、类#成员]
    64 */
    65 public void acquireWifiLock()
    66 {
    67 mWifiLock.acquire();
    68 }
    69
    70 /**
    71 * 解锁wif
    72 *
    73 * @see [类、类#方法、类#成员]
    74 */
    75 public void releaseWifiLock()
    76 {
    77 // 解锁前锁定
    78 if (mWifiLock.isHeld())
    79 {
    80 mWifiLock.acquire();
    81 }
    82 }
    83
    84 /**
    85 * 创建一个wifiLock
    86 *
    87 * @see [类、类#方法、类#成员]
    88 */
    89 public void creatWifiLock()
    90 {
    91 mWifiLock = mWifiManager.createWifiLock("Test");
    92 }
    93
    94 /**
    95 * 得到配置好的网络
    96 *
    97 * @return
    98 * @see [类、类#方法、类#成员]
    99 */
    100 public List<WifiConfiguration> getConfiguration()
    101 {
    102 return mWifiConfigurations;
    103 }
    104
    105 /**
    106 * 指定配置好的网络进行连接
    107 *
    108 * @param index
    109 * @see [类、类#方法、类#成员]
    110 */
    111 public void conectConfiguration(int index)
    112 {
    113 // 索引大于配置好的网络索引
    114 if (index > mWifiConfigurations.size())
    115 {
    116 return;
    117 }
    118 // 连接配置好的指定ID的网络
    119 mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId, true);
    120 }
    121
    122 /**
    123 * 开始扫描
    124 *
    125 * @see [类、类#方法、类#成员]
    126 */
    127 public void startScan()
    128 {
    129 mWifiManager.startScan();
    130 // 得到扫描结果
    131 mWifiList = mWifiManager.getScanResults();
    132 // 得到配置好的网络连接
    133 mWifiConfigurations = mWifiManager.getConfiguredNetworks();
    134 }
    135
    136 /**
    137 * 得到网络列表
    138 *
    139 * @return
    140 * @see [类、类#方法、类#成员]
    141 */
    142 public List<ScanResult> getwifiList()
    143 {
    144 return mWifiList;
    145 }
    146
    147 /**
    148 * 查看扫描结果
    149 *
    150 * @return
    151 * @see [类、类#方法、类#成员]
    152 */
    153 public StringBuilder lookUpScan()
    154 {
    155 StringBuilder stringBuilder = new StringBuilder();
    156 for (int i = 0; i < mWifiList.size(); i++)
    157 {
    158 stringBuilder.append("Index " + new Integer(i + 1).toString() + ":");
    159 // 将ScanResult信息转换成一个字符串
    160 // 其中包括BSSID,SSID,capabilities,frequency和level
    161 stringBuilder.append((mWifiList.get(i)).toString());
    162 stringBuilder.append("\n");
    163 }
    164 return stringBuilder;
    165 }
    166
    167 /**
    168 * 得到Mac地址
    169 *
    170 * @return
    171 * @see [类、类#方法、类#成员]
    172 */
    173 public String getMacAdrress()
    174 {
    175 return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
    176 }
    177
    178 /**
    179 * 得到接入点的BSSID
    180 *
    181 * @return
    182 * @see [类、类#方法、类#成员]
    183 */
    184 public String getBSSID()
    185 {
    186 return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
    187 }
    188
    189 /**
    190 * 得到IP地址
    191 *
    192 * @return
    193 * @see [类、类#方法、类#成员]
    194 */
    195 public int getIPAddress()
    196 {
    197 return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
    198
    199 }
    200
    201 /**
    202 * 得到连接的ID
    203 *
    204 * @return
    205 * @see [类、类#方法、类#成员]
    206 */
    207 public int getNetWorkId()
    208 {
    209 return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
    210 }
    211
    212 /**
    213 * 得到wifiInfo的所有信息包
    214 *
    215 * @return
    216 * @see [类、类#方法、类#成员]
    217 */
    218 public String getWifiInfo()
    219 {
    220 return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
    221 }
    222
    223 /**
    224 * 添加一个网络并连接
    225 *
    226 * @see [类、类#方法、类#成员]
    227 */
    228 public void addNetwork(WifiConfiguration wcg)
    229 {
    230 int wcgID = mWifiManager.addNetwork(wcg);
    231 mWifiManager.enableNetwork(wcgID, true);
    232 }
    233
    234 /**
    235 * 断开指定的ID的网络
    236 */
    237 public void disconnectWifi(int netId)
    238 {
    239 mWifiManager.disableNetwork(netId);
    240 mWifiManager.disconnect();
    241 }
    242 }

    2.2使用wifi网络连接,需要在AndroidManifest.xml中加入对应的权限:

    1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    2 <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>
    3 <uses-permission android:name="android.permission.WAKE_LOCK"/>
    4 <uses-permission android:name="android.permission.INTERNET"/>
    5 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    6 <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>




  • 相关阅读:
    对计算机科学与技术专业的认识及未来的规划
    秋季学期学习总结
    自我介绍
    Leetcode每日一题 83. 删除排序链表中的重复元素
    Leetcode每日一题 82. 删除排序链表中的重复元素 II
    Leetcode每日一题 456.132 模式
    Leetcode每日一题 341. 扁平化嵌套列表迭代器
    Leetcode每日一题 191. 位1的个数
    Leetcode每日一题 73. 矩阵置零
    Leetcode每日一题 150. 逆波兰表达式求值
  • 原文地址:https://www.cnblogs.com/jh5240/p/2229327.html
Copyright © 2011-2022 走看看