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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值