基于t972 Android9 AP6256,如何在设置中添加5G热点选项,并使其正常打开

在这里插入图片描述
通过设置的的WiFi热点选项可以知道关键词“2.4GHz”,因此可以其全局搜索,在packages\apps\Settings\res\values\strings.xml文件下找到如下图所示,
在这里插入图片描述
从上面注释可以知道,选项按键选择2.4GHz触发的按键关键词是“wifi_ap_choose_2G”,因此继续搜索,在packages\apps\Settings\res\values\arrays.xml文件下找到如下下图所示,
在这里插入图片描述
那么可以知道,关键词就是“wifi_ap_band_config_full”,应用就是应该根据这个关键词获取数组内的选项标签,然而在packages目录下没有搜索到有用的调用,那么换个方向,继续搜索“wifi_ap_choose_2G”,搜索到在
packages\apps\Settings\src\com\android\settings\wifi\tether\WifiTetherApBandPreferenceController.java
文件下找到,如下图所示,
在这里插入图片描述
根据上图分析,可以知道,只需要调用is5GhzBandSupported方法返回true即可让设置WiFi热点选项增加上5GHz选项,那么分析一下is5GhzBandSupported方法,此方法如下图所示,
在这里插入图片描述
从上面方法可以看出,需要mWifiManager.isDualBandSupported()返回true和countryCode不为空才可以,先分析isDualBandSupported方法,其方法如下图所示,
在这里插入图片描述
从上图可以知道实质调用的是IWifiManager mService; => mService.isDualBandSupported();
在frameworks\opt\net\wifi\service\java\com\android\server\wifi\WifiServiceImpl.java文件搜索到isDualBandSupported方法,如下图所示,
在这里插入图片描述
从上图可以知道最终返回的是“config_wifi_dual_band_support”这个关键词的值,搜索改关键词,在frameworks\base\core\res\res\values\config.xml文件中可以配置该关键词的值,如下图所示,
在这里插入图片描述
这里我们设置为true,那么is5GhzBandSupported方法的第一个条件已经满足了,而第二个条件是countryCode国家代号不为空,这个网上随便找即可,我这里强制给它写为”CN”中国代号,如下图所示,
在这里插入图片描述
那么重新编译烧录后,在设置热点选项可以看到5GHz选项了,如下图所示,
在这里插入图片描述

这里又出现一个问题了,使用2.4GHz频段打开热点是没问题的,但是使用5.0GHz频段打开热点一会就自动关闭了,报错日志关键部分如下图所示,
在这里插入图片描述
通过日志可以看出,它是国家代号不允许5GHz频段,也就是说系统是通过国家代号来决定是否可以打开5GHz频段的WiFi热点的。通过“5GHz band is not allowed without country code”这个日志搜索到在
rameworks\opt\net\wifi\service\java\com\android\server\wifi\util\ApConfigUtil.java文件中出现,如下图所示,
在这里插入图片描述
看到以上程序之后,我们是否想到和之前判断是否支持5G的那段程序很像,那么最暴力的解决方法就是将红色框框那段程序给屏蔽掉。
在重新编译烧录固件后,可以发现5G频段WiFi热点可以正常打开了。

这里想一想,通过这两个地方改动,它都与“countryCode”这个国家代号有关,如果暴力改动,那么有很多变量等都没有动态改动的,那么看看“countryCode”这个是在哪来一开始给它初始化设置的,我们可以让它默认为“CN”就好了,搜索“updateApChannelConfig”方法,找到它在
frameworks\opt\net\wifi\service\java\com\android\server\wifi\SoftApManager.java文件下调用,如下图所示,
在这里插入图片描述
那么它里面传的“mCountryCode”参数又在哪里呢?通过搜索找到在本路径下,如下图所示,
在这里插入图片描述
从上图源码可知道,“mCountryCode”参数又是通过SoftApManager方法中的“countryCode”形参赋予的,那么搜索SoftApManager方法,找到在
frameworks\opt\net\wifi\service\java\com\android\server\wifi\WifiInjector.java文件中调用,如下图所示,
在这里插入图片描述
通过上图源码可知道,SoftApManager方法中的“countryCode”形参是通过mCountryCode.getCountryCode()这个方法调用获取的,而“mCountryCode”这个实例的类是在本文件,如下图所示,
在这里插入图片描述
那么“WifiCountryCode”这个类通过搜索,在
frameworks\opt\net\wifi\service\java\com\android\server\wifi\WifiCountryCode.java文件中,该类的“getCountryCode”方法如下图所示,
在这里插入图片描述
通过上图源码对该方法注释可知,从SIM卡或手机默认设置返回当前报告的国家/地区代码,因此可知道,为什么5GHz频段WiFi热点打不开了,因为没有插SIM卡,所以获取不到国家代号,使用的是默认设置的代号,那么查找“pickCountryCode”方法,在本文件可找到,如下图所示,
在这里插入图片描述
通过上图源码可知,红色框框的就是当上面搜索手机SIM卡没有获取到国家代号,那么就会设置默认的代号“mDefaultCountryCode”了,所以在本文件中,将“mDefaultCountryCode”变量强制修改成“CN”即可,如下图所示,
在这里插入图片描述
此时也就修改完成了,通过编译烧录,也是完美可以打开5GHzWiFi热点了。
第一种暴力修改方法的日志片段如下:
04-25 15:15:13.816 3778 4344 E ApConfigUtil: 5GHz band is not allowed without country code, config.apBand(1), WifiConfiguration.AP_BAND_5GHZ(1), countryCode(null), config.apChannel(0)
而第二种修改的日志显示的“config.apChannel”配置热点通道从第一种“0”变成系统分配的了,如下:
04-25 15:56:34.849 3759 3940 E ApConfigUtil: config.apChannel is 165

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/319097.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图床搭建GitHub+PicGo+jsdelivr(CDN)+Typora(内附加速工具)

目录 安装PicGo GitHub配置与加速器 配置PicGo 使用typroa 安装PicGo PicGo是一个用于上传图片的客户端,支持拖拽上传、剪贴板上传,功能十分方便。 下载地址: https://github.com/Molunerfinn/PicGo/releases 个人网盘自取版本2.4.0…

nginx变量自定义日志收集

内置变量 $remote_addr;存放了客户端的地址,注意是客户端的公网IP,也就是一家人访问一个网站,则会显示为路由器的公网IP。 $args;变量中存放了URL中的指令 [rootlocalhost conf.d]# cat pc.conf server {listen 80;se…

【UnityRPG游戏制作】RPG项目的背包系统商城系统和BOSS大界面

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

用于复杂任务的 AI 编码引擎:多文件多步骤拆解实现 | 开源日报 No.239

plandex-ai/plandex Stars: 3.1k License: AGPL-3.0 plandex 是一个用于复杂任务的 AI 编码引擎。 使用长时间运行的代理完成跨多个文件且需要多个步骤的任务将大型任务分解为较小子任务,逐一实现,直至完成整个工作帮助处理积压工作、使用陌生技术、摆…

Gateway结合Nacos使用!!!

一、本地结合使用 1. 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 2. bootstarp.yml配置文件 如果Nacos中配置使用yaml格式&…

【牛客网】值周

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分。 因为l<100000000,所以数组开1e8。 唯一需要注意的点就是前面给b[0]单独赋值为1&#xff08;因为如果在循环中给b[0]赋值&…

利用大模型提升个性化推荐的异构知识融合方法

在推荐系统中&#xff0c;分析和挖掘用户行为是至关重要的&#xff0c;尤其是在美团外卖这样的平台上&#xff0c;用户行为表现出多样性&#xff0c;包括不同的行为主体&#xff08;如商家和产品&#xff09;、内容&#xff08;如曝光、点击和订单&#xff09;和场景&#xff0…

iOS 实现类似抖音翻页滚动效果

这里是效果图 参考抖音的滚动效果&#xff0c;需要我们在结束拖动的时候&#xff0c;动画设置偏移量 这里有一个注意点&#xff0c;由于我们是在拖动结束的时候&#xff0c;手动改变tableview的偏移量&#xff0c; 改变了tableView 自身原有的的滚动效果&#xff0c;所以我们…

uniapp乡村社区户籍问外来人员管理系统 微信小程序python+java+node.js+php

基于微信小程序的外来人员管理系统项目的概述设计分析&#xff0c;主要内容有的私教预约平台系统平台的具体分析&#xff0c;进行数据库的是设计&#xff0c;数据采用MySQL数据库&#xff0c;并且对于系统的设计采用比较人性化的操作设计&#xff0c;对于系统出现的错误信息可以…

【 书生·浦语大模型实战营】作业(六):Lagent AgentLego 智能体应用搭建

【 书生浦语大模型实战营】作业&#xff08;六&#xff09;&#xff1a;Lagent & AgentLego 智能体应用搭建 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方…

Flutter创建自定义的软键盘

参考代码&#xff1a; Flutter - Create Custom Keyboard Examples 本文贴出的代码实现了一个输入十六进制数据的键盘&#xff1a; &#xff08;1&#xff09;支持长按退格键连续删除字符&#xff1b; &#xff08;2&#xff09;可通过退格键删除选中的文字&#xff1b; &…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

头歌:SparkSQL简单使用

第1关&#xff1a;SparkSQL初识 任务描述 本关任务&#xff1a;编写一个sparksql基础程序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1. 什么是SparkSQL 2. 什么是SparkSession。 什么是SparkSQL Spark SQL是用来操作结构化和半结构化数据的接口。…

UnityWebGL使用sherpa-ncnn实时语音识别

k2-fsa/sherpa-ncnn&#xff1a;在没有互联网连接的情况下使用带有 ncnn 的下一代 Kaldi 进行实时语音识别。支持iOS、Android、Raspberry Pi、VisionFive2、LicheePi4A等。 (github.com) 如果是PC端可以直接使用ssssssilver大佬的 https://github.com/ssssssilver/sherpa-ncn…

汽车制造业安全事故频发,如何才能安全进行设计图纸文件外发?

汽车制造业产业链长&#xff0c;关联度高&#xff0c;汽车制造上游行业主要为钢铁、化工等行业&#xff0c;下游主要为个人消 费、基建、客运和军事等。在汽车制造的整个生命周期中&#xff0c;企业与上下游供应商、合作商之间有频繁、密切的数据交换&#xff0c;企业需要将设计…

在编程的世界里,我相信每一行代码都是一次对未来的投资

&#x1f600;前言 突然有感而发也是激励自己互勉 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 在编程的世界里&#xff0c;我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里&#xff0c;我相信每一行代码都是一…

功能测试_分类_用例_方法

总结 测试分类 按阶段分类 是否查看源代码分类 是否运行分类 是否自动化 其他分类 软件质量模型 开发模型-瀑布模型 测试过程模型 v w 测试用例八大要素 用例编号 用例标题 …

【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、简单介绍Sizeof和Strlen1.1 Sizeof1.2 Strlen函数1.3 Sie…

聊聊 ASP.NET Core 中间件(一):一个简单的中间件例子

前言&#xff1a;什么是中间件 服务器在收到 HTTP 请求后会对用户的请求进行一系列的处理&#xff0c;比如检查请求的身份验证信息、处理请求报文头、检查是否存在对应的服务器端响应缓存、找到和请求对应的控制器类中的操作方法等&#xff0c;当控制器类中的操作方法执行完成…

MLP手写数字识别(3)-使用tf.data.Dataset模块制作模型输入(tensorflow)

1、tensorflow版本查看 import tensorflow as tfprint(Tensorflow Version:{}.format(tf.__version__)) print(tf.config.list_physical_devices())2、MNIST数据集下载与预处理 (train_images,train_labels),(test_images,test_labels) tf.keras.datasets.mnist.load_data()…