WLAN无法自动打开问题分析
问题现象和背景
1.Wifi关闭
2. 设置->网络和互联网->WLAN->WLAN偏好设置->自动开启WLAN打开(前提要求打开位置信息中wlan随时扫描)
3. 预期结果:扫描到之前连接过的热点后,wifi会自动打开
实际结果:wifi未能自动打开
原因分析:
WakeupController中注册ScanListener,监听并处理随时扫描上报的scan result,上报的扫描结果符合判定要求后,会enablewifi。
378 private void handleScanResults(Collection<ScanResult>scanResults) { 379 if (!isEnabledAndReady()) { 380 Log.d(TAG, "Attempted to handleScanResults while not enabled"); 381 return; 382 } 383 384 // only count scan as handled if isEnabledAndReady 385 mNumScansHandled++; 386 if (mVerboseLoggingEnabled) { 387 Log.d(TAG, "Incoming scan #" + mNumScansHandled); 388 } 389 390 // need to show notification here in case user turns phone on while wifi is off 391 mWakeupOnboarding.maybeShowNotification(); 392 393 // filter out unknown networks 394 Set<ScanResultMatchInfo>goodNetworks = getGoodSavedNetworksAndSuggestions(); 395 Set<ScanResultMatchInfo>matchInfos = toMatchInfos(scanResults); 396 matchInfos.retainAll(goodNetworks); 397 398 mWakeupLock.update(matchInfos); 399 if (!mWakeupLock.isUnlocked()) { 400 return; 401 } 402 403 ScanResultnetwork = mWakeupEvaluator.findViableNetwork(scanResults, goodNetworks); 404 405 if (network != null) { 406 Log.d(TAG, "Enabling wifi for network: " + network.SSID); 407 enableWifi(); 408 } 409 }
之所以一直没有触发,是因为WakeupController中只是注册了scanlistener,并没有发起scan的动作,所以不会有scan result上报
调试发现,当上层有应用或者系统网络定位发起wifi scan请求后,芯片才会执行scan动作并上报,WakeupController接收扫描结果并判断,符合要求后在handleScanResults中enablewifi
复测方法:
安装wifiservice apk,保证上层能成功发起scan动作后,可成功自动打开wifi
相关log:
07:32:46.591639 1085 7181 I WifiService: setWifiEnabled package=com.android.settings uid=1000 enable=false----关闭wlfi
07:37:21.682052 1085 1128 I WifiService: startScan uid=10136-----com.jhj.dev.wifi apk发起扫描
07:37:21.685222 1085 1314 V WifiScanRequestProxy: Foreground scan app request [10136, com.jhj.dev.wifi]
07:37:21.685321 1085 1314 I WifiScanRequestProxy: Scan request from com.jhj.dev.wifi throttled
07:37:25.962909 1085 1314 D WakeupLock: Found network in lock: "iPhone"----此时扫描到之前连接过的热点,但是被lock住,未释放(有10mins的lock time,也就是距离上次连接10分钟内,不可自动打开)
07:41:05.492517 1085 1314 D WakeupLock: Removed network from lock: "iPhone"-----此时到达unlock time
07:43:05.719132 1085 1314 D WakeupController: Enabling wifi for network: iPhone----开始打开wifi
07:43:07.930226 1085 1314 D SupplicantStaIfaceHal: connectToNetwork "iPhone"WPA_PSK----主动连接
07:43:08.183816 1792 12387 D DhcpClient: Received packet: 66:b6:ef:9b:29:fa ACK: your new IP /172.20.10.2, netmask /255.255.255.240, gateways [/172.20.10.1] DNS servers: /172.20.10.1 , lease time 85536---获取dhcp
WLAN无法自动打开问题分析相关推荐
- ajax请求成功之后,自动打开一个空白页面,并打印出了返回内容
一.问题描述 ajax请求成功之后,自动打开一个空白页面,并打印出了返回内容,返回值是规定的success内容:{code: "200", msg: "请求成功" ...
- phpstorm 不能自动打开上次的历史文件
问题产生的原因:可能是电脑非正常关机,导致phpstrom 无法正常关闭. 一开始我以为是配置上那里出现了问题,所以直接就把配置删除了,然后生成了默认配置.发现还是无法解决问题.然后一个个配置查阅过去 ...
- Window10总是自动打开网络代理的解决方案法
文章目录 1.问题分析 2. 解决方案 2.1 选择防护中心 2.2 开启自定义防护 2.3 设定防护规则 3. 效果展示 1.问题分析 就是这货,总是自动打开导致无法上网. 2. 解决方案 下载杀毒 ...
- 轻松实现网页中通过链接跳转到QQ聊天界面,通过链接加QQ群,自动打开聊天对话框等等,包含电脑版和手机版的实现,示例部分Android和iOS的代码
通过链接打开对话框: 打开qq聊天窗口的方法 <a href="http://wpa.qq.com/msgrd?v=3&uin=1450612626&site=qq&a ...
- win7计算机右键属性桌面进程重启,Win764位系统电脑自动重启的分析与解决步骤...
Win764位系统电脑自动重启的分析与解决步骤 系统失败导致自动重启 1.在桌面上"我的电脑"鼠标右键,弹出的快捷菜单单击"属性"命令. 2.打开"系 ...
- 根据课表自动打开网课上课平台——Python实现
前言 自疫情爆发以来啊,对大学牲来讲,上网课已基本成为司空见惯的事情了,在看的各位谁还没上过个网课呢.抛开事实不谈,上网课的效率还是比较高的(手动狗头). 那有些游手好闲,啊不对,是热爱学习的小可爱( ...
- python生成表格并显示在浏览器_python自动打开浏览器下载zip并提取内容写入excel...
前言 佬们轻喷,里面有些代码都是现学现写的,一些细节没处理好的地方还请指出来~~~ 首先贴上效果图:有些部分我没有放进来,比如浏览器的启动,但我详细聪明的你们那个玩意肯定一学就会.有些东西我没放进来 ...
- 自动打开国航APP并签到
分析需求 1.需求 国航APP签到可以送里程,写一个Demo自动打开国航,并且跳转签到页面,自动签到 2. 主要步骤 启动国航APP 自动点击:(1)点击底部button跳转到签到页面:(2)点击&q ...
- python 自动抓取分析房价数据——安居客版
引言 中秋回家,顺便想将家里闲置的房子卖出去.第一次卖房,没经验,于是决定委托给中介.中介要我定个价.最近几年,房价是涨了不少,但是长期在外,也不了解行情.真要定个价,心里还没个数.网上零零散散看了下 ...
最新文章
- JVM经常使用的调优參数
- 三个单词说的英语口语
- echarts - 使用echarts过程中遇到的问题(pending...)
- 大数据 java 代码示例_功能Java示例 第7部分–将失败也视为数据
- 解决git关联的的文件颜色、小图标
- 汉子编码比字母编码长_字母/博客作者编码问题(使用动态编程)
- 模拟导入系统通讯录5000+手机号 校验大量数据处理
- [前端]多线程在前端的应用——Javascript的线程
- 【Kafka】kafka 脚本kafka-configs.sh用法解析
- 查看Windows系统的开机、关机时间、开机时长等信息
- jQuery图片水平滑动延迟加载动画
- pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
- 数据中心局部高热处理方案
- 借助winrats软件实现BEKK模型
- GIS中坐标系的基本概念
- 生物信息学研究生课程-1
- 苹果商店上架流程_苹果app上架流程
- 钉钉微应用H5的调试方法
- Python网速监控
- 扬州大学c语言作业,扬州大学c语言0600706期末试题