2019独角兽企业重金招聘Python工程师标准>>>

Wifi 网卡状态

1.    WIFI_STATE_DISABLED: WIFI网卡不可用

2.    WIFI_STATE_DISABLING: WIFI正在关闭

3.    WIFI_STATE_ENABLED:WIFI网卡可用

4.    WIFI_STATE_ENABLING:WIFI网卡正在打开

5.    WIFI_STATE_UNKNOWN:未知网卡状态

WIFI 访问网络需要的权限

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE">

</uses-permission>修改网络状态的权限

<uses-permission

android:name="android.permission.CHANGE_WIFI_STATE">

</uses-permission>修改WIFI状态的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">

</uses-permission>访问网络权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">

</uses-permission>访问WIFI权限

WIFI 核心模块

n  WifiService

由SystemServer启动的时候生成的ConnecttivityService创建,负责启动关闭wpa_supplicant,启动和关闭WifiMonitor线程,把命令下发给wpa_supplicant以及跟新WIFI的状态

n  WifiMonitor

负责从wpa_supplicant接收事件通知

n  Wpa_supplicant

1、读取配置文件

2、初始化配置参数,驱动函数

3、让驱动scan当前所有的bssid

4、检查扫描的参数是否和用户设置的想否

5、如果相符,通知驱动进行权限 认证操作

6、连上AP

n  Wifi驱动模块

厂商提供的source,主要进行load firmware和kernel的wireless进行通信

n  Wifi电源管理模块

主要控制硬件的GPIO和上下电,让CPU和Wifi模组之间通过sdio接口通信

Wifi工作步骤

n  Wifi模块初期化

n  Wifi启动

n  查找热点(AP)

n  配置AP

n  配置AP参数

n  Wifi连接

n  IP地址配置

Wifi模块代码总结

n  Wifi Application代码

packages/apps/Settings/src/com/android/settings/wifi

n  Wifi Framework

frameworks/base/wifi/java/android/net/wifi

frameworks/base/services/java/com/android/server

n  Wifi JNI

frameworks/base/core/jni/android_net_wifi_Wifi.cpp

n  Wifi Hardware

hardware/libhardware_legacy/wifi/wifi.c

n  Wifi tool

external/wpa_supplicant

n  Wifi kernel

net/wireless     drivers/wlan_sd8688       arch/arm/mach-pxa/wlan_pm.c

Wifi模块的初始化:

在 SystemServer 启动的时候,会生成一个ConnectivityService 的实例, ConnectivityService 的构造函数会创建WifiService,WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心。WifiService 负责启动关闭wpa_supplicant、启动关闭WifiMonitor 监视线程和把命令下发给wpa_supplicant,而WifiMonitor 则负责从wpa_supplicant 接收事件通知。

Wifi模块的启动:

WirelessSettings 在初始化的时候配置了由WifiEnabler 来处理Wifi 按钮,

当用户按下Wifi 按钮后,Android 会调用WifiEnabler 的onPreferenceChange,再由WifiEnabler调用WifiManager 的setWifiEnabled 接口函数,通过AIDL,实际调用的是WifiService 的setWifiEnabled 函数,WifiService 接着向自身发送一条MESSAGE_ENABLE_WIFI 消息,在处理该消息的代码中做真正的使能工作:首先装载WIFI 内核模块(该模块的位置硬编码为"/system/lib/modules/wlan.ko" ), 然后启动wpa_supplicant ( 配置文件硬编码为"/data/misc/wifi/wpa_supplicant.conf"),再通过WifiStateTracker 来启动WifiMonitor 中的监视线程。

查找热点(AP):

(Wifi开启)中讲到Wifi模块开启后会对外发送WIFI_STATE_CHANGED_ACTION。WifiLayer中注册了Action的Receiver。当WifiLayer收到此Action后开始scan的流程,具体如下

当wpa_supplicant 处理完SCAN 命令后,它会向控制通道发送事件通知扫描完成,从wifi_wait_for_event 函数会接收到该事件,由此WifiMonitor 中的MonitorThread 会被执行来出来这个事件:

配置 AP 参数:

当用户在 WifiSettings 界面上选择了一个AP 后,会显示配置AP 参数的一个对话框:

Wifi连接:


 

 

IP地址的配置:

 

 


转载于:https://my.oschina.net/u/994235/blog/112931

android wifi工作流程相关推荐

  1. Android -- Wifi启动流程分析

    Android -- Wifi启动流程分析 Android网络各个模式中,Wifi应该是目前最常用的一种网络方式了:下面就简单介绍下Android中Wifi的启动流程. 当我在Setting菜单里点击 ...

  2. 一篇文章看明白 Android PackageManagerService 工作流程

    Android - PackageMangerService 分析 相关系列 一篇文章看明白 Android 系统启动时都干了什么 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制 ...

  3. Android之wifi工作流程

    Android Wifi的工作流程 一.WIFI工作相关部分 Wifi 网卡状态 1.    WIFI_STATE_DISABLED:WIFI网卡不可用 2.    WIFI_STATE_DISABL ...

  4. Android WiFi —softAP流程分析

    Android WiFi - Ap功能实现与源码分析 0. 前言 wifiAp的ip WifiAp的config分析 2.1 默认的config 2.2 修改wifiAp的config配置流程 开启/ ...

  5. android wifi连接流程,(九十三) Android O 连接WiFi AP流程梳理续——保存网络-Go语言中文社区...

    前言: 之前在(五十五)Android O 连接WiFi AP流程梳理 梳理连接流程梳理到SupplicantStaNetworkHal 然后没梳理的下去,现在继续梳理下. 之前梳理的时序图 1.流程 ...

  6. android如何开发ui服务,Android UI-对Activity工作流程的理解(一)

    概述 在android studio创建一个新项目的时候,或者初学者在刚踏入android开发的时候,都会在首先创建一个MainActivity.根据一般的理解,Activity的就相当于一个界面的入 ...

  7. android设备怎么支持8021x,android WiFi ASSOC_REJECT 流程跟踪

    Android设备在于AP关联时,如果AP返回关联拒绝帧,Android设别会把AP加入黑名单中. 黑名单中的设备将会在扫描时,延时一段时间放在后面处理. 代码以及log基于SDM450, Andro ...

  8. android wifi wps 流程,android中WiFi wps连接方式

    Android 个人热点 wps方式连接流程 android手机开启个人热点时,可以选择WPS连接方式 个人热点端 连接端 当个人热点端选择按钮时,连接端只需要点击WPS按钮即可连接:当个人热点端选择 ...

  9. android wifi驱动流程,高通Android wifi驱动移植-SDIO

    环境用的是android2.3系统,wifi是BCM4329,接口是SDIO,Android4.0在步骤上略有不同. 1.首先了解SDIO的一些相关知识: SDIO有两端,其中一端是HOST端,另一端 ...

最新文章

  1. 美团和拼多多是如何拿下长尾市场的
  2. 《JAVA编程那点事儿》读书笔记(二)——类和对象
  3. 计算机在线考试系统的参考文献,基于JSP的在线考试系统
  4. 磁盘df看还有剩余空间,但是创建文件时报错,提示磁盘已经满问题解决
  5. 【今日CV 计算机视觉论文速览】Fri, 22 Feb 2019
  6. linux 创建文件夹快捷方式
  7. MySql实战篇:写一个简单的存储过程,完成订单定时任务
  8. python定位地理位置_python 实现ip定位地址
  9. R语言数据异常值处理
  10. Android CPU架构之ARM和X86
  11. 2022 东北四省赛 VP记录/补题
  12. 360签名工具 linux,360apk签名工具下载
  13. Hive beeline常用操作
  14. 【Matlab系列】MATLAB中显示输出数据的四种方式
  15. Android设置状态栏字体深色,Android实现修改状态栏背景、字体和图标颜色的方法...
  16. 华为S2700以及S5700系列交换机 配置(详细)
  17. OA无纸化政府办公原笔迹电子签名解决方案
  18. 微信小程序用户盒子、宫格列表(CSS)
  19. 这200道java大厂面试题全部掌握,“面试”想去哪就去哪
  20. JAVA|编写西游记人物类

热门文章

  1. bipush java,Java Opcodes.BIPUSH屬性代碼示例
  2. iis php 数据库乱码,如何解决php插入数据乱码问题
  3. myeclipse10.1破解方法
  4. oracle having用法
  5. 9适应之力加多少攻击_剑盾铠之孤岛DLC新增内容大全! 宝可梦史上第一款DLC到底香不香(含试玩视频)...
  6. sublime搭建python开发环境_使用sublime搭建python开发环境
  7. 蚁剑特征性信息修改简单过WAF
  8. redis集群的三种模式
  9. 微服务架构---幂等机制
  10. Vue学习(vuex)-学习笔记