梳理Android_WIFI_MBB(Make Befor Break)
触发MBB流程 和 解除MBB流程
目录
一、触发MBB(Make Befor Break)
硬件要求:
①设备是否支持至少两个并发的客户端模式管理器(STA + STA 并发)
②是否使能了mbb 的wifi切换
1、在连接一个接口为wlan0的wifi使用的过程中,wifi会不时的自我检查,在某个时间段遇到以下条件之一时,则会考虑触发MBB行为:
①当前连接的网络是OEM付费/专用网络(只对系统应用可用)
②当前连接的wifi没有互联网接入或预计没有互联网
③当前连接的网络链路质量不足,且流量低。(RSSI强度不足 && Tx或Rx流量低)
伴随Log:wlan0: Current connected network is not sufficient.
代码定位:WifiNetworkSelector.java -> isNetworkSufficient(WifiInfo wifiInfo)
2、程序过滤找出除了当前连接的AP,其他已保存最佳候选candidate网络AP。往下会走以下三个method的其中一个。
在触发连接candidate网络之前,先检查一下当前是否有已连接网路。
如果有,则会执行triggerConnectWhenConnected()方法去触发MBB。
如果没有的话,则会执行triggerConnectWhenDisconnected()方法进行单个AP连接。
Method:
①triggerConnectWhenDisconnected() //正常情况下当前没有网络连接时走该方法。
②triggerConnectWhenConnected() //触发MBB执行该方法===============
③triggerRoamWhenConnected()
3、发送CMD_REQUEST_ADDITIONAL_CLIENT_MODE_MANAGER消息,创建新的ClientModeManager,设置新的candidate网络的Role为ROLE_CLIENT_SECONDARY_TRANSIENT。随后去连接该新的网络。
伴随log:
Starting