wifi热点核心流程
来源:互联网 发布:linux驱动开发培训 编辑:程序博客网 时间:2024/05/18 12:03
wifi热点核心流程
首先配置wifi热点:网络SSID(wifi热点的名字)、安全性(三种方式:OPEN、WPA PSK和WPA2 PSK)与密码
private WifiConfiguration mWifiConfig = null;
mWifiConfig = mWifiManager.getWifiApConfiguration();
public WifiConfiguration getConfig() {
WifiConfiguration config = new WifiConfiguration();/**
* TODO: SSID in WifiConfiguration for soft ap
* is being stored as a raw string without quotes.
* This is not the case on the client side. We need to
* make things consistent and clean it up
*/
config.SSID = mSsid.getText().toString();
switch (mSecurityTypeIndex) {
case OPEN_INDEX:config.allowedKeyManagement.set(KeyMgmt.NONE);
return config;
case WPA_INDEX:config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
if (mPassword.length() != 0) {
String password = mPassword.getText().toString();
config.preSharedKey = password;
}
return config;
case WPA2_INDEX:
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
if (mPassword.length() != 0) {
String password = mPassword.getText().toString();
config.preSharedKey = password;
}
return config;
}
return null;
}
wifi热点生效的前提必须要调用frameworks中的WifiManager类中的setWifiApEnabled方法,该方法接着调用frameworks层服务的WifiService.java类的setWifiApEnabled(wifiConfig, enabled),具体方法内容在下面。
mWifiConfig = getConfig();
if (mWifiConfig != null) {
/**
* if soft AP is stopped, bring up
* else restart with new config
* TODO: update config on a running access point when framework support is * added
*/
if (mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED) {
mWifiManager.setWifiApEnabled(null, false);
mWifiManager.setWifiApEnabled(mWifiConfig, true);
} else {
mWifiManager.setWifiApConfiguration(mWifiConfig);
}
}
WifiService.java类的setWifiApEnabled方法:
public void setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled) {
enforceChangePermission();
// null wifiConfig is a meaningful input for CMD_SET_AP
if (wifiConfig == null || wifiConfig.isValid()) {
mWifiController.obtainMessage(CMD_SET_AP, enabled ? 1 : 0, 0, wifiConfig).sendToTarget();
} else {
Slog.e(TAG, "Invalid WifiConfiguration");
}
if(enabled)
{
SystemProperties.set("persist.wifiAP.state", "true");
}
else
{
SystemProperties.set("persist.wifiAP.state", "false");
}
SystemProperties.getBoolean("persist.wifiAP.state", false);
}
0 0
- wifi热点核心流程
- [android]WIFI热点启动流程分析
- [android]WIFI热点启动流程分析
- WIFI热点
- Android -- Wifi热点的打开与关闭流程简介
- Android -- Wifi热点的打开与关闭流程简介
- Android -- Wifi热点的打开与关闭流程简介
- 基于rk3288平台android5.1系统的wifi流程分析 ---- 打开wifi,扫描热点
- Win7开启wifi热点
- 笔记本设置wifi热点
- win7 创建wifi热点。
- 扫描wifi热点
- Win7创建wifi热点
- win7建立wifi热点
- Win7建立WIfi热点
- WIN7建立wifi热点
- win7自建wifi热点
- Wifi热点共享
- 在NVIDIA Tegra K1 ARM平台进行本地应用编译
- wps不想让读个文档显示为多个标签页,而是打开多个窗口,方便多个文档的比对工作?
- 莲舫是谁?
- ELF文件加载和链接
- 银雀斯汀:something interesting
- wifi热点核心流程
- [netty核心类]--缓冲区ByteBuf
- xcode7&8之后,xcodebuild使用exportOptionsPlist参数导出ipa
- 常用免费第三方API
- 第十五周项目1—验证算法(哈希表)
- http://www.cnblogs.com/boker/archive/2016/07/26/5707230.html
- Unity ShaderLab 光照随笔
- PHP面向对象操作数据库
- 第十六周项目二大数据集上排序算法性能的体验