android framework层开机打开、配置wifi热点

frameworks\base\services\java\com\android\server\wifi\WifiService.java

public void checkAndStartWifi() {
        /* Check if wi-fi needs to be enabled */
        /* 默认开启无线WiFi的代码
		boolean wifiEnabled = mSettingsStore.isWifiToggleEnabled();
        Slog.i(TAG, "WifiService starting up with Wi-Fi " +
                (wifiEnabled ? "enabled" : "disabled"));


		// softap save v1.0
		if (wifiEnabled) {
			if (!shouldStartWifiAP())
				setWifiEnabled(wifiEnabled);
			else {
				mSettingsStore.setttingsStoreSetWifiSaveState(1);
				setWifiApEnabled(null, true);
			}
		} else if (shouldStartWifiAP()) {
			setWifiApEnabled(null, true);
		}
		// end
		
             mWifiWatchdogStateMachine = WifiWatchdogStateMachine.
               makeWifiWatchdogStateMachine(mContext);
		*/

	/** 修改点,修改成开启流量热点**/

		// 获取之前设置的热点配置信息,这是异步的 效果不是很理想(导致打开不了)
		 WifiConfiguration apConfig =null /*= getWifiApConfiguration()*/;
		
	if(apConfig == null){ // 没有配置过设置一个默认的配置信息
	    //热点的配置类  
            apConfig = new WifiConfiguration();  
            //配置热点的名称(可以在名字后面加点随机数什么的)  
            apConfig.SSID = "OG123";  
	    // 设置加密类型,下面的密码才有效
	    apConfig.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
            //配置热点的密码  
            apConfig.preSharedKey="00000000"; 
	}
		 
		setWifiEnabled(false); 
		//setWifiApEnabled(null, true); // 不配置就写null,采用之前设置过的配置
		setWifiApEnabled(apConfig, true);
		 mWifiWatchdogStateMachine = WifiWatchdogStateMachine.
               makeWifiWatchdogStateMachine(mContext);
 }

###
 在frameworks\base\services\java\com\android\server\SystemServer.java里搜索wifi.checkAndStartWifi(), 
 可以找见它在ServerThread的run里调用

###
 frameworks\base\wifi\java\android\net\wifi\WifiApConfigStore.java

// 配置默认热点信息
private void setDefaultApConfiguration() {
        WifiConfiguration config = new WifiConfiguration();
        config.SSID = mContext.getString(R.string.wifi_tether_configure_ssid_default);
	config.SSID = SystemProperties.get("persist.sys.wifi.name", "OG123");// 名称
        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 = SystemProperties.get("persist.sys.wifi.passwd", "00000000");// 密码
        sendMessage(WifiStateMachine.CMD_SET_AP_CONFIG, config);
    }

猜你喜欢

转载自blog.csdn.net/qq_24451593/article/details/80393999