安卓恢复wifi,热点状态代码

安卓系统在开机时会读取关机时wifi和热点的打开关闭状态,以此来开启操作开启关闭wifi,热点

  • 第一步启动wifiservice 代码位置frameworks\opt\net\wifi\service\java\com\android\server\wifi
        public WifiService(Context context) {
            super(context);
            mImpl = new WifiServiceImpl(context);
        }
    
        @Override
        public void onStart() {
            Log.i(TAG, "Registering " + Context.WIFI_SERVICE);
            publishBinderService(Context.WIFI_SERVICE, mImpl);
        }
    
        @Override
        public void onBootPhase(int phase) {
            if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
                mImpl.checkAndStartWifi(); //接收到服务启动信息会执行相关操作
            }
        }

     

  • 接着执行到WifiServiceImpl 中的checkAndStartWifi方法同样在frameworks\opt\net\wifi\service\java\com\android\server\wifi 目录

 /**
     * Check if Wi-Fi needs to be enabled and start
     * if needed
     *
     * This function is used only at boot time
     */
    public void checkAndStartWifi() {
        /* Check if wi-fi needs to be enabled */
        boolean wifiEnabled = mSettingsStore.isWifiToggleEnabled(); //判断wifi是否开启
        Slog.i(TAG, "WifiService starting up with Wi-Fi " +
                (wifiEnabled ? "enabled" : "disabled"));

        registerForScanModeChange();//开启扫描
        mContext.registerReceiver(
                new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        if (mSettingsStore.handleAirplaneModeToggled()) {
                            mWifiController.sendMessage(CMD_AIRPLANE_TOGGLED);
                        }
                    }
                },
                new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED));

        // Adding optimizations of only receiving broadcasts when wifi is enabled
        // can result in race conditions when apps toggle wifi in the background
        // without active user involvement. Always receive broadcasts.
        registerForBroadcasts(); //初始化一些广播
        registerForPackageOrUserRemoval();
        mInIdleMode = mPowerManager.isDeviceIdleMode();

        mWifiController.start();

        // If we are already disabled (could be due to airplane mode), avoid changing persist
        // state here
        // MStar Android Patch Begin
        //这里就是判断是否要重新开启wifi和热点了
        if (wifiEnabled) {
            setWifiEnabled(wifiEnabled);
        } else {
            // If wifi not start self, test if softap need start or not
            if (mSettingsStore.isWifiApToggleEnabled()) {
                Slog.d(TAG, "Wifi ap start with enabled");
                setWifiApEnabled(null, true);
            } else {
                Slog.d(TAG, "Wifi ap start with disabled");
            }
        }
        // MStar Android Patch End
	
        mWifiWatchdogStateMachine = WifiWatchdogStateMachine.
               makeWifiWatchdogStateMachine(mContext, mWifiStateMachine.getMessenger());
    }

这里要注意的是这里的开关wifi热点直接使用的是当前类中的方法,此代码是mstar 6.0方案代码不同方案可能有所不同 。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值