第一章 国内下载AOSP最新源码的方法
第二章 下载AOSP WiFi相关的代码
第三章 将源码导入Android Studio(无需编译idegen)
本篇介绍一下Android Wi-Fi系统架构,提供给应用使用Wi-Fi功能的API,以及一些硬件和无线电相关常识。
WI-FI(Wireless Fidelity),是一种可以将个人电脑、手持设备等终端以无线方式互相连接的技术,由澳洲政府的研究机构CSIRO在20世纪90年代发明的,发明人是John O’Sullivan,被媒体称为”Wi-Fi之父“。 WI-FI是一个无线网路通信技术的品牌,由Wi-Fi联盟所持有,组成部分包括基本服务单元、分配系统、接入点、扩展服务单元和关口等。目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性。Wi-Fi的样式有很多类型,有无线的卡,还有连接电脑的等等。
知乎Wi-Fi介绍
在无线局域网WLAN发明之前,人们要想通过网络进行联络和通信,必须先用物理线缆-铜绞线组建一个电子运行的通路,为了提高效率和速度,后来又发明了光纤。当网络发展到一定规模后,人们又发现,这种有线网络无论组建、拆装还是在原有基础上进行重新布局和改建,都非常困难,且成本和代价也非常高,于是WLAN的组网方式应运而生。 无线局域网络英文全名:Wireless Local Area Networks;简写为:WLAN。它是相当便利的数据传输系统,它利用射频(Radio Frequency; RF)的技术,使用电磁波,取代旧式碍手碍脚的双绞铜线(Coaxial)所构成的局域网络,在空中进行通信连接,使得无线局域网络能利用简单的存取架构让用户透过它,达到“信息随身化、便利走天下”的理想境界。
知乎无线局域网介绍
记住一点,WI-FI是一个无线网路通信技术的品牌,由Wi-Fi联盟所持有。在中国大陆地区销售的具有无线连接功能的设备上要遵守中国通信管理局的认证要求,不允许出现Wi-Fi商标,所以大陆手机都是显示WLAN。
AOSP > 开发 > 连接性: https://source.android.google.cn/devices/tech/connect/wifi-overview?hl=zh-cn
Android 提供默认 Android 框架实现,其中包括对各种 WLAN 协议和模式的支持,这些协议和模式包括:
WLAN 基础架构 (STA)
网络共享模式或仅限本地模式下的 WLAN 热点 (Soft AP)
WLAN 直连(P2P)
WLAN 感知 (NAN)
WLAN RTT (IEEE 802.11mc FTM)
使用 Wi-Fi 服务的应用通过 Binder 直接与各种 Wi-Fi 服务进行通信。Wi-Fi 服务在系统服务中运行,并通过 HIDL 与 HAL 进行通信。下图显示了 Android Wi-Fi 堆栈的常规结构。
应用代码位于应用框架级别,它使用各种 android.net.wifi API 与 Wi-Fi 框架和硬件进行交互。此代码在内部通过 Binder IPC 机制调用 WLAN 进程。
Wi-Fi 服务在系统服务中运行,这类服务位于 frameworks/opt/net/wifi 中。Wi-Fi 服务通过 HIDL 与 Wi-Fi HAL 进行通信。
WLAN 服务有很多种:
WLAN 服务:用于控制 WLAN 基础架构模式(包括 STA 和 AP)的主要机制。
WLAN 点对点服务:管理 WLAN 直连模式。
WLAN 感知服务:管理 WLAN 感知模式。
Wi-Fi RTT 服务:管理 IEEE 802.11mc FTM 功能。
此外,Wi-Fi 框架还包含一个独立的 wificond 进程,该进程位于 system/connectivity/wificond 中。wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信。
Wi-Fi 框架具有三个 Wi-Fi HAL 表面,分别由三个不同的 HIDL 软件包表示:供应商 HAL、客户端 HAL 和 Hostapd HAL。
如需详细了解各种 HAL 的实现,请参阅 Wi-Fi HAL。
Android 开发者 > 文档 > 指南 > WLAN:https://developer.android.google.cn/guide/topics/connectivity/companion-device-pairing?hl=zh-cn
从 Android 10 开始,Wi-Fi 基础架构引入两个全新 API 表面:适用于互联网连接的 Wi-Fi 建议 API 和适用于对等连接的 Wi-Fi 网络请求 API。
扫描流程分为三步:
使用 WLAN 直连 (P2P) 技术,可以让具备相应硬件的 Android 4.0(API 级别 14)或更高版本设备在没有中间接入点的情况下,通过 WLAN 进行直接互联。使用这些 API,您可以实现支持 WLAN P2P 的设备间相互发现和连接,从而获得比蓝牙连接更远距离的高速连接通信效果。对于多人游戏或照片共享等需要在用户之间共享数据的应用而言,这一技术非常有用。
WLAN P2P API 包含以下主要部分:
- 支持您发现、请求,以及连接到对等设备的方法(在 WifiP2pManager 类中定义)。
- 支持您获知 WifiP2pManager 方法调用成功与否的侦听器。调用 WifiP2pManager 方法时,每个方法均可收到作为参数传入的特定侦听器。
- 通知您 WLAN P2P 框架检测到的特定事件(例如连接断开或新发现对等设备)的 Intent。
通常,您可以一起使用 API 的这三个主要组件。例如,您可以为针对 discoverPeers() 的调用提供 WifiP2pManager.ActionListener,这样您便可以通过 ActionListener.onSuccess() 和 ActionListener.onFailure() 方法来接收通知。如果 discoverPeers() 方法发现对等设备列表已经更改,则还将广播 WIFI_P2P_PEERS_CHANGED_ACTION Intent。
WLAN 感知功能使搭载 Android 8.0(API 级别 26)及更高版本的设备能够发现彼此并直接进行连接,它们之间无需任何其他类型的连接。WLAN 感知也称为“邻近感知网络”(NAN)。
WLAN 感知网络的工作原理是与邻近设备组建集群,如果设备是某个区域的第一个设备,则创建一个新集群。此集群行为适用于整个设备,由 WLAN 感知系统服务管理;应用无法控制集群行为。应用使用 WLAN 感知 API 与 WLAN 感知系统服务通信,后者管理设备上的 WLAN 感知硬件。
应用可通过 WLAN 感知 API 执行以下操作:
与蓝牙连接相比,WLAN 感知网络连接支持的覆盖范围更广,支持的吞吐率更高。这些类型的连接适用于在用户之间共享大量数据的应用,例如照片共享应用。
您可以利用 Wi-Fi RTT(往返时间)API 提供的 Wi-Fi 位置功能测量距附近支持 RTT 的 Wi-Fi 接入点和 Wi-Fi 感知对等设备的距离。
如果您测量与三个或更多接入点的距离,可以使用多点定位算法来预估与这些测量值最相符的设备位置。结果通常可以精确到 1 至 2 米。
凭借这种精准度,您可以开发基于精确位置的服务,例如室内导航、无歧义语音控制(例如,“打开这盏灯”)以及基于位置的信息(例如,“此产品是否有特别优惠?”)。
请求发出设备无需连接到接入点即可通过 Wi-Fi RTT 测量距离。为了保护隐私,只有发出请求的设备能够确定距接入点的距离,接入点没有此类信息。前台应用执行 Wi-Fi RTT 操作不受限制,但后台应用执行此类操作时会受限。
Wi-Fi RTT 和相关精确时间测量 (FTM) 功能根据 IEEE 802.11mc 标准指定。Wi-Fi RTT 需要 FTM 提供的精确时间测量,因为前者通过测量数据包在设备之间往返所需的时间,并将该时间乘以光速来计算两个设备之间的距离。
无线频谱是一种有限资源,每个国家在军用和民用无线电频段有所差异,但民用无线电频段大体上遵循国际电信联盟定义的ISM频段。ISM频段 是什么,有什么用呢?
ISM(工业、科学、医疗)频段为国际电信联盟(ITU)《无线电规则》定义的指定无线电频段。这些频段是为电信之外的其他射频用途挪出的频段。因此, ISM频段虽然理论上可用于电信用途,但使用ISM频段的电信设备必须能够承受来自其他射频及微波技术的干扰,如来自微波炉、射频加热及其他可能生成电磁干扰(EMI)的设备的干扰。虽然国际电信联盟已确定了指定频段,但各个国家所规定的ISM频段并不统一。ISM频段的最初目的并非用于通信,但是现在很多短距离、低功耗、免许可(或免许可容错)通信系统均在该频段内运行。除通信之外,ISM频段的最常见用途为工业和家庭用感应加热,工业和家庭用微波加热,以及透热疗法、高温疗法和射频/微波消融等医疗用射频及微波加热。此外,由于ISM频段可随时使用,而且针对该频段下的频率存在一些低价的无线集成电路,因此最近开发的某些雷达系统也使用ISM频段,尤其2.4GH ISM频段。ISM频段的最常见日常用途为WiFi、蓝牙、Zigbee、无线电话、RFID及NFC等低功耗及短距离通信。在美国,由于大多数WiFi和蓝牙通信以及最近越来越普及的5GHz WiFi系统都使用ISM频段,因此很多人对该频段都非常熟悉。此外,还有许多常用RFID和NFC系统使用13.553MHz ~13.567MHz ISM频段内的13.56MHz频率,而且还有许多信用卡、安全接入、人员识别及无线支付系统也使用此类技术。
目前WI-FI使用下面两个频段:
每个频道又按照一定的带宽划分为若干信道。
Wi-Fi信号的“频段”和“信道”有何区别?
L1 对应wpa_supplicant里面的关联;
L2对应wpa_supplicant里面的四次握手(对于加密热点,OPEN认证的关联上就算连上L2了);
L3对应IpClient DHCP成功。
以上就是今天要讲的内容,本文简单介绍了Android WiFI的一些基础知识,由于Wi-Fi整个功能涉及面非常广也非常复杂,很多东西这里一笔带过了。最后希望能帮到大家,觉得对你有帮助的话可以点个赞或关注一下。