首先感谢各位兄弟姐妹们的耐心等待。本书预计在3月中旬上市发售。从今天开始,我将在博客中连载此书的一些内容。注意,此处连载的是未经出版社编辑的原始稿件,所以样子会有些非专业。
前 言
本书主要内容及特色
本书是笔者“深入理解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模块的实现之前,都将先行重点介绍与代码相关的专业知识。当然,这些专业知识内容如此丰富,笔者在一本书中无法全部涵盖它们。为了方便读者进一步深入学习,本书每章的最后都会列举出笔者在撰写它们时所阅读的参考文献。
以下是本书的内容概述:
- 第一章介绍本书的内容组成、工具使用以及参考源码的下载方法。
- 第二章介绍Netd和与之相关的背景知识。
- 第三章介绍Wi-Fi基础知识。Wi-Fi是本章的重点,而且也是当下最热门的技术,所以本书用一整章来介绍它的基础知识。
- 第四章介绍wpa_supplicant,它是Wi-Fi领域中最核心的软件实现。
- 第五章介绍WifiService,它是Android平台中特有的Wi-Fi服务模块。
- 第六章和第七章介绍Wi-Fi Alliance(Wi-Fi联盟)推出的两项重要技术,Wi-Fi Simple Configuration和Wi-Fi P2P以及它们在Android平台中的代码实现。
- 第八章介绍NFC背景知识以及NFC在Android平台中的代码实现。NFC也是一门历史比较悠久的技术了,希望它能随着Android的普及而走向大众。
- 第九章介绍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平台中相关模块的代码实现。这些代码实现往往基于一定的专业知识。所以读者在阅读代码时务必和前述的专业知识相结合。
- 每章最后都列出了笔者在撰写它们时所参考的资料。这些资料较多,读者可根据它们开展进一步的研究工作。
另外,和卷1以及卷II类似的是:每章开头都把本章涉及的源码路径全部列出,而在具体分析源码时,则只列出该源码的文件名及所分析的函数或相关数据结构名。例如:
[-->AndroidRuntime.cpp::函数或数据结构名]
//这里是源码分析和一些注释
最后,本书在描述类之间的关系及函数调用流程上,使用了UML的静态类图及序列图。UML是一个强大的工具,但它的建模规范过于繁琐,为更简单清晰地描述事情的本质,本书并未完全遵循UML的建模规范。这里举二例,如图1和图2所示.
图1 UML示例图之一
在图1中:
- 外部类内部的方框用于表示内部类。另外,外部类A.内部类B也用于表示内部类。
- 接口和普通类用同一种框图表示。
图2所示为本书描述数据结构时使用的UML图:
图2 UML示例图之二
图2所示为本书描述数据结构及成员时使用的UML图例。
特别注意:本书所使用的UML图都比较简单,读者不必花费大量时间专门学习UML。另外,出于方便考虑,本书所绘制的UML图没有严格遵守UML规范。这一点敬请读者谅解。
本书涉及的Android源码及一些开发工具的下载地址为:http://115.com/lb/5lbdugrdt4r。关于它们的使用详情,请读者阅读第1章1.3节。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者不吝批评指正。若有问题,可通过邮箱或在博客上留言与笔者共同商讨。笔者的联系方式是:
- 邮箱fanping.deng@gmail.com
- 博客blog.csdn.net/innost和http://my.oschina.net/innost/blog
致谢
本书即将付梓!首先要感谢杨福川编辑的大力支持。另外,要感谢本书审稿编辑白宇严谨负责的工作。
另外,笔者需要特别感谢所就职的Tieto公司。这是笔者第一次供职于一家外资企业。Tieto开放的企业文化、Android团队高效的工作效率,团队成员之间默契的工作配合程度以及领导无私和有力的支持着实让我感到幸运和自豪。在Tieto就职的一年中,我们Android团队不仅成功赢得了客户的信任,更是得到了Tieto公司总部和位于其他国家分公司同事们的一致认可。同时,团队成员还积极分享,并在《程序员》杂志上发表了六篇高质量的文章。
在此,笔者借助本书对以下Tieto的领导和同事表示衷心的感谢。他们是北京分公司的Leo、hongbin、James、yantao、meiyang、dujiang、changgeng、caimin、wenjing、huaizhi、huirong、xinzhi、*、yuzheng、Liuxuan、Emily、Diego、jinghua、Jenny等,成都分公司的tianxiang、chengguo等,波兰分公司的Marcin、Marciej、Filip Matusiak等、捷克分公司的Vaclav、Bronislav、Petrous Jan等、芬兰分公司的Mikel Echegoyen。
当然,本书能得以快速出版,还需要感谢两位功力深厚并热心参与技术审稿的专家。他们是全志(Allwinner)公司Wireless Team负责人吴劲良以及高通(Qualcomm)中国资深研发经理杨洋。二位专家在各自领域所体现出来的专业素养和技术水平之高时刻提醒笔者应牢记“路漫漫其修远兮,吾将上下而求索”。另外,高通中国资深研发经理毛晓冬也对本书成功编写提供了不小的帮助。在此一并感谢他们。
最后,一如既往地感谢家人和妻子。并且,笔者尤其希望明年上天能恩赐一个健康可爱的宝宝。这样,我将拥有更加无穷的动力来回馈那些花费宝贵时间和精力关注本书的读者以及所有在人生和职业道路上曾给予我指导的诸位师长。
邓凡平
2013年11月于Tieto北京分公司