当前位置: 首页 > news >正文

Android 有线网开发调试总结

Android 有线网开发调试总结

文章目录

  • Android 有线网开发调试总结
    • 一、前言
    • 二、有线网开发
      • 1、开关
      • 2、相关日志
        • (3)相关广播
        • (4)demo示例
    • 三、其他
      • 1、Android 有线网开发调试小结
      • 2、Android13 有线网开关研究
      • 3、Android9、11 有线网络开关设置
      • 4、Android13 实现有线网络和wifi共存
      • 5、Android11 有线网Score分析流程

一、前言

如果开发有线网相关功能,必须先掌握基本api知识和相关广播的监听;

Android13 之后有线网是有暴露开关控制api的,Android11 之前是需要自己添加开关控制接口的。

本简单介绍有线网开发基本知识,有兴趣的可以看看。

二、有线网开发

1、开关

//开关
EthernetManager ethernetManager = (EthernetManager)context.getSystemService(Context.ETHERNET_SERVICE);
ethernetManager.setEthernetEnabled(isEnable);//true、false参数表示开关

Android 11已经更旧的版本,系统未暴露有线网开关api,需要自己在EthernetManager里面添加接口。

Android13 或者更新的版本,系统才暴露有线网开关api接口,进行开关控制,

但是默认是没有开关状态记录,需要自定义属性进行记录。

2、相关日志

有线网节点关键字是:eth
上层关键字:EthernetTracker、EthernetNetwork、ConnectivityService
分配ip的关键字:DHCP日志过滤示例:
logcat | grep -i "eth"
logcat | grep -iE "EthernetTracker|EthernetNetwork|ConnectivityService"
logcat | grep -iE "EthernetTracker|EthernetNetwork|ConnectivityServic|eth"

有线网正常开启,并自动获取到ip部分日志:

logcat | grep -iE "EthernetTracker|EthernetNetwork|ConnectivityService"
04-26 17:23:37.997   821  1038 I EthernetTracker: maybeTrackInterface: eth0 //打开节点
04-26 17:23:38.191   821  1038 D EthernetNetworkFactory: updateInterfaceLinkState, iface: eth0, up: false
04-26 17:23:41.257   821  7570 I EthernetTracker: interfaceLinkStateChanged, iface: eth0, up: true //节点启动成功
04-26 17:23:41.307  1231  5322 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=0.0.0.0 request=192.168.31.6 serverid=192.168.31.1 //分配到ip
04-26 17:23:41.335   821  1040 D ConnectivityService: [113 ETHERNET] EVENT_NETWORK_INFO_CHANGED, going from CONNECTING to CONNECTED
04-26 17:23:41.337   821  1040 D ConnectivityService: Setting DNS servers for network 113 to [/192.168.31.1] 
04-26 17:23:41.339   821  1040 D ConnectivityService: Adding iface eth0 to network 113 //网络注册正常

上面可以看到,打开有线网开关到自动获取有线网ip大概需要5秒。有时候只要1-2秒就可以。

(3)相关广播
Android没有有线网插拔变化的广播,ip变化可以用监听到。
ConnectivityManager.CONNECTIVITY_ACTION:网络ip变化广播,wifi和有线网通用
String ETHERNET_STATE_CHANGE = "action.ebsw.eth.status.change"; //自定义的底层回调后有线网络广播,这个是系统底层监听io口回调的。
(4)demo示例

在这里插入图片描述

上面是开启有线网后显示ip的基本信息。

设置静态ip和代理信息后的显示:

在这里插入图片描述

有线网demo 的简单说明:

1、Android 原生没有有线网开关状态,需要自定义属性进行开关记忆;所以默认没设置switch开关控件;
2、有线网开关状态之前方案都是使用Settings.Global.ethernet 开关记录的,3588 AN15 使用的是prop属性记录;
3、静态ip设置:要和自动获取的ip在同一个网段;网关一般设置成X.X.X.1,设置错误会导致无法上网;
4、代理设置:端口号有范围:1-65535,以前好像遇到过311D2 wifi设置端口号范围超出数值会导致系统重启。
5、有些方案设置静态ip或者代理需要关开一次有线网才能生效。
6、有线网接入状态是导入了定制包的,只针对特定系统,其他系统不适用,直接使用估计会崩溃,
其他系统调试需要去除判断有线网接入部分代码,重新编译apk使用;
底层是如何实现判断有线网接入的,没有去研究分析,大概是通过io是否接入判断的。

有线网调试demo源码和apk.zip 下载地址:

https://download.csdn.net/download/wenzhi20102321/90780716

三、其他

1、Android 有线网开发调试小结

Android13 之后有线网在EthernetManager有暴露开关控制api的,Android11 之前是需要自己添加开关控制接口的。

有线网开关默认是没有开关状态记录,需要自定义属性进行记录。

2、Android13 有线网开关研究

主要 对比 Android9 自己开发的有线网开关代码 :

https://blog.csdn.net/wenzhi20102321/article/details/131871354

3、Android9、11 有线网络开关设置

Android系统开发中发现,Android8以后有线网络开关没有api了,

需要自己进行通路建造,或者自己实现开关控制。

这部分修改在Framework 的Java层进行修改即可完成:

https://blog.csdn.net/wenzhi20102321/article/details/122243396

4、Android13 实现有线网络和wifi共存

Android 系统Framework进行一定适配后,可以实现wifi和有线网络端口都打开的,

如果同时连接wifi和有线网网络,优先并且默认使用的是有线网的网络,

但是可以在App端即可实现通过代码控制选择使用wifi或者有线网络进行网络请求。

https://blog.csdn.net/wenzhi20102321/article/details/133950414

5、Android11 有线网Score分析流程

Android 有线网络和wifi,同时连通,并且设置优先级。可以随时切换网络优先级 :

https://blog.csdn.net/wenzhi20102321/article/details/128211377

Android13 以后的代码,Score的逻辑更复杂的,并且是隐蔽的。目前无法设置。

相关文章:

  • STC单片机--仿真调试
  • 安装spark与配置环境变量
  • 【Python】算法笔记
  • TR-5000
  • Linux系统基本指令和知识指南
  • Vue 3 中的 nextTick 使用详解与实战案例
  • MES 运维
  • Vuerouter 的底层实现原理
  • boost笔记: Cannot open include file: ‘boost/mpl/aux_/preprocessed/plain/.hpp‘
  • 用3D slicer 去掉影像中的干扰体素而还原干净影像(脱敏切脸处理同)
  • CUDA:out of memory的解决方法(实测有效)
  • 【MATLAB代码解析】基于蜜蜂交配优化算法的排列组合优化问题MATLAB实现
  • Paper.js 的 simplify()方法在绘制高精度path时,消失问题
  • Nginx核心原理以及案例分析(AI)
  • 学习黑客 Linux 网络管理
  • Qt还有希望吗
  • leetcode 160. 相交链表
  • 国家信息中心:基于区块链和区块链服务网络(BSN)的可信数据空间建设指引
  • 重生之我在2024学Fine-tuning
  • Spring 中org.springframework.core.Ordered接口的实战教学
  • 巴基斯坦外长:印巴已同意立即停火
  • 雷军:过去一个多月是创办小米以来最艰难的时间
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 【社论】职业上新,勇于“尝新”
  • 定位真核生物起源于约27.2亿年前,华东师大团队在《自然》发文
  • 美联储主席:美联储工作方式不会受特朗普影响,从未寻求与总统会面