最近测试那边提了一个bug,经过排查后发现其原因:是因为连接的Wi-Fi无法上网,因此在Android系统的多网络策略中,可以上网的SIM移动网络被设置为系统默认网络,投屏组件docker传输与反控模块和scbee流媒体传输模块都未绑定Wi-Fi网络,模块进程默认使用系统默认网络,因此无法投屏成功。而P2P投屏不存在此问题,P2P网络属于本地Local局域网,网络路由规则高于系统默认网络,因此不受影响。

解决办法:在投屏组件docker传输与反控模块和scbee流媒体传输模块中新增网络绑定接口,为每次连接指定网络通路。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
public static final int TYPE_DEFAULT = -1;
public static final int TYPE_WIFI_STA = 0;
public static final int TYPE_WIFI_P2P = 1; public static void bindNetworkToProcess(Context context, int networkType) {
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
if (null != connManager) {
if (networkType != TYPE_DEFAULT) {
Network[] networkList = connManager.getAllNetworks();
for (Network network : networkList) {
NetworkInfo networkInfo = connManager.getNetworkInfo(network);
if (networkInfo.getType() == networkType) {
LogUtils.d(TAG, "bindNetworkToProcess: " + networkInfo.toString());
connManager.bindProcessToNetwork(network);
return;
}
}
LogUtils.e(TAG, "bindNetworkToProcess not found type: " + networkType);
} else {
connManager.bindProcessToNetwork(null);
LogUtils.d(TAG, "unbindNetworkToProcess");
}
} else {
LogUtils.e(TAG, "bindNetworkToProcess get CONNECTIVITY_SERVICE failed!");
}
} public static int convertNetworkType(int networkType) {
switch (networkType) {
case Constant.TYPE_WIFI_STA:
return ConnectivityManager.TYPE_WIFI;
case Constant.TYPE_WIFI_P2P:
default:
return Constant.TYPE_DEFAULT;
}
}

调用的地方:

// 绑定网络
Utils.bindNetworkToProcess(getBaseContext(), Utils.convertNetworkType(networkType)); // 取消绑定网络
Utils.bindNetworkToProcess(getBaseContext(), TYPE_DEFAULT);

使用ConnectivityManager.bindProcessToNetwork绑定特殊网络的更多相关文章

  1. android ConnectivityManager 检查是否有网络

    一.   ConnectivityManager 概要 ConnectivityManager是网络连接相关的管理器,它主要用于查询网络状态并在网络发生改变时发出状态变化通知.这个类主要负责的下列四个 ...

  2. IP-MAC绑定导致网络故障

    前段时间将一台服务器A的服务迁移至了另外一台服务器B,外网IP地址也顺带迁移过来了,结果网络出现了问题. 其中内网是畅通的,但是外网IP怎么都连不上另外一台路由C(B和C是在一个交换机下的,网段也相同 ...

  3. 5、android ConnectivityManager获取网络状态

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...

  4. 6、android 网络编程

    1.基于socket的用法 服务器端: 先启动一个服务器端的socket     ServerSocket svr = new ServerSocket(8989); 开始侦听请求 Socket s  ...

  5. Android网络连接判断与处理

    博客分类: Android 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android ...

  6. android 检查网络连接状态实现步骤

    获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.AC ...

  7. android ping网络是否成功

    public static boolean pingHost(String str) { //str 为要ping的IP地址 boolean result = false; try { Process ...

  8. Android 判断wifi和4G网络是否开启

    public boolean isWifiAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) g ...

  9. xUtils3源码分析(一):view的绑定

    概述 xUtils3是国人开发的一款功能丰富的Android快速开发框架,值得研究下.zip包下载:[ZIP]xutils主要分以下几个模块 视图绑定模块 网络请求模块 数据库模块 图片加载模块 我们 ...

  10. Android 监控网络状态

    public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (Conn ...

随机推荐

  1. MarkDown书写语法(常用格式)

    实际上每个 Markdown 应用程序都实现了稍有不同的 Markdown 语法,熟悉MarkDown书写语法常用格式,满足日常文字编辑需求 1.标题 请在单词或短语前面添加井号 (#) .# 的数量 ...

  2. 高精度模板 大数加大数,可变数组vector实现

    vector<int> Add(vector<int>& A, vector<int>& B)//采用引用传入vector,避免将其全部复制传值,使 ...

  3. 如何计算DG环境下Redo传输所需的带宽?

    MOS有篇文章: How To Calculate The Required Network Bandwidth Transfer Of Redo In Data Guard Environments ...

  4. CentOS7.5上Oracle19c离线rpm安装

    CentOS7.5上Oracle19c离线rpm安装 一.基础环境配置及依赖安装(1)关闭系统防火墙(如外网环境不能关闭防火墙自行开放相关需要使用的端口即可) systemctl stop firew ...

  5. scrapy框架使用:分布式、增量式

    scrapy框架的使用 前记:爬虫框架部分整理完成,后续慢慢完善, 声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 创建工程: scrapy startproje ...

  6. CF1795

    A 先判断初始行不行,再模拟加入. B 题意:数轴上给定一些线段,和点 \(t\).问能否删去一些线段,使得 \(t\) 变成唯一的覆盖次数最多的点. 差分 + 贪心. C 有 \(n\) 杯水,\( ...

  7. 【Unity3D】协同程序

    1 简介 ​ 1)协程概念 ​ 协同程序(Coroutine)简称协程,是伴随主线程一起运行的程序片段,是一个能够暂停执行的函数,用于解决程序并行问题.协程是 C# 中的概念,由于 Unity3D 的 ...

  8. 我在winform项目里使用“Windows I/O完成端口”的经验分享

    少年!看你骨骼惊奇,是万中无一的练武奇才,我这儿有本武林秘籍,见与你有缘就送你了! 如来神掌 Windows I/O完成端口是一个我至今都说不好的话题,请宽容的接受我这不是科班出身的自学成才的野生程序 ...

  9. win32-GetActiveWindow和GetForegroundWindow

    最近被这两个api搞得有点晕,故查阅了相关的资料. 这篇文章解释的很好:https://devblogs.microsoft.com/oldnewthing/20081006-00/?p=20643 ...

  10. 搜索引擎RAG召回效果评测MTEB介绍与使用入门

    RAG 评测数据集建设尚处于初期阶段,缺乏针对特定领域和场景的专业数据集.市面上常见的 MS-Marco 和 BEIR 数据集覆盖范围有限,且在实际使用场景中效果可能与评测表现不符.目前最权威的检索榜 ...