Android 7.0 WifiMonitor工作流程分析
来源:互联网 发布:怎么看淘宝卖家类目 编辑:程序博客网 时间:2024/05/22 03:43
在wifi启动扫描的分析过程中,出现了多次WifiMonitor的操作,在此分析一下这个函数是如何工作的。
在Android的Wifi体系中,WifiMonitor承担着分发来自wpa_supplicant底层事件的任务。当上层下达Wifi的扫描、连接等指令后, 底层驱动以及wpa_s进行实际的扫描、连接操作,操作完成后会向上层反馈一个event,通知framework扫描是否结束、连接是否成功。
1.WifiMonitor的初始化
在WifiStateMachine的构造函数中获取WifiMonitor的实例,并且在WifiStateMachine的构造函数中注册了一系列的handler。
从启动扫描流程中可知,在启动过程中会调用startMonitoring(),开始监听从底层上报的消息。
2.startMonitoring()
为了监听wpa_supplicant的事件,需要先建立与wpa_s的消息通道,这一步调用WifiNative.connectToSupplicant()实现。
如果是第一次进行监听mConnected为false,进入else分支。先建立与wpa_s的消息通道,建立成功后会向WifiStateMachine发送SUP_CONNECTION_EVENT消息,通知Wifi状态机。随后,开启事件监听线程:new MonitorThread(mWifiNative, this).start():
这里我们假设事先下发的是一个wifi扫描的指令,wpa_s反馈event通知wifi扫描的结果,根据实现的一些匹配规则,最后进入handleEvent()函数,此处event是SCAN_RESULTS,向WifiStateMachine发送SCAN_RESULTS_EVENT消息,告知它扫描已经结束,可以去读取扫描结果了。这样,处理流程就用返回到Wifi状态机中。WifiStateMachine收到此消息后,调用WifiStateMachine::setScanResults()方法从wpa_s读取扫描结果,并向外界发送WifiManager.SCAN_RESULTS_AVAILABLE_ACTION广播通知应用。此时一些注册过该广播的应用,例如手机中的Setting app,就能通过调用WifiManager::getScanResults()读取扫描结果了。至此,一个简单的WifiMonitor分发事件的流程结束,其他类型事件的分发跟此过程相似。
至此,一个简单的上层流程分析结束了。
1 0
- Android 7.0 WifiMonitor工作流程分析
- Android Wi-Fi WifiMonitor分析(Android 7.0)
- Android -- WifiMonitor分析
- Android -- WifiMonitor分析
- android wifi之WifiMonitor
- android wifi之WifiMonitor
- android wifi之WifiMonitor
- Android vold 工作流程分析
- [Android] ButterKnifeProcessor 工作流程分析
- Android 7.0 Vold工作流程
- Android wifi-framework WifiMonitor和WifiNative学习
- haproxy工作流程分析
- surfaceflinger 工作流程分析
- Zygote工作流程分析
- surfaceflinger 工作流程分析
- hadoop工作流程分析
- 分析Netty工作流程
- uboot工作流程分析
- Android中JNI 的一些常用说明 JNI_OnLoad registerNatives registerNativeMethods
- Java对象在内存图示
- storm问题排查
- 用photoshop制作电子版签名图片
- 写jbpm4.4执行完成最后一个任务遇到如下问题。
- Android 7.0 WifiMonitor工作流程分析
- linux下用户名信息
- static
- 设计原则【目录】
- 自定义view加之
- 免费游戏资源推荐
- Linux OpenSSH后门的添加与防范
- 最简单的圆角列表,圆角看起来还是好看
- 管理系统UI之一:淡化System Bar(Dimming the System Bars)