Platform: RK3399

OS: Android 7.1

Kernel: v4.4.83

亮屏情况:

1. 在WiFi Settings界面,无论WiFi是否有连接,固定扫描时间间隔为10s。

2. 在非WiFi Settings界面,无论WiFi是否有连接,以2的倍数慢慢拉大扫描周期,最小为20s,最大为160s

灭屏情况:

1. 当开启了PNO并且WiFi已经连接时,扫描周期为160s.

2. 当开启了PNO并且WiFi没有连接但有保存的网络时,扫描周期为

其他情况:

当没有保存网络的时候,会以5Min的周期扫描。

各个模式对应流程:

屏亮时:

WiFi Setting界面

进入WiFi Setting界面时,会调用对应Activity的onResume()。

onResume ->WifiSettings.java

mWifiTracker.startTracking ->startTracking ->WifiTracker.java

resumeScanning ->mScanner.resume ->resume->sendEmptyMessage(MSG_SCAN); ->handleMessage ->//Scanner类

mWifiManager.startScan ->//调用WiFi Service开始扫描。

sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS); //发送下次扫描时间间隔

WIFI_RESCAN_INTERVAL_MS默认定义为10秒。

// Combo scans can take 5-6s to complete - set to 10s.

private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;

非WiFi Setting界面

// Start a connectivity scan. The scan method is chosen according to

// the current screen state and WiFi state.

startConnectivityScan ->startPeriodicScan ->//mScreenOn为true

mPeriodicSingleScanInterval = PERIODIC_SCAN_INTERVAL_MS; //设置扫描间隔为20s

startPeriodicSingleScan ->mPeriodicSingleScanInterval *= 2; //每扫描一次,时间拉长一倍,最大不能超过MAX_PERIODIC_SCAN_INTERVAL_MS即160s

startSingleScan ->mScanner.startScan //开始扫描

屏灭时:

startConnectivityScan ->startConnectedPnoScan ->//screenOff以及WiFi已经有连接的情况

scanSettings.periodInMs = CONNECTED_PNO_SCAN_INTERVAL_MS; //设置扫描周期为160S

mScanner.startConnectedPnoScan ->startPnoScan

startDisconnectedPnoScan ->//screenOff以及WiFi没有连接但有保存的情况

scanSettings.periodInMs = DISCONNECTED_PNO_SCAN_INTERVAL_MS; //设置扫描周期为20S

mScanner.startDisconnectedPnoScan ->startPnoScan

没有保存网络的时候:

class DisconnectedState extends State {

/**

* If we have no networks saved, the supplicant stops doing the periodic scan.

* The scans are useful to notify the user of the presence of an open network.

* Note that these are not wake up scans.

*/

if (mNoNetworksPeriodicScan != 0 && !mP2pConnected.get()

&& mWifiConfigManager.getSavedNetworks().size() == 0) {

sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN,

++mPeriodicScanToken, 0), mNoNetworksPeriodicScan);

}

}

mNoNetworksPeriodicScan的值被定义在 frameworks/base/core/res/res/values/config.xml中

300000

WiFi Setting和非Settings界面的扫描是同时不干预并存工作的,如下图:

其中35秒和75秒是非WiFi界面的周期扫描,间隔40秒,说明是第二次(20*2)扫描了。

其他的是在WiFi Settings界面扫描,每10秒一次。

参考:

Android wifi扫描机制(Android O)

android wifi扫描间隔,[RK3399][Android7.1] 调试笔记 --- WiFi扫描周期规则相关推荐

  1. android手机底噪,[RK3399][Android7.1] 调试笔记 --- Codec播放音乐会有底噪

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 背景: 移植完Codec RT5640之后,发现播放声音的时候底部有噪声. 用示波器测量到的左右声道波 ...

  2. [RK3399][Android7.1] 调试笔记 --- 系统默认时钟配置

    OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55 分两个模块,一个是cpu,还有一个是pmu模块,这里只举例cpu,cpu又分在两个文件中定义 ...

  3. [RK3399][Android7.1] 调试笔记 --- I2S1工作输出是12MHz问题

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 现象: 使用I2S1通道,测量到的I2S MCLK是12MHz. 理论上应该是11.288MHz. 原 ...

  4. android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...

    系统环境: Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 接口代码所在位置为: /frameworks/base/core/java/android ...

  5. [RK3399][Android7.1] 调试笔记 --- sdcard守护进程启动位置

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 Board: Firefly-RK3399 之前版本sdcard守护进程都是放在init.rc中启动: ...

  6. [RK3399][Android7.1] 调试笔记 --- 使用ADC芯片ES7243遇到的问题

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 用途: ES7243模块用于环形麦克场景时,采集的是音频播放的声音,然后采到之后回送到CPU,和麦克录 ...

  7. [RK3399][Android7.1] 调试笔记 --- USB type-c插入后无法识别到

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 现象: 用update.img制作了一个升级包之后可以升级,但是无法识别到type-c. Log: 插 ...

  8. [RK3399][Android7.1] 调试笔记 --- DDR中clock相关配置

    OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55 把这个拎出来说是因为在调试ddr default rate的时候对这部分有些误区. dmc中 ...

  9. [RK3399][Android7.1] 调试笔记 --- Audio codec时钟源从BCLK1获取

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 需求: 默认codec的clock source是从I2S1的mclk获取,由于I2S0和I2S1的m ...

最新文章

  1. 他十年前的书在前端圈人手一本,豆瓣评分9.1。现在,王者归来了!
  2. 因“薪水太高”被欠薪3个月、后又遭解雇?程序员愤怒反击!
  3. 【阿里云API】 阿里云API调用的若干说明
  4. Hadoop伪分布安装及简单使用
  5. 标准非STL容器 : bitset
  6. 有上下界网络流问题汇总
  7. 【架构师】【数据库基础】【笔记 01】快速了解数据库系统的重要概念02
  8. django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)
  9. CIT 中文笔记完整版
  10. GDAL读写矢量文件——C#
  11. OpenCV精进之路(四):图像处理——图片的缩放和图像金字塔
  12. tensorflow 的 Session Exception
  13. Android 利用SurfaceView进行图形绘制
  14. 毕设题目:Matlab优化充电
  15. cocos creator-js-虚拟摇杆
  16. ASCALL码表对照表 最全、最成体系表格 与对比
  17. win10关闭计算机休眠,小编教您win10怎么关闭休眠 win10关闭系统休眠方法
  18. 阿里安全SQL注入检测 前五名队伍分享
  19. 怎样学好高中数学学好高中数学的技巧
  20. 超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作

热门文章

  1. 反向加薪,这是什么操作?
  2. Mysql8数据库如何给用户授权
  3. Beego generate命令
  4. MAC下如何打开程序和调出终端运行窗口
  5. 蜂狂健身-健身房是个好生意
  6. Java 通过GPIO控制LED灯的亮灭(一)
  7. python警告解决汇总
  8. Shell 如何判断字符串包含子字符串
  9. zys高性能服务框架
  10. 小学计算机课教学工作总结,小学信息技术教学工作总结三篇