当前位置: 首页 > news >正文

因网站建设关闭的公告球队排名世界

因网站建设关闭的公告,球队排名世界,智能锁东莞网站建设,商标查询软件本文是对wifi扫描结果上报和获取过程的java层代码流程梳理总结。 我们先分析扫描成功的上报和获取过程。 一、WiFi扫描成功的上报和获取过程 WiFi扫描成功的上报和获取大致是由三条不连贯流程组成的,分别是通知framework和WifiTracker获取扫描结果以及应用主动获取…

本文是对wifi扫描结果上报和获取过程的java层代码流程梳理总结。

我们先分析扫描成功的上报和获取过程。

一、WiFi扫描成功的上报和获取过程

WiFi扫描成功的上报和获取大致是由三条不连贯流程组成的,分别是通知framework和WifiTracker获取扫描结果以及应用主动获取扫描结果。

1.framework获取保存扫描结果。大致的流程为:WificondControl-->WifiMonitor--> WificondScannerImpl-->WifiNative;

2.WifiTracker获取和保存扫描结果。大致的流程为:WificondControl-->WifiMonitor--> WificondScannerImpl-->WifiNative;

3.Settings应用获取扫描结果

下面我们看下代码的具体流程:

1 framework获取保存扫描结果

WificondControl.java

WifiMonitor.java

WificondScannerImpl.java

进入pollLatestScanData();

通过mWifiNative.getScanResults来从底层获取wifi扫描结果。

WifiNative.java

最后调用scannerImpl.getScanResults()从底层获扫描取数据。

2、WifiTracker获取和保存扫描结果

ScanRequestProxy.java

onResults()是底层完成扫描后的上报;

发送广播SCAN_RESULTS_AVAILABLE_ACTION通知WifiTracker扫描结果可获取

WifiTracker获取扫描数据
WifiTracker在这里接收到扫描结果获取的广播WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
 

 

这里调用了mWifiManager.getScanResults()获取扫描数据,然后调用updateAccessPoints(newScanResults, configs)刷新缓存的扫描数据;

packages\modules\Wifi\framework\java\android\net\wifi\WifiManager.java

WifiManager.java

service是IWifiManager 类型的aidl文件,具体实现在packages\modules\Wifi\service\java\com\android\server\wifi\BaseWifiService.java

IWifiManager mService;
public class BaseWifiService extends IWifiManager.Stub {

 具体实现在packages\modules\Wifi\service\java\com\android\server\wifi\WifiServiceImpl.java

WifiServiceImpl.java

ScanRequestProxy.java

这里看看mLastScanResults怎么来的。

这里可以看到mLastScanResults就是ScanRequestProxy在发送广播时赋值的。所以WifiTracker获取的扫描数据是framwork缓存的值。

WifiTracker缓存扫描数据

这个mInternalAccessPoints会在5.3中用到的。

3、Settings应用获取扫描结果

在生命周期函数onStart()处理Wifi的状态;

 

 

这里的mInternalAccessPoints 则是在WifiTracker保存的。

二、扫描失败结果上报

前面只分析了扫描成功后的结果的上报,这里再分析下扫描失败部分的上报流程。扫描命令下发失败、扫描过程中失败,扫描结果获取超时。

1 扫描命令下发失败。

WifiServiceImpl.java

这里调用了runWithScissonrs()。这是一个同步等待其他线程handler的执行的方法,超时后就会返回false。

这里如果超时就返回false就发送广播sendFailedScanBroadcast(),通知扫描失败。

再看下scanSuccess.value结果。

ScanRequestProxy.java
 

这里再一次进行了扫描之前的判断并发送广播通知扫描失败。下面继续跟踪扫描的方法走。

这里的方法中通过replyFailed()通知扫描失败。

WifiScanner.java

这里移除对应的listener,如果是failed,就回调listener的onFailure方法,将失败原因和描述传递打印出来。

ScanRequestProxy.java

后面就进入WificondScannerImpl中的startSingleScan().

2 扫描过程中失败

WificondScannerImpl.java

方法中对mWifiNative.scan()的返回结果做了处理,

handleScanTimeout()方法是当下发扫描命令成功后会设立一个15s的倒计时,若15s没有失败或者成功上报就会上报一个失败,最终触发广播通知

 

3 扫描结果获取失败

WificondControl.java,

 

WificondScannerImpl.java

文章转载:

Android 9.0 WiFi 扫描结果上报和获取流程

http://www.zhongyajixie.com/news/25841.html

相关文章:

  • 网页制作成品网站国际军事最新头条新闻
  • java有没有做项目的网站百度推广一年大概多少钱
  • 苏州做网站的哪个公司比较好软文发布软件
  • 关于做网站常见的问题网址seo关键词
  • 网站开发的主题轻松seo优化排名
  • wordpress 下一篇文章快速seo关键词优化方案
  • 做网站对电脑要求高吗怎么做起泡胶
  • 商标转让价格一般多少钱seo技术顾问阿亮
  • 在外汇局网站做登记报告必应搜索引擎怎么样
  • 跨境平台哪个最好做?seo外链建设的方法有
  • 怎样做公司的网站首页seo优化方式包括
  • 网站开发需求问卷新乡网站推广
  • 网站正能量不用下载直接进入主页可以吗b站推广网站2024年
  • 在国外做网站赌博犯法吗百度推广多少钱一天
  • 做加盟的网站建设杭州网站推广与优化
  • 怎么区分营销型网站某产品网络营销推广方案
  • 用django怎么做网站重庆seo排名软件
  • 北京度seo排名小红书seo是什么
  • 公司网站首页制作教程郑州网站设计有哪些
  • 网站建设APP的软件南宁网络推广培训机构
  • 新余哪有做网站的公司网络营销案例
  • vs中做网站怎么设置图片标准国际最新消息
  • 做特卖的网站国外搜索网站排名
  • 外贸网站logo搜外友链
  • jsp动态网站开发参考文献软件开发工资一般多少
  • 如何制作奶茶 简单seo视频教程我要自学网
  • 电脑装机网站搜外滴滴友链
  • 微网站 方案微信软文范例
  • 一级造价师注册查询系统平台入口厦门seo蜘蛛屯
  • 杭州app开发价格表seo优化员