最近在学习Android WiFi framework的相关知识,这里总结以下。WiFi framework的内容大致可以分为以下几个模块:
1. WiFi相关内容
2.WiFi P2P相关内容
3.Hotspot相关内容
4.WiFi Display相关内容
后面就将从这四个方面一一介绍。
WiFi service的启动流程
Wifiservice的启动地方在system server中,code路径在:framwork/base/service/java/com/android/server/SystemServer.java
try{
Slog.i(TAG,"Wi-Fi P2pService");
wifiP2p=newWifiP2pService(context);
ServiceManager.addService(Context.WIFI_P2P_SERVICE, wifiP2p);
}catch(Throwable e){
reportWtf("starting Wi-Fi P2pService", e);
}
try{
Slog.i(TAG,"Wi-Fi Service");
wifi=newWifiService(context);
ServiceManager.addService(Context.WIFI_SERVICE, wifi);
}catch(Throwable e){
reportWtf("starting Wi-Fi Service", e);
}
try{
Slog.i(TAG,"Connectivity Service");
connectivity=newConnectivityService(
context, networkManagement, networkStats, networkPolicy);
ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity);
networkStats.bindConnectivityManager(connectivity);
networkPolicy.bindConnectivityManager(connectivity);
wifi.checkAndStartWifi();
wifiP2p.connectivityServiceReady();
}catch(Throwable e){
reportWtf("starting Connectivity Service", e);
}
这里我们可以看到在system server中,先构造了WifiP2pService 和WifiService,并将它们注册在ServiceManager当中,然后调用WifiService的checkAndStartWifi函数。那首先我们进入Wifiservice的构造函数当中,code路径在:framwork/base/service/java/com/android/server/wifi/WifiService.java,代码如下:
WifiService(Context context){
mContext= context;
mInterfaceName= SystemProperties.get("wifi.interface