Android P wifi扫描场景相关

本文探讨了在Android P系统中,Wi-Fi扫描的两种不同场景:1) 在Wi-Fi设置界面,扫描间隔固定为10秒;2) 当屏幕亮起但不在Wi-Fi设置界面时,采用指数退避策略,扫描间隔在20到160秒之间变化。熄屏状态下,若存在保存的网络,设备将进行PNO扫描,只查找已保存网络,扫描间隔介于20到60秒。
摘要由CSDN通过智能技术生成
  1. wifi setting界面
    /packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java
/* package */ void submit(WifiConfigController configController) {

        final WifiConfiguration config = configController.getConfig();

        if (config == null) {
            if (mSelectedAccessPoint != null
                    && mSelectedAccessPoint.isSaved()) {
                connect(mSelectedAccessPoint.getConfig(), true /* isSavedNetwork */);
            }
        } else if (configController.getMode() == WifiConfigUiBase.MODE_MODIFY) {
            mWifiManager.save(config, mSaveListener);
        } else {
            mWifiManager.save(config, mSaveListener);
            if (mSelectedAccessPoint != null) { // Not an "Add network"
                connect(config, false /* isSavedNetwork */);
            }
        }

        mWifiTracker.resumeScanning();
    }

/frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java

    public void resumeScanning() {
        if (mScanner == null) {
            mScanner = new Scanner();
        }

        if (mWifiManager.isWifiEnabled()) {
            mScanner.resume();
        }
    }
     class Scanner extends Handler {
        static final int MSG_SCAN = 0;

        private int mRetry = 0;

        void resume() {
            if (!hasMessages(MSG_SCAN)) {
                sendEmptyMessage(MSG_SCAN);
            }
        }

        void pause() {
            mRetry = 0;
            removeMessages(MSG_SCAN);
        }

        @VisibleForTesting
        boolean isScanning() {
            return hasMessages(MSG_SCAN);
        }

        @Override
        public void handleMessage(Message message) {
            if (message.what != MSG_SCAN) return;
            if (mWifiManager.startScan()) {
                mRetry = 0;
            } else if (++mRetry >= 3) {
                mRetry = 0;
                if (mContext != null) {
                    Toast.makeText(mContext, R.string.wifi_fail_to_scan, Toast.LENGTH_LONG).show();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值