荣耀官网首页官方网站seo方案撰写
文章目录
- 开发平台基本信息
- 问题描述
- 解决方法
开发平台基本信息
芯片: 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();