在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开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
Android开发
Android实现调用系统相机录像及实现录音
Android实现调用系统相机录像及实现录音
543 0
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
364 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
存储 Dart Java
【Flutter】packages思维以及使用Java添加Android平台特定的实现在Flutter框架里的体现和运用
【Flutter】packages思维以及使用Java添加Android平台特定的实现在Flutter框架里的体现和运用
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
299 1
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
155 0
android 多级下拉菜单实现教程 greendao使用
|
XML 开发工具 Android开发
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
253 0
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
|
XML Android开发 数据格式
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
409 0

相关产品

  • 云迁移中心