Android8.1 MTK平台 WLAN热点定制

200 阅读1分钟

默认启用 WLAN 热点

核心方法打开关闭 WLAN 热点从 SystemUI 中的 qsTile 快捷开关中提取

既然要默认启用这里选择加到 KeyguardUpdateMonitor.java 中,监听开机广播

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java


+import com.android.systemui.Dependency;
+import com.android.systemui.statusbar.policy.HotspotController;
 /**
  * Watches for updates that may be interesting to the keyguard, and provides
  * the up to date information as well as a registration for callbacks that care
@@ -237,6 +239,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
     private final IDreamManager mDreamManager;
     private boolean mIsDreaming;
 
+    private final HotspotController mController;
+
     /**
      * Short delay before restarting fingerprint authentication after a successful try
      * This should be slightly longer than the time between onFingerprintAuthenticated and
@@ -835,6 +839,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
                 dispatchBootCompleted();

+                mController.setHotspotEnabled(true);
+                android.provider.Settings.System.putInt(mContext.getContentResolver(), 
+                    com.mediatek.provider.MtkSettingsExt.System.WIFI_HOTSPOT_AUTO_DISABLE, 0);
             } else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) {
                 ///M: fix ALPS01821063, we should assume that extra value may not exist.
                 ///   Although the extra value of AIRPLANE_MODE_CHANGED intent should exist in fact.
@@ -1364,6 +1372,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
 
         SystemServicesProxy.getInstance(mContext).registerTaskStackListener(mTaskStackListener);
         mUserManager = context.getSystemService(UserManager.class);
+
+        mController = Dependency.get(HotspotController.class);
     }
 
     private void updateFingerprintListeningState() {


WLAN 热点保持开启,休眠不关闭

核心方法通过 adb shell dumpsys window | findstr mCurrentFocus 指令追踪到设置界面为

mCurrentFocus=Window{ffb4936 u0 com.android.settings/com.android.settings.Settings$TetherWifiSettingsActivity}

TetherWifiSettingsActivity.java 中得到

0 始终开启 1 空闲5分钟后关闭 2 空闲10分钟后关闭

  android.provider.Settings.System.putInt(mContext.getContentResolver(), 
+                    com.mediatek.provider.MtkSettingsExt.System.WIFI_HOTSPOT_AUTO_DISABLE, 0);
                   

WLAN 热点默认名称和密码

可通过 prop 值灵活配置默认名称和密码

frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiApConfigStore.java

     private WifiConfiguration getDefaultApConfiguration() {
         WifiConfiguration config = new WifiConfiguration();
-        config.SSID = mContext.getResources().getString(
-                R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid();
+        //config.SSID = mContext.getResources().getString(
+        //        R.string.wifi_tether_configure_ssid_default) + "_" + getRandomIntForDefaultSsid();
+        config.SSID = android.os.SystemProperties.get("persist.temp.wifiap.ssid", "WlanAP");
         config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
         String randomUUID = UUID.randomUUID().toString();
         //first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
-        config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9, 13);
+        //config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9, 13);
+        config.preSharedKey = android.os.SystemProperties.get("persist.temp.wifiap.key", "123456789");
         return config;
     }