ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

马上:WiFi设置功能模块 (快速实现和分析要点)

2021-12-26 18:00:20  阅读:206  来源: 互联网

标签:WIFI WifiConfiguration WiFi 网络 功能模块 API mWifiManager 要点 config


WiFi设置功能模块 (快速实现和分析要点)

Android 物联网WIFI模块配置,软件上需要连接WIFI网络

1、熟悉系统提供API

由于对WIFI相关功能API不是很了解,参考官方源码 androidxref,下面列简单的必要类

  • WifiManager 顾名思义即WIFI服务管理者或官方描述

    此类提供用于管理 Wi-Fi 连接各个方面的主要 API。…

  • ScanResult 扫描WIFI结果或官方描述有关检测到的接入点的信息。 除了此处描述的属性之外,请求方maxbitrate跟踪quality 、 noise和maxbitrate属性,但目前不会将它们报告给外部客户端。

  • WifiConfiguration 表示已配置的 Wi-Fi 网络的类,包括安全配置。

  • WifiInfo 描述任何处于活动状态或正在设置过程中的 Wifi 连接的状态。

1.1、WifiManager基本API

this.mContext = context.getApplicationContext();
this.mWifiManager = (WifiManager) this.mContext.getSystemService(Context.WIFI_SERVICE);
//openWifi
if (!mWifiManager.isWifiEnabled()) {
  mWifiManager.setWifiEnabled(true);
  return;
}
//closeWifi
if (mWifiManager.isWifiEnabled()) {
    mWifiManager.setWifiEnabled(false);
    return;
}
//获取WIFI状态
mWifiManager.getWifiState()
//获取WIFI的信息
mLastInfo = mWifiManager.getConnectionInfo(); //WifiInfo
//返回为当前前台用户配置的所有网络的列表
final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
//results 最新的接入点扫描结果
final List<ScanResult> results = mWifiManager.getScanResults();
//开启WIFI扫描
boolean ret = mWifiManager.startScan(); 
//忘记网络,netId是WifiInfo的networkId,这里隐藏API需要反射
void forget(int netId, ActionListener listener){...}
//连接网络,,这里隐藏API需要反射
connect(int networkId, ActionListener listener) {...}
//连接网络方式2,这里隐藏API需要反射
connect(WifiConfiguration config, ActionListener listener) {...}
//断开WIFI
mWifiManager.disableNetwork(mLastInfo);
//向已配置的网络集添加新的网络描述。 所提供的配置对象的networkId字段被忽略。
int networkId = mWifiManager.addNetwork(WifiConfiguration);
boolean enableNetwork = mWifiManager.enableNetwork(networkId, true);
//允许关联先前配置的网络。 如果attemptConnect为true,则启动连接到所选网络的尝试。 这可能会导致状态更改事件的异步传递。
//告诉设备保留已配置网络的当前列表。
mWifiManager.saveConfiguration(); //enableNetwork==true



1.2、WifiInfo基本API

WifiInfo connectionInfo = mWifiManager.getConnectionInfo();
//wifi信号强度
connectionInfo.getRssi();
//获取网络ID。每个配置的网络都有一个唯一的小整数 ID,用于在对请求者执行操作时标识网络。 
connectionInfo.getNetworkId();
 getIpAddress() 
 ..

1.3、WifiConfiguration基本API

final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
WifiConfiguration config = new WifiConfiguration();  //链接网络配置信息
//网络的 SSID。 可以是必须用双引号括起来的 ASCII 字符串(例如"MyNetwork" ),也可以是不包括在引号中的十六进制数字字符串(例如01a243f405 )。
config.SSID =  //
//此配置支持的一组密钥管理协议。 有关WifiConfiguration.KeyMgmt的说明,请参阅WifiConfiguration.KeyMgmt 。 默认为 WPA-PSK WPA-EAP。
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); //无
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
//此配置支持的身份验证协议集。 有关WifiConfiguration.AuthAlgorithm的说明,请参阅WifiConfiguration.AuthAlgorithm 。 默认为自动选择。
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
...

1.4、ScanResult

class ScanResult implements Parcelable {
    /**
     * The network name.
     */
    public String SSID;

    /**
     * Ascii encoded SSID. This will replace SSID when we deprecate it. @hide
     */
    public WifiSsid wifiSsid;
  
  ...

2、构建功能API

上面分析基本API,心中已有数

  • 获取WIFI管理器,订阅相关事件广播
  • 扫描附近WIFI网络
  • 连接某一个WIFI网络并保存
  • 取消保存,断开连接WIFI网络

AndroidWifi

标签:WIFI,WifiConfiguration,WiFi,网络,功能模块,API,mWifiManager,要点,config
来源: https://blog.csdn.net/CSDNno/article/details/122158259

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有