首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android Wifi模块分析(3)

2012-09-10 
Android Wifi模块分析(三)/data/misc/wifi/wpa_supplicant.conf),再通过WifiStateTracker 来启动WifiMon

Android Wifi模块分析(三)
"/data/misc/wifi/wpa_supplicant.conf"),再通过WifiStateTracker 来启动WifiMonitor 中的监视
线程。

private boolean setWifiEnabledBlocking(boolean enable) {
??? final int eventualWifiState = enable ? WIFI_STATE_ENABLED :WIFI_STATE_DISABLED;
??? updateWifiState(enable ? WIFI_STATE_ENABLING : WIFI_STATE_DISABLING);
??? if (enable) {
??????????? if (!WifiNative.loadDriver()) {
????????????????? Log.e(TAG, "Failed to load Wi-Fi driver.");
????????????????? updateWifiState(WIFI_STATE_UNKNOWN);
????????????????? return false;
??????????? }
??? if (!WifiNative.startSupplicant()) {
?????????? WifiNative.unloadDriver();
?????????? Log.e(TAG, "Failed to start supplicant daemon.");
??????? ?? updateWifiState(WIFI_STATE_UNKNOWN);
????? ? ?? return false;
???? }
???? mWifiStateTracker.startEventLoop();
}
???? // Success!
???? persistWifiEnabled(enable);
???? updateWifiState(eventualWifiState);
???? return true;
}

当使能成功后,会广播发送WIFI_STATE_CHANGED_ACTION 这个Intent 通知外界WIFI
已经成功使能了。WifiEnabler 创建的时候就会向Android 注册接收
WIFI_STATE_CHANGED_ACTION,因此它会收到该Intent,从而开始扫描。

private void handleWifiStateChanged(int wifiState) {
if (wifiState == WIFI_STATE_ENABLED) {
loadConfiguredAccessPoints();
attemptScan();
}

具体流程如下流程图所示:
Android Wifi模块分析(3)
Android Wifi模块分析(3)

?

热点排行