WEB开发网
开发学院手机开发Android 开发 Android 移植 wifi 设计原理 阅读

Android 移植 wifi 设计原理

 2010-02-24 05:10:00 来源:WEB开发网   
核心提示:}当 wpa_supplicant 处理完 SCAN 命令后,它会向控制通道发送事件通知扫描完成,从而wifi_wait_for_event 函数会接收到该事件,由此 WifiMonitor 中的 MonitorThread 会被执行来出来这个事件,void handleEvent(int event, String

}

当 wpa_supplicant 处理完 SCAN 命令后,它会向控制通道发送事件通知扫描完成,从而

wifi_wait_for_event 函数会接收到该事件,由此 WifiMonitor 中的 MonitorThread 会被执行来

出来这个事件,

void handleEvent(int event, String remainder) {

case SCAN_RESULTS:

mWifiStateTracker.notifyScanResultsAvailable();

break;

WifiStateTracker 则接着广播发送 SCAN_RESULTS_AVAILABLE_ACTION 这个 Intent

case EVENT_SCAN_RESULTS_AVAILABLE:

mContext.sendBroadcast(new

Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

WifiLayer 注册了接收 SCAN_RESULTS_AVAILABLE_ACTION 这个 Intent,所以它的相关

处理函数 handleScanResultsAvailable 会被调用,在该函数中,先会去拿到 SCAN 的结果(最

终是往 wpa_supplicant 发送 SCAN_RESULT 命令并读取返回值来实现的) ,

List list = mWifiManager.getScanResults();

对每一个扫描返回的 AP,WifiLayer 会调用 WifiSettings 的 onAccessPointSetChanged 函数,

从而最终把该 AP 加到 GUI 显示列表中。

public void onAccessPointSetChanged(AccessPointState ap, boolean added) {

AccessPointPreference pref = mAps.get(ap);

if (added) {

if (pref == null) {

pref = new AccessPointPreference(this, ap);

mAps.put(ap, pref);

} else {

pref.setEnabled(true);

}

mApCategory.addPreference(pref);

}

}

3. 配置 AP 参数

当用户在 WifiSettings 界面上选择了一个 AP 后,会显示配置 AP 参数的一个对话框,

public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference

preference) {

if (preference instanceof AccessPointPreference) {

AccessPointState state = ((AccessPointPreference)

preference).getAccessPointState();

showAccessPointDialog(state, AccessPointDialog.MODE_INFO);

上一页  1 2 3 4 5  下一页

Tags:Android 移植 wifi

编辑录入:coldstar [复制链接] [打 印]
赞助商链接