其他分享
首页 > 其他分享> > 马上:WiFi设置功能模块 (快速实现和分析要点)

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

作者:互联网

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

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

1、熟悉系统提供API

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

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,心中已有数

AndroidWifi

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