在Android上实现WLAN的一点理解

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6376615

众所周知,Android 是基于Linux内核的,所以直接支持LinuxWLAN接口。WLAN的内核驱动是根据用户在UI上的设定动态加载的,通过ctrl_interfaceopenssl来实现WLAN的控制和安全性,TCPIP则基于WLAN的标准实现。

WLAN  Android上的体系构架如下:

Application Framework : base/wifi/java/android/net/wifi

                                WifiManager/WifiMonitor/WifiConfiguration …

Service Framework: base/services/java/com/android/server/

                                WifiService / WifiWatchdogService

JNI (Java Native Interface)

                                jni/android_net_wifi_Wifi.cpp

HAL (Hardware Abstract Layer)

                                hardware/libhardware/wifi/wifi.c

                                wpa_supplicant / ctrl_interface

Kernel driver

Android手机上打开WIFI的流程如下:

1)Application Framework: WifiManager

                                setWifiEnabled()

2)Service: WifiService

                                setWifiEnabled()

                                handleMessage() : MESSAGE_ENABLE_WIFI

3)JNI: android_net_wifi_Wifi.cpp :

                                JNINativeMethod:  loadDriver

                                android_net_wifi_loadDriver()

4)HAL : hardware/libhardware/wifi/wifi.c

                                wifi_load_driver()

5)Kernel : 加载内核驱动

 

WLAN的搜索流程如下:

1Application Framework: WifiManager

                                startScan()

2Service:

                WifiService::startScan()

                WifiNative::scanCommand();

3JNI: android_net_wifi_Wifi.cpp :

                                JNINativeMethod:  scanCommand / scanResultsCommand

                                android_net_wifi_scanCommand / android_net_wifi_scanResultsCommand

4HAL : hardware/libhardware/wifi/wifi.c

                                wifi_send_command : SCAN / SCAN_RESULTS

                        wpa_supplicant/driver_wext.c

                                wpa_driver_wext_scan() : SIOCSIWSCAN

5Kernel : WLAN 驱动处理相关接口的命令

WAPI是我国WLAN的国家标准----- GB 15629.11,并予以802.11i兼容,在Android上的实现只需增加相应的鉴权即可。

 

 

目录
相关文章
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
434 1
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
Java Shell 数据安全/隐私保护
Android8.1 MTK平台 WLAN热点定制
Android8.1 MTK平台 WLAN热点定制
195 0
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
532 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
242 0
android 多级下拉菜单实现教程 greendao使用
|
存储 API Android开发
深入剖析Android四大组件(四)——Messenger实现Android IPC
深入剖析Android四大组件(四)——Messenger实现Android IPC
146 2
|
监控 前端开发 Java
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
450 0
|
XML 开发工具 Android开发
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
304 0
Android自定义控件(十三)——实现CSDN搜索框文字提示容器