Android-O wifi扫描机制及功耗优化

本文详细解析了Android O中的WiFi扫描场景,包括亮屏与熄屏状态下不同场景的扫描策略,如固定扫描、二进制指数退避扫描、PNO扫描等。此外,还探讨了无保存网络时的扫描逻辑。最后,提出了针对不同场景的功耗优化建议,如减少不必要的扫描,以延长设备待机时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 Android O wifi扫描场景

Android O上的wifi扫面场景可以归结为以下四种:

1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。

2、 亮屏情况下,非Wifi settings界面,二进制指数退避扫描,退避算法:interval*(2^n), 最小间隔min=20s, 最大间隔max=160s.

3、 灭屏情况下,有保存网络时,若已连接,不扫描,否则,PNO扫描,即只扫描已保存的网络。最小间隔min=20s,最大间隔max=60s. (详见Android wifi PNO扫描流程(Android O)

4、 无保存网络情况下,固定扫描,间隔为5分钟,用于通知用户周围存在可用开放网络。

另外,当打开wifi时、进入wifi settings时、亮屏时、灭屏时、链接状态变化时,都会触发扫描。

其中场景1的逻辑在中WifiTracker中控制,2~3的逻辑主要在WifiConnectivityManager中控制,场景4的逻辑在WifiStateMachine中控制。

下面,我们看一下代码逻辑如何实现扫描机制的各种场景(wifi已打开)。

二、 Android O wifi扫描代码实现

 

1、 亮屏情况下,在Wifi settings界面,固定扫描,时间间隔为10s。

1>. packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java

public void onStart()

    mWifiTracker.startTracking(); //startTracking for scan in a certain interval 

public void onStop()

    mWifiTracker.stopTracking(); //stop certain_interval_scan

 

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

public void startTracking()

    resumeScanning();

 

public void resumeScanning()

    if (mScanner == null) {

        mScanner&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值