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

[MT8766][Android12] 修改WIFI热点默认名称、密码、IP地址以及默认开启热点

文章目录

    • 开发平台基本信息
    • 问题描述
    • 解决方法

开发平台基本信息

芯片: MTK8766
版本: Android 12
kernel: msm-4.19

问题描述

最近做了一款没有屏幕显示的智能盒子,要想操控这款设备就只能通过adb投屏,如果默认不允许有线连接,那么要怎么实现adb投屏呢?安卓是支持WIFI adb连接投屏的,只要盒子启动热点,然后用手机或者其他有屏幕的设备连接盒子的热点,这样就可以通过IP地址在有屏幕的设备操纵智能盒子。所以,需要做的事情有几个:

  • 修改盒子热点的默认名称、密码
  • 固定热点的IP地址

解决方法

设备默认开启热点,固定热点的名称、密码以及IP地址,然后手机或者电脑,连接设备的热点,这样电脑跟设备就处于同一个局域网内,通过固定IP就能连接、操作设备。

  • 固定热点名称、密码
--- a/packages/modules/Wifi/service/java/com/android/server/wifi/WifiApConfigStore.java
+++ b/packages/modules/Wifi/service/java/com/android/server/wifi/WifiApConfigStore.java
@@ -346,13 +346,16 @@ public class WifiApConfigStore {private SoftApConfiguration getDefaultApConfiguration() {SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();configBuilder.setBand(generateDefaultBand(mContext));
-        configBuilder.setSsid(mContext.getResources().getString(
-                R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid());
+        // configBuilder.setSsid(mContext.getResources().getString(
+        //         R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid());
+        configBuilder.setSsid("WIFI_Test");if (ApConfigUtil.isWpa3SaeSupported(mContext)) {
-            configBuilder.setPassphrase(generatePassword(),
+            // configBuilder.setPassphrase(generatePassword(),
+            configBuilder.setPassphrase("123456",SoftApConfiguration.SECURITY_TYPE_WPA3_SAE_TRANSITION);} else {
-            configBuilder.setPassphrase(generatePassword(),
+            // configBuilder.setPassphrase(generatePassword(),
+            configBuilder.setPassphrase("123456",SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);}
  • 固定IP地址
--- a/packages/modules/Connectivity/Tethering/src/android/net/ip/IpServer.java
+++ b/packages/modules/Connectivity/Tethering/src/android/net/ip/IpServer.java
@@ -111,6 +111,7 @@ public class IpServer extends StateMachine {// TODO: have PanService use some visible version of this constantprivate static final String BLUETOOTH_IFACE_ADDR = "192.168.44.1/24";
+    private static final String WIFI_IFACE_ADDR = "192.168.68.68/24";// TODO: have this configurableprivate static final int DHCP_LEASE_TIME_SECS = 3600;
@@ -657,6 +658,8 @@ public class IpServer extends StateMachine {if (mInterfaceType == TetheringManager.TETHERING_BLUETOOTH) {return new LinkAddress(BLUETOOTH_IFACE_ADDR);
+        }else if (mInterfaceType == TetheringManager.TETHERING_WIFI){
+            return new LinkAddress(WIFI_IFACE_ADDR);}return mPrivateAddressCoordinator.requestDownstreamAddress(this, useLastAddress);
  • 接收到开机广播,默认开启热点
--- a/frameworks/base/custom/java/com/common/sdk/security/SecurityService.java
+++ b/frameworks/base/custom/java/com/common/sdk/security/SecurityService.java
@@ -60,6 +60,10 @@ import android.os.UserHandle;import static android.provider.Settings.System.SHOW_BATTERY_PERCENT;import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;import android.telephony.SubscriptionManager;
+import static android.net.ConnectivityManager.TETHERING_WIFI;
+import android.os.Handler;
+import android.os.Looper;
+import android.net.ConnectivityManager;public class SecurityService extends ISecurityService.Stub {private static final String TAG = "SecurityService";
@@ -124,11 +128,23 @@ public class SecurityService extends ISecurityService.Stub {//}}+    ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
+            new ConnectivityManager.OnStartTetheringCallback() {
+                @Override
+                public void onTetheringFailed() {
+                    super.onTetheringFailed();
+                }
+            };
+private final class securityReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {Log.d(TAG, "Receive intent ACTION_BOOT_COMPLETED");
+                ConnectivityManager mConnectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+                mConnectivityManager.startTethering(TETHERING_WIFI, true /* showProvisioningUi */,
+                    mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
+String basebandVersion = null;String languageAlreadySet = null;basebandVersion = TelpoUtil.getBasebandVersion();

相关文章:

[MT8766][Android12] 修改WIFI热点默认名称、密码、IP地址以及默认开启热点

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MTK8766 版本: Android 12 kernel: msm-4.19 问题描述 最近做了一款没有屏幕显示的智能盒子,要想操控这款设备就只能通过adb投屏,如果默认不允许有线连接,那么要怎么实…...

【嵌入式】堆栈与单片机内存

堆栈 在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。 其实堆栈就是单片机中的一些存储单元,这些存储单元被指定保存一些特殊信息,比如地址&#xff0…...

十大排序算法Java实现及时间复杂度

文章目录 十大排序算法选择排序冒泡排序插入排序希尔排序快速排序归并排序堆排序计数排序基数排序桶排序时间复杂度 参考资料 十大排序算法 选择排序 原理 从待排序的数据元素中找出最小或最大的一个元素,存放在序列的起始位置, 然后再从剩余的未排序元…...

[Go]配置国内镜像源

配置 Windows 选一个 go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy,direct查看环境配置 go env...

Java知识点补充

静态方法 vs 实例方法: 静态方法(使用 static 关键字声明):属于类,不依赖于对象实例,可以通过类名直接调用。 实例方法(不使用 static 关键字声明):属于类的实例&#xf…...

Webpack和JShaman相比有什么不同?

Webpack和JShaman相比有什么不同? Webpack的功能是打包,可以将多个JS文件打包成一个JS文件。 JShaman专门用于对JS代码混淆加密,目的是让JavaScript代码变的不可读、混淆功能逻辑、加密代码中的隐秘数据或字符,是用于代码保护的…...

WEB应用程序编程接口API

使用Web API Web API是网站的一部分,用于与使用具体URL请求特定信息的程序交互。这种请求称为API调用。请求的数据格式以易于处理的格式(JSON,CSV)返回。 Git和GitHub Git是一个分布式版本控制系统,帮助人们管理为项目所做的工作…...

进阶JAVA篇- BigDecimal 类的常用API(四)

目录 API 1.0 BigDecimal 类说明 1.1 为什么浮点数会计算不精确呢? 1.2 如何创建 BigDecimal 类型的对象 1.2.1具体来介绍三种方式来创建: 1.2.2 结合三种创建方法,一起来分析一下。 1.3 BigDecimal 类中的 valueOf(Strin…...

UE4 顶点网格动画播放后渲染模糊问题

问题描述:ABC格式的顶点网格动画播放结束后,改模型看起来显得很模糊有抖动的样子 解决办法:关闭逐骨骼动态模糊...

centos 磁盘挂载与解挂

磁盘挂载 查看已挂载的磁盘 df -TH查看磁盘分区,对比第一步,看哪些磁盘没有挂载,例如发现/dev/sdb的磁盘没有在第一步中显示 fdisk -l磁盘分区(/dev/sdb为上一步骤中没有挂载的磁盘) fdisk /dev/sdb执行上一命令后…...

C语言 位操作

定义 位操作提高程序运行效率,减少除法和取模的运算。在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。 左移 后空缺自动补0 右移 分为逻辑右移和算数右移 逻辑右移 不管什么类型&am…...

Go语言中入门Hello World以及IDE介绍

您可以阅读Golang教程第1部分:Go语言介绍与安装 来了解什么是golang以及如何安装golang。 Go语言已经安装好了,当你开始学习Go语言时,编写一个"Hello, World!"程序是一个很好的入门点。 下面将会提供了一些有关IDE和在线编辑器的…...

Java面试题-Java核心基础-第二天(基本语法)

目录 一、注释有几种形式 二、标识符与关键字的区别 三、自增自减运算符 四、移位运算符 五、continue、break、return的区别 一、注释有几种形式 注释除了有其他编程语言有的单行注释和多行注释之外,还有其Java特有的文档注释 文档注释能够使用javadoc命令就…...

Linux 部署 GitLab idea 连接

概述 GitLab 是一个开源的代码管理平台,使用 Git 作为版本控制工具,提供了 Web 界面和多种功能,如 wiki、issue 跟踪、CI/CD 等。 GitLab 可以自托管或使用 SaaS 服务,支持多种操作系统和执行器。 GitLab 可以帮助软件开发团队…...

Java延迟队列——DelayQueue

Java延迟队列——DelayQueue DelayQueue的定义 public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>DelayQueue是一个无界的BlockingQueue&#xff0c;是线程安全的&#xff08;无界指的是队列的元素数量不存…...

Vulnhub系列靶机---Raven2

文章目录 Raven2 渗透测试信息收集提权UDF脚本MySQL提权SUID提权 Raven2 渗透测试 信息收集 查看存活主机 arp-scan -l 找到目标主机。 扫描目标主机上的端口、状态、服务类型、版本信息 nmap -A 192.168.160.47目标开放了 22、80、111 端口 访问一下80端口&#xff0c;并…...

设计模式-生成器模式

生成器模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于构建复杂的对象。这种模式将构造代码和表示代码分离开来&#xff0c;使得同样的构造过程可以创建不同的表示。 以下是一个简单的Java实现&#xff1a; // 产品 class Product …...

Nginx正向代理配置(http)

前言 在工作中我们经常使用nginx进行反向代理,今天介绍下怎么进行正向代理,支持http请求,暂不支持https 首先先介绍下正向代理和反向代理。 正向代理 在客户端&#xff08;浏览器&#xff09;配置代理服务器&#xff0c;通过代理服务器进行互联网访问。 反向代理 客户端只…...

ARMv5架构对齐访问异常问题

strh非对齐访问 在ARMv5架构中&#xff0c;对于strh指令&#xff08;Store Halfword&#xff09;&#xff0c;通常是要求对地址进行对齐访问的。ARMv5架构对于半字&#xff08;Halfword&#xff09;的存储操作有对齐要求&#xff0c;即地址必须是2的倍数。 如果尝试使用strh指…...

Go中varint压缩编码原理分析

文章目录 编码介绍无符号整数较小的值较大的值Go中的实现编码PutUvarint解码Uvarint 有符号整数较小的值(指绝对值)较大的负数(只绝对值)Go中的实现编码PutVarint解码Varint 总结 编码介绍 varint是一种将整数编码为变长字节的压缩编码算法&#xff0c;本篇文章就是分析该编码…...

医用擦拭纸选购指南:看懂这五大认证,避开医疗耗材采购“隐形坑

# 医用擦拭纸选购指南&#xff1a;看懂这五大认证&#xff0c;避开医疗耗材采购“隐形坑”> 在医疗领域&#xff0c;每一片看似普通的擦拭纸&#xff0c;都直接关系到诊疗安全、院感控制和患者健康。对于医疗器械经销商、医院后勤管理者而言&#xff0c;选择供应商时最核心的…...

别再被‘绝对安全’忽悠了:聊聊量子密钥分发里那个叫‘诱骗态’的‘安全补丁’

量子密钥分发中的"安全补丁"&#xff1a;诱骗态如何守护通信防线 量子通信常被冠以"绝对安全"的美誉&#xff0c;但鲜为人知的是&#xff0c;这项前沿技术同样需要不断打补丁来应对现实威胁。就像软件系统需要安全更新一样&#xff0c;量子密钥分发&#…...

Python+Cartopy实战:用MODIS数据绘制全球气溶胶热力图(附完整代码)

PythonCartopy实战&#xff1a;用MODIS数据绘制全球气溶胶热力图&#xff08;附完整代码&#xff09; 当我们需要分析全球气溶胶分布时&#xff0c;卫星遥感数据提供了最全面的视角。MODIS&#xff08;中分辨率成像光谱仪&#xff09;作为NASA的重要观测工具&#xff0c;每天都…...

游戏外挂开发实战:用C#和Cheat Engine读取内存实现自动补血(附完整代码)

游戏内存数据解析与自动化操作的技术实现 在数字娱乐领域&#xff0c;游戏开发与逆向工程一直是两个相互促进的技术方向。了解游戏内部数据结构和运行机制&#xff0c;不仅有助于开发者优化产品&#xff0c;也能帮助技术爱好者深入理解计算机系统的工作原理。本文将探讨一种通过…...

Wiki.js日志系统终极指南:从记录到安全监控的全面解析

Wiki.js日志系统终极指南&#xff1a;从记录到安全监控的全面解析 【免费下载链接】wiki- Wiki.js | A modern and powerful wiki app built on Node.js 项目地址: https://gitcode.com/GitHub_Trending/wiki78/wiki- 当您的团队在Wiki.js中协作编辑文档时&#xff0c;是…...

MGeo中文地址解析惊艳效果:‘宁夏银川市金凤区宁安大街490号银川市民大厅’11字段精准输出

MGeo中文地址解析惊艳效果&#xff1a;‘宁夏银川市金凤区宁安大街490号银川市民大厅’11字段精准输出 1. 引言&#xff1a;从混乱文本到精准结构&#xff0c;地址解析的魔力 想象一下&#xff0c;你收到一条用户留言&#xff1a;“麻烦送到银川市民大厅&#xff0c;在金凤区…...

炉石传说自动化工作流:从智能决策到实战应用的全栈指南

炉石传说自动化工作流&#xff1a;从智能决策到实战应用的全栈指南 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09;&#xff08;2024.01.25停更至国服回归&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthsto…...

ECharts甘特图实战:5分钟搞定项目进度可视化(附完整代码)

ECharts甘特图实战&#xff1a;5分钟搞定项目进度可视化&#xff08;附完整代码&#xff09; 项目管理中&#xff0c;进度可视化是团队协作的核心需求。传统表格难以直观展示任务依赖关系&#xff0c;而专业项目管理软件又过于笨重。ECharts作为国内最流行的数据可视化库&…...

3大维度重构投资决策:用TradingAgents-CN打造智能交易系统

3大维度重构投资决策&#xff1a;用TradingAgents-CN打造智能交易系统 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在数字化投资时代&#xf…...

Openclaw中文版落地:nanobot支持中文错误提示、中文文档与本地化调试

Openclaw中文版落地&#xff1a;nanobot支持中文错误提示、中文文档与本地化调试 1. nanobot&#xff1a;超轻量级OpenClaw中文版 nanobot是一款受OpenClaw启发的超轻量级个人人工智能助手&#xff0c;现在全面支持中文环境。这个工具最大的特点是轻量高效&#xff0c;仅需约…...