Android: Android Wifi System
来源:互联网 发布:手机游戏网络修改器 编辑:程序博客网 时间:2024/05/18 03:11
Wifi System:
Java应用层
Java Framework层
JNI层
适配器层
wpa_supplicant程序
Kernel层
Java应用层
-- Settings, WifiSwitcher等应用
--> /system/app
Java Framework层
-- frameworks/base/wifi/java/android/net/wifi/* (android.net.wifi)
-- frameworks/base/services/java/com/android/server/WifiService.java
frameworks/base/services/java/com/android/server/WifiWatchdogService.java
--> /system/framework/framework.jar
/system/framework/services.jar
JNI层
-- frameworks/base/core/jni/android_net_wifi_Wifi.cpp
--> /system/lib/libandroid_runtime.so
适配器层
-- hardware/libhardware_legacy/wifi/wifi.c
--> /system/lib/libhardware_legacy.so
wpa_supplicant程序
-- external/wpa_supplicant
-- external/wpa_supplicant_6
--> /system/bin/wpa_supplicant
/system/lib/libwpa_client.so
Kernel层
-- kernel wifi driver
Enable Wifi 的过程:
Settings/WifiEnabler.java
mWifiManager.setWifiEnabled(enable);
-->
frameworks/base/wifi/java/android/net/wifi/WifiManager.java
public boolean setWifiEnabled(boolean enabled) {
mService.setWifiEnabled(enabled);
}
-->
frameworks/base/services/java/com/android/server/WifiService.java
public boolean setWifiEnabled(boolean enable) {
sendEnableMessage(enable, true, Binder.getCallingUid());
}
->
setWifiEnabledBlocking() {
if (enable) {
mWifiStateTracker.loadDriver();
mWifiStateTracker.startSupplicant();
} else {
mWifiStateTracker.stopSupplicant();
mWifiStateTracker.unloadDriver();
}
}
-->
frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java
public synchronized boolean loadDriver() {
return WifiNative.loadDriver();
}
public synchronized boolean startSupplicant() {
return WifiNative.startSupplicant();
}
-->
frameworks/base/wifi/java/android/net/wifi/WifiNative.java
public native static boolean loadDriver();
public native static boolean startSupplicant();
-->
frameworks/base/core/jni/android_net_wifi_Wifi.cpp
static jboolean android_net_wifi_loadDriver(JNIEnv* env, jobject clazz)
{
return (jboolean)(::wifi_load_driver() == 0);
}
static jboolean android_net_wifi_startSupplicant(JNIEnv* env, jobject clazz)
{
return (jboolean)(::wifi_start_supplicant() == 0);
}
-->
hardware/libhardware_legacy/wifi/wifi.c
int wifi_load_driver(){
//for build in driver, do nothing
//for .ko driver, insmod/load firmware...
}
int wifi_start_supplicant(){
property_set("ctl.start", "wpa_supplicant");
}
-->
/init.rc
service wpa_supplicant /system/bin/wpa_supplicant ...
- Android: Android Wifi System
- Android wifi
- Android WIFI
- Android Wifi
- Android WIFI
- Android wifi
- android wifi
- Android Wifi
- android wifi
- Android Wifi
- android wifi
- android wifi
- android wifi
- android wifi
- android wifi
- Android wifi
- Android WiFi
- Android Wifi
- LVDS与TMDS的比较
- sizeof深入理解
- 内部类(转载)
- Java读取网络数据(新浪网址)InputStream的数据流操作实录笔记(一) 分享出来供大家参考!
- WPF RoutedEvent and Command Sample
- Android: Android Wifi System
- 链表
- java应用程序利用Exe4j打包exe文件
- Hard link, symbolic link
- 关于在前台页面插入C#代码的问题,导致页面不完全显示
- ASP.net中"名称以无效字符开头"问题解决?(转自:http://zhfen.cnblogs.com/archive/2006/05/25/358555.html)
- ListFiles
- freemarker 字符串函数
- MC/ServiceGuard中文件is busy,挂不上去