前言
最后更新于:2022-04-02 06:00:47
本系列文章只为学习交流,切勿商业装载,查看原文可查看作者[官方博客](http://blog.csdn.net/Innost)
### 内容简介
本书是经典畅销书“深入理解Android”系列的新作,由资深Android系统专家邓凡平先生撰写。从通信专业知识和Android系统代码实现的角度,对Netd、Wi-Fi、NFC和GPS等模块的代码进行深入的剖析,旨在深刻揭示其实现原理和工作流程。其中涉及大量通信相关的专业知识,因此特意邀请全志和高通等著名芯片公司的资深专家担任技术审校。本书从实际应用的需求出发,适合所有Android系统工程师、Android应用开发工程师和BSP开发工程师阅读。
全书共9章。第1章介绍本书的内容组成、工具使用以及参考源码的下载方法。第2章介绍Netd及相关的背景知识。第3~5章介绍Wi-Fi基础知识,重点分析了wpa_supplicant的实现,以及Android平台中特有的Wi-Fi服务模块WifiService。第6~7章讲解了Wi-Fi联盟推出的两项重要技术Wi-Fi Simple Configuration和Wi-Fi P2P,以及它们在Android平台中的代码实现。第8章详细介绍了NFC基础知识,以及NFC在Android平台中的代码实现。第9章讲解了GPS原理及Android平台中的位置管理服务架构。
### 本书主要内容及特色
本书所讲解的Wi-Fi、NFC以及GPS模块的背后都涉及非常多的专业知识,例如与Wi-Fi相关的802.11协议、Wi-Fi Alliance(Wi-Fi联盟)定义的Wi-Fi Simple Configuration和Wi-Fi P2P协议、NFC Forum定义的一整套与NFC相关的协议、与GPS相关的卫星导航原理、AGPS和OMA-SUPL协议等。显然,如果不了解这些专业知识,就不可能真正掌握它们在Android平台中的代码实现。
考虑到这些专业知识的重要性,本书在讲解Android平台中Wi-Fi、NFC和GPS模块的实现之前,先重点介绍与代码相关的专业知识。当然,这些专业知识内容如此丰富,在一本书中无法全部涵盖。为了方便读者进一步深入学习,本书每章的最后都会列举笔者在撰写各章时所阅读的参考资料。
本书是笔者“深入理解Android”系列的第三本书,也是该系列专题卷的第二本书[①]。本书将关注Android平台中非常重要并且专业背景知识很浓厚的Wi-Fi、NFC和GPS等模块。相比笔者早前所撰写的卷I、卷II,本书和它们的区别在于:
卷I和卷II的内容几乎没有涉及到什么专业知识。读者只要认真研读代码,提高代码阅读能力之后就可以轻松掌握它们。
而本书所讲解的Wi-Fi、NFC以及GPS模块的背后都有着非常多的专业知识,例如与Wi-Fi相关的802.11协议、Wi-Fi Alliance定义的Wi-Fi Simple Configuration和Wi-Fi P2P协议、NFC Forum定义的一整套与NFC相关的协议、与GPS相关的卫星导航原理、AGPS和OMA-SUPL协议等等等等。显然,如果不了解这些专业知识,读者将不可能真正掌握它们在Android平台中的代码实现。
考虑到这些专业知识的重要性,本书在讲解Android平台中Wi-Fi、NFC和GPS模块的实现之前,都将先行重点介绍与代码相关的专业知识。当然,这些专业知识内容如此丰富,笔者在一本书中无法全部涵盖它们。为了方便读者进一步深入学习,本书每章的最后都会列举出笔者在撰写它们时所阅读的参考文献。
以下是本书的内容概述。
※ 第1章介绍本书的内容组成、使用的工具以及参考源码的下载方法。
※ 第2章介绍Netd以及相关的背景知识。
※ 第3章介绍Wi-Fi基础知识。Wi-Fi是本章的重点,而且也是当下最热门的技术。
※ 第4章介绍wpa_supplicant,它是Wi-Fi领域中最核心的软件实现。
※ 第5章介绍WifiService,它是Android平台中特有的Wi-Fi服务模块。
※ 第6章和第7章介绍Wi-Fi Alliance推出的两项重要技术——Wi-Fi Simple Configuration和Wi-Fi P2P,以及它们在Android平台中的代码实现。
※ 第8章介绍NFC背景知识以及NFC在Android平台中的代码实现。NFC也是历史比较悠久的技术,希望它能随着Android的普及而走向大众。
※ 第9章介绍GPS原理及Android平台中的位置管理服务架构。
附录为笔者和审稿专家之一的吴劲良先生关于本书定位、学习方法等方面的讨论。相信这些讨论内容能引起读者的共鸣。
本书通过理论和代码相结合的方式进行讲解,旨在引领读者一步步了解Wi-Fi、NFC和GPS模块的工作原理。总之,笔者希望读者在阅读完本书后能有以下收获。
※ 初步掌握Wi-Fi、NFC和GPS的专业知识。
※ 根据其实现代码,进一步加深对这些专业知识的理解。
**读者对象**
适合阅读本书的读者包括:
※ Android系统开发工程师
系统开发工程师常常需要深入理解系统的运转过程,而本书所涉及的内容正是他们在工作和学习中最想了解的。对具体模块感兴趣的读者也可单刀直入,阅读相关章节。
※ Wi-Fi、NFC或GPS的BSP开发工程师
BSP开发工程师更需要对Android平台中这些模块的工作原理及背景知识有深入的理解。虽然本书没有介绍这些模块在Linux Kernel层的实现,但了解它们在用户空间的工作流程也将极大帮助BSP开发工程师拓展自己的知识面。
※ 对Wi-Fi、NFC和GPS感兴趣的在校高年级本科生、研究生和其他读者
在掌握理论的基础上,如何在实际代码中来实现或使用它们也许是众多学子最想知道的。希望这本理论与代码实现深度结合的书籍会助您一臂之力。
**如何阅读本书**
本书是一本专业知识和代码实现相结合的书籍,所以读者在阅读时应注意以下事项。
※ 首先阅读专业知识。如果对这些内容比较了解,可以直接跳转到代码实现。
※ 然后是Android平台中相关模块的代码实现。这些代码实现往往基于一定的专业知识,所以在阅读代码时务必和前述的专业知识相结合。
※ 每章最后都列出了笔者在撰写各章时所参考的资料。资料较多,读者可根据这些内容开展进一步的研究工作。
每章开头都把本章涉及的源码路径全部列出,而在具体分析源码时,只列出该源码的文件名及所分析的函数或相关数据结构名。例如:
[-->AndroidRuntime.cpp::函数或数据结构名]
* * * * *
// 源码分析和一些注释
* * * * *
最后,本书在描述类之间的关系及函数调用流程上,使用了UML的静态类图及序列图。UML是一个强大的工具,但它的建模规范过于烦琐,为更简单清晰地描述事情的本质,本书并未完全遵循UML的建模规范。如图1所示,外部类内部的方框用于表示内部类。另外,“外部类A.内部类B”也用于表示内部类。接口和普通类用同一种框图表示。
![](https://s3.cn-north-1.amazonaws.com.cn/sitbweb-cn/content/B00BTCM8SA/resources/904055929)
:-: 图1类图
图2所示为本书描述数据结构及成员时使用的UML图例。
![数据结构图](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/94c9ac7cb6655f0a0c76c2a625a54096_860x230.png =860x230)
>[info] **特别注意** 本书所使用的UML图都比较简单,读者不必花费大量时间专门学习UML。另外,出于方便考虑,本书所绘制的UML图没有严格遵守UML规范,这一点敬请读者谅解。
';