Android下拉框WIFI图标更新

Posted dfqin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android下拉框WIFI图标更新相关的知识,希望对你有一定的参考价值。

        下拉框里面WIFI组件的定义为WifiTitle(frameworks/base/packages/SystemUI),图标定义在WifiIcons里面,以太网和手机网络图标定义为EthernetIcons和TelephonyIcons。而图标的更新逻辑放在类SignalController里面:

        通过上面的代码可以看到,主要是根据是当前网类型的状态(mCurrentState)否连接上网络(并不代表此网络可以上网),是否开启此网络类型(例如WIFI开关)确定显示的图标。而SignalController是个基类,它有三个子类分别为:EthernetSignalController、WifiSignalController和MobileSignalController,除了MobileSignalController覆盖了函数getQsCurrentIconId(),其他两个类都使用了基类的实现。

        关于WIFI的实现,我们可以看到在mCurrentState.connected为true的情况下,又要区分

mCurrentState.inetCondition是否为true来显示不同的图标。在android10上面inetCondition为false时的图标为,而在后面的版本改为了,这个值的含义可以理解为当前的网络的数据传输类型是不是本类型(以太网、WIFI、蜂窝)。inetCondition的赋值是在updateConnectivity()函数中实现的,通过代码可以得知只要服务端(ConnectivityService)返回的当前网络类型等于以太网或WIFI,此类型的inetCondition就为true,但是蜂窝网络不一样,返回类型类型如果不对,但是当前状态不是默认时也会赋值为true(不为默认的含义?)。

SignalController

MobileSignalController

图标更新的流程大致为有三种(1、切换用户;2、收到广播: ConnectivityManager.CONNECTIVITY_ACTION, ConnectivityManager.INET_CONDITION_ACTION;ConnectivityService的 )情况触发调用NetworkControllerImpl.updateConnectivity(),函数updateConnectivity()主要工作是用ConnectivityService获取到当前的数据传输方式。

 

上面获取到数据传输方式后会分别掉以太网、蜂窝网和WIFI的更新,这里调用后就会走到我们上面赋值inetCondition的函数。

以上是关于Android下拉框WIFI图标更新的主要内容,如果未能解决你的问题,请参考以下文章

android 多级下拉菜单实现教程 NiceSpinner 文字展示不全 NiceSpinner demo NiceSpinner加图标 可以在下拉框的选项(item)中加图片:

android 多级下拉菜单实现教程 NiceSpinner 文字展示不全 NiceSpinner demo NiceSpinner加图标 可以在下拉框的选项(item)中加图片:

Android自动连接指定的wifi,免密码或指定密码

android 5.1 WIFI图标上的感叹号及其解决办法

Android微调器下拉图标不显示

Android 下拉列表框文本框菜单