[RK3288][Android6.0] WiFi之与ConnectivityService的交互

本文主要探讨了在Rockchip平台、Android 6.0系统和3.10.92内核环境下,WiFi模块如何通过setNetworkDetailedState()函数与ConnectivityService进行交互,以更新系统中网络状态。该函数在WiFi连接状态变化时调用,确保系统在多个网络间正确切换。当WiFi断开时,一系列处理流程包括handleNetworkDisconnect、DetailedState.DISCONNECTED的设置,以及ConnectivityService的NetworkStateTrackerHandler对消息的处理,完成网络信息的更新和断开操作。
摘要由CSDN通过智能技术生成

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

在Wifi的整个过程中,有个函数一直会被调用到: setNetworkDetailedState(),它是用来和系统的ConnectivityService关联的,作用是为了告知系统当前wifi的状态,因为系统里存在多个网络,如有线网,数据上网等,像平常我们使用PC的时候,当有线网和wifi同时连着的时候,会优先选择wifi,Android系统的机制也是类似的。
因此wifi子模块通过setNetworkDetailedState()来告知系统当前连接状态以决定是否需要切换网络,而且同一时间只能有一个网络工作。

当断开wifi时,会调用
handleNetworkDisconnect -> setNetworkDetailedState(DetailedState.DISCONNECTED)
这时参数是DetailedState.DISCONNECTED

WifiStateMachine.java

private boolean setNetworkDetailedState(NetworkInfo.DetailedState state) 
{
    //新旧状态不一致时,要重新设置
    if (state != mNetworkInfo.getDetailedState()) {
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值