android中wifi原理及流程分析 很经典

本文详细解析了Android系统中WiFi模块的初始化过程,包括ConnectivityService的启动、WifiService与WifiMonitor的角色,以及如何通过WifiEnabler启用WiFi。在启用过程中涉及加载WIFI内核模块、启动wpa_supplicant等关键步骤。此外,文章还概述了用户界面与WiFi设置的交互流程。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

wifi相关的文件位置:

WIFISettings应用程序位于

      packages/apps/Settings/src/com/android/settings/wifi/

JAVA部分:

       frameworks/base/services/java/com/android/server/

       frameworks/base/wifi/java/android/net/wifi/

JNI部分:

      frameworks/base/core/jni/android_net_wifi_Wifi.cpp

wifi管理库。

       hardware/libhardware_legary/wifi/

 wifi用户空间的程序和库:

       external/wpa_supplicant/

      生成库libwpaclient.so和守护进程wpa_supplicant。

调用流程:

wifi模块的初始化:

(frameworks/base/services/java/com/android/server/SystemServer.Java)

在 SystemServer 启动的时候,会生成一个ConnectivityService 的实例,

classServerThreadextends Thread {

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
           try {

               Slog.i(TAG,"Connectivity Service");

               connectivity= ConnectivityService.getInstance(context);

               ServiceManager.addService(Context.CONNECTIVITY_SERVICE,connectivity);

           } catch(Throwable e) {

               Slog.e(TAG,"Failure starting Connectivity Service", e);

           }

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

}

其中,ConnectivityService.getInstance(context); 对应于(frameworks/base/services/java/com/android/server/ ConnectivityService.JavaConnectivityService.Java。

下面看下ConnectivityService.Java中的  

 publicstatic ConnectivityServicegetInstance(Context context) {

       return ConnectivityThread.getServiceInstance(context);

   }函数,继续往下看:

       publicstatic ConnectivityService getServiceInstance(Context context) {

           ConnectivityThreadthread = newConnectivityThread(context);

           thread.start();

           synchronized(thread) {

               while(sServiceInstance == null) {

                   try {

                       // Wait until sServiceInstance has beeninitialized.

                       thread.wait();

                   } catch (InterruptedExceptionignore) {

                       Slog.e(TAG,

                           "UnexpectedInterruptedException while waiting"+

                           " forConnectivityService thread");

                   }

               }

           }

           return sServiceInstance;

       }

   }

继续往下跟:

privatest

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值