Android可以支持:移动数据网络、WIFI、蓝牙、网线等,这些连接本身都可以独立使用,连接管理通过一个评分机制来实现不同接入方式的选择。具体来说就是,每一种上网方式在初始化时,都向ConnectivityService标明自己网络的分值(比如数据连接50,WIFI60,蓝牙69,网线70),当有更高分数的网络就绪时,就将当前分值低的连接断开。而当当前网络被断开时,就寻找当前就绪的其他网络连接,选取分值高的进行接入。并且,每一个网络接入时,都会进行有效性检测,如果检测不通过,将会被扣掉一定分数,此时该网络的优先级也会相应的下降。以下是Ethernet和Wifi连接管理评分的更新流程。【1】frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.javaprivate static final int NETWORK_SCORE = 70;//以太网
【2】frameworks/base/core/java/android/net/NetworkAgent.javapublic static final int WIFI_BASE_SCORE = 60;
【3】packages/apps/Bluetooth/src/com/android/bluetooth/pan/BluetoothTetheringNetworkFactory.javaprivate static final int NETWORK_SCORE = 69;//蓝牙
【4】frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.javaprivate final static int TELEPHONY_NETWORK_SCORE = 50;//移动数据public TelephonyNetworkFactory(){setScoreFilter(TELEPHONY_NETWORK_SCORE);}1.Ethernet的连接评分
<1>.frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.javapublic void updateAgent() { private static final int NETWORK_SCORE = 70;//以太网的初始评分,分数越高,优先连接// never set the network score below 0.mNetworkAgent.sendNetworkScore(mLinkUp? NETWORK_SCORE : 0); }<2>.Wifi的连接评分
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiScoreReport.javapublic static WifiScoreReport calculateScore(){public static final int WIFI_BASE_SCORE = 60;//Wifi的初始评分networkAgent.sendNetworkScore(score);}2.frameworks/base/core/java/android/net/NetworkAgent.javapublic void sendNetworkScore(int score) { queueOrSendMessage(EVENT_NETWORK_SCORE_CHANGED, new Integer(score));}3.frameworks/base/services/core/java/com/android/server/ConnectivityService.java<1>.case NetworkAgent.EVENT_NETWORK_SCORE_CHANGED: { updateNetworkScore(nai, score.intValue());}<2>.private void updateNetworkScore(NetworkAgentInfo nai, int score) {final int oldScore = nai.getCurrentScore(); log("OldScore = " + OldScore + " newScore = " + String.valueOf(score) ); }

Android连接管理的评分机制(WIFI,Ethernet,BT,移动数据相关推荐

  1. android 账号同步功能吗,android账号管理与同步机制

    android账号管理在手机设置的其他账户中可以找到,打开后,发现这里有许多有趣的功能,比如微信的同步通讯录.天翼云账户的一键跳转修改账户密码等,接下来,我们来讲讲他的实现思路 实验原理 效果图 几个 ...

  2. android之网络状态判断(wifi和移动网络数据)

    有时候需要监听网络的状态变化来及时提醒用户网络状况,因此我们得多各种网络变化进行监听,废话不多说,将网络各种情况都在代码中列出来了,有需求的可以根据实际情况进行提示. 1.首先需要进行广播的监听,网络 ...

  3. 苹果手机进和平精英显示无法连接到服务器,和平精英WIFI登录不了 数据流量可以进入原因解答...

    和平精英许多玩家使用无线网,也就是WIFI的时候,为什么会出现无法进入游戏的现象呢?不少玩家应该都出现过这个问题吧,明明自己的WIFI是好的,可是为什么无线网不能玩呢?那么如何才可以得以解决,下面小编 ...

  4. android peap,Android连接IEEE8021X PEAP  无感知WiFi

    受保护的可扩展的身份验证协议 (PEAP) 是可扩展的身份验证协议 (EAP) 家族的一个新成员.PEAP 使用传输级别安全性 (TLS) 在正在验证的 PEAP 客户端(例如无线计算机)和 PEAP ...

  5. android 忽略wifi密码,android 连接指定SSID 的无密码Wifi ,连接不上

    1.代码 addNetwork并没有把网络添加保存,也无法连接了 public static WifiConfiguration configWifiInfo(Context context, Str ...

  6. android网络的评分机制、连接国内ap wifi不回连问题

    前言: 本文介绍了android下网络的评分机制,同时分析wifi连接国内ap时,重新打开wifi后,wifi不回连ap的问题,并提供解决方法. android下可以有多种网络存在,如:wifi.mo ...

  7. Android 8.0/9.0 wifi 自动连接评分机制

    今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...

  8. Wifi自动连接评分机制

    今天了解了一下Wifi自动连接时的评分机制,总结如下: WifiConnectivityManager的初始化: /frameworks/opt/net/wifi/service/java/com/a ...

  9. Android P WiFi自动连接评分机制

    1.WifiConnectivityManager的初始化 frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiState ...

最新文章

  1. iostext添加点击事件_iOS给UILabel添加点击事件
  2. Android配置----Android开发环境搭建
  3. EIGRP实验--协议工作过程详解(一)
  4. 关于移除节点的IE和Firefox的兼容问题
  5. 第1阶段——uboot分析之查找命令run_command函数和命令定义过程(6)
  6. 百度地图-矩形编辑的模拟实现
  7. mysql 生明变量_mysql中变量的使用
  8. python generator类型_python生成器(Generator)
  9. Vue+Mui商城项目使用说明(首页仿淘宝)
  10. 南阳oj S + T
  11. jQuery 效果 - 淡入淡出,fadeIn,fadeOut,fadeToggle的使用
  12. python---打包exe文件运行自动化
  13. 南京市shp矢量数据wgs84坐标系包含区划路网水系poi功能区等类型
  14. 微前端 Micro-Frontends - 概念
  15. Python代码太长换行
  16. Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
  17. iOS - 适配iOS 11
  18. nubia Z5 mini 小牛 黑砖qhsusb dload修复
  19. 对可编程控制器的专有协议进行模糊处理找到影响物理控制相关的漏洞
  20. 8051 ,80C51 ,MCS-51这三者的区别

热门文章

  1. C++ 中的动态库和静态库(Windows)
  2. SQLSERVER到底能识别多少个逻辑CPU?
  3. Red Hat EnterPrise Linux 5.4下web服务器的综合使用(普通站点、虚拟主机、安全性、...
  4. Spring--事务处理编程
  5. linux wc 修改文件,Linux wc命令
  6. STM32F429HAL库ADCDMA学习笔记
  7. c++求矩阵的秩_利用Python矩阵求逆、特征值及特征向量
  8. 如何安装win10与linux双系统,Windows10与CentOS 双系统共存完美教程
  9. java cookie p3p_利用P3P实现单点登录和COOKIE的跨域读写
  10. python星空画法教程_教程 | 美轮美奂的星空画法