当前位置: 首页 > 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();
http://www.lryc.cn/news/191911.html

相关文章:

  • 【嵌入式】堆栈与单片机内存
  • 十大排序算法Java实现及时间复杂度
  • [Go]配置国内镜像源
  • Java知识点补充
  • Webpack和JShaman相比有什么不同?
  • WEB应用程序编程接口API
  • 进阶JAVA篇- BigDecimal 类的常用API(四)
  • UE4 顶点网格动画播放后渲染模糊问题
  • centos 磁盘挂载与解挂
  • C语言 位操作
  • Go语言中入门Hello World以及IDE介绍
  • Java面试题-Java核心基础-第二天(基本语法)
  • Linux 部署 GitLab idea 连接
  • Java延迟队列——DelayQueue
  • Vulnhub系列靶机---Raven2
  • 设计模式-生成器模式
  • Nginx正向代理配置(http)
  • ARMv5架构对齐访问异常问题
  • Go中varint压缩编码原理分析
  • 在IDEA中如何用可视化界面操作数据库? 在idea中如何操作数据库? 在idea中如何像Navicat一样操作数据库?
  • 数据库安全-RedisHadoopMysql未授权访问RCE
  • 辅助驾驶功能开发-功能规范篇(27)-3-导航式巡航辅助NCA华为
  • 探索UI设计|栅格系统的深入分析和应用
  • AI 律助 Alpha GPT 线上实操发布会,重磅发布!
  • 【漏洞复现】安全云平台存在任意文件下载getshell
  • 【JUC】原子操作类及LongAddr源码分析
  • 203、RabbitMQ 之 使用 direct 类型的 Exchange 实现 消息路由 (RoutingKey)
  • 微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
  • QMidi Pro for Mac:打造您的专属卡拉OK体验
  • bindtap和catchtap的区别?