首页>参考读物>计算机科学与技术>软件与程序设计

深入理解Android:Wi-Fi、NFC和GPS卷
作者 : 邓凡平 著
丛书名 : 移动开发
出版日期 : 2014-04-10
ISBN : 978-7-111-45683-4
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 587
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是经典畅销书“深入理解Android” 系列的新作,也是资深Android系统专家邓凡平先生的最新力作。从实际应用的需求角度出发,本书从通信专业知识的角度和Android系统代码实现的角度对Netd、Wi-Fi、NFC和GPS等模块的代码进行了深入剖析,旨在深刻揭示其实现原理和工作流程。由于本书包含大量通信相关的专业知识,所以邀请了来自于全志和高通等著名芯片公司的资深专家来担任技术审校。本书适合所有Android系统工程师、Android应用开发工程师和BSP开发工程师阅读。
全书一共9章:第1章介绍本书的内容组成、工具使用以及参考源码的下载方法;第2章介绍Netd和与之相关的背景知识;第3~5章介绍了Wi-Fi的基础知识;wpa_supplicant和wpa_supplicant等Wi-Fi领域最核心的软件的实现;Android平台中特有的Wi-Fi服务模块Wi-FiService; 第6~7章讲解了Wi-Fi Alliance(Wi-Fi联盟)推出的两项重要技术Wi-Fi Simple Configuration和Wi-Fi P2P以及它们在Android平台中的代码实现;第8章详细讲解和分析了NFC背景知识以及NFC在Android平台中的代码实现;第九章讲解了GPS原理及Android平台中的位置管理服务架构。

图书特色

偶然的机会,在凡平的博客上看到关于本书Wi-Fi相关内容审核的邀请,看完目录结构后惊叹内容之全,几乎包含Android 无线网络整个框架的内容,出于急切阅读内容之心,于是毛遂自荐参与本书的审核。
本书内容安排合理,考虑到读者在某些知识方面会有欠缺,每章都会先补充相关的背景知识,以便在代码分析时能起到事半功倍的效果。本书内容均是作者根据代码分析结合实际操作流程总结得来,例如为了分析Wi-Fi的数据包格式、认证和关联等流程而抓包分析,为了测试说明问题而修改代码并验证,为了说明如何使用API而提供DEMO。虽然我们只通过Email沟通交流,但足以看出作者做事认真负责、一丝不苟。
当前大部分手持设备都配有Wi-Fi、蓝牙、GPS等功能,网络已成为人们生活中的一部分,本书涉及四大无线模块中的Wi-Fi、GPS和NFC。GPS已深入到人们生活,成为出行者的必备工具;NFC目前还没有普及,预计明后两年会得到推广,支付功能将会是个看点。无论你是从事应用开发还是相关模块功能的扩展,都能从本书中有所收获。尤其对于初学者来说,面对Android多层次的架构和海量的代码,学习和分析Wi-Fi时可能无从切入,本书将会是很好的导师。
—— 吴劲良 全志(Allwinner)公司wireless-team负责人

Wi-Fi是手机等移动智能设备不可缺少的功能,遗憾的是,目前还没有对Android系统Wi-Fi功能的实现进行全面介绍的专著。由于Wi-Fi系统复杂,工程师很难通过自学掌握Android系统Wi-Fi相关的知识,碰到问题一般依赖于Wi-Fi芯片供应商或者Android系统自身的版本发布。本书的出现非常有效地弥补了这个空缺。本书介绍了802.11协议的基本知识,清晰阐述了Android系统和Wi-Fi相关的软件架构,通过翔实的代码分析,让Wi-Fi工程师全面掌握Android系统Wi-Fi的工作原理,便于他们开发基于Wi-Fi的高级应用,分析并解决用户碰到的一些问题,从而促进Android生态系统的发展。
—— 杨洋 高通(Qualcomm)中国资深研发经理

Android系统发展到今天,connectivity已经成为不可或缺的组成部分。但是在实际开发移植的过程中,绝大多数Android软件工程师没有相关背景知识,导致与硬件工程师沟通不畅,延误项目进度。本书从原理、简单算法、应用场景,以及Android的具体使用和移植等方面,由浅入深地对connectivity的三个应用进行了解释说明。无论对于Android应用开发工程师,还是系统工程师而言,都是一本难得的“Jump Start Training Book”。即便是有相关经验的Android工程师,也可以作为参考手册备用。最后,希望作者能够不断更新此系列,进一步对更底层的BSP进行阐述,以飨读者。
—— 罗旻 新岸线(NeuFront)技术总监

当大家疲于应付生活和工作的压力时,作者在充满激情地精心钻研时下流行的Android架构。与其他枯燥的分析Android源码的书不同,本书不仅介绍了Wi-Fi、NFC和GPS等模块的专业知识,还结合理论对相关代码开展了深入浅出的分析。希望各位读者通过此书学习专业知识的同时,还能学习作者乐于分享、追求卓越的工作态度。
—— 李智 全志(Allwinner) 营销总监


经典畅销书“深入理解Android”系列新作,资深Android系统专家邓凡平撰写,全志、高通等公司资深专家担任技术审校并强烈推荐
从专业知识角度和Android系统代码实现角度对Netd、Wi-Fi、NFC和GPS模块代码进行深入剖析,深刻揭示其实现原理和工作机制

本书是笔者为“深入理解Android”系列撰写的第三本,也是该系列专题卷的第二本。本书关注Android平台中非常重要的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系统工程师,对Android系统的设计与实现有非常深入的研究,曾担任Tieto公司高级软件架构师。“深入理解Android”系列的总策划和主笔,曾出版畅销书《深入理解Android:卷I》和《深入理解Android:卷II》。喜欢钻研,乐于分享,活跃于CSDN、51CTO和开源中国等专业技术社区,2013年荣获51CTO读书频道评选的“最受读者喜爱的IT图书作者奖”。

图书前言

本书主要内容及特色
本书所讲解的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模块的实现之前,先重点介绍与代码相关的专业知识。当然,这些专业知识内容如此丰富,在一本书中无法全部涵盖。为了方便读者进一步深入学习,本书每章的最后都会列举笔者在撰写各章时所阅读的参考资料。
以下是本书的内容概述。
第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”也用于表示内部类。接口和普通类用同一种框图表示。

图1 类图
图2所示为本书描述数据结构及成员时使用的UML图例。

图2 数据结构图
特别注意 本书所使用的UML图都比较简单,读者不必花费大量时间专门学习UML。另外,出于方便考虑,本书所绘制的UML图没有严格遵守UML规范,这一点敬请读者谅解。
本书涉及的Android源码及一些开发工具的下载地址为http://115.com/lb/5lbdugrdt4r。关于它们的使用详情,请读者阅读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、huimin、yuzheng、Liuxuan、Emily、Diego、jinghua、Jenny等,中国成都分公司的tianxiang、chengguo等,波兰分公司的Marcin、Marciej、Filip Matusiak等、捷克分公司的Vaclav、Bronislav、Petrous Jan等、芬兰分公司的Mikel Echegoyen。
当然,本书能得以快速出版,还需要感谢两位功力深厚并热心参与技术审稿的专家。他们是全志(Allwinner)公司Wireless Team负责人吴劲良,以及高通(Qualcomm)中国资深研发经理杨洋。二位专家在各自领域所表现出来的专业素养和技术水平,时刻提醒笔者应牢记“路漫漫其修远兮,吾将上下而求索”。另外,高通中国资深研发经理毛晓冬也对本书成功编写提供了帮助,在此一并表示感谢。
最后,感谢我的家人,尤其是我的妻子。希望明年上天能恩赐一个健康可爱的宝宝,这样,我将拥有更加无穷的动力编写更多书籍来回馈花费宝贵时间和精力关注本书的读者,以及所有在人生和职业道路上曾给予我指导的诸位师长。

上架指导

计算机\程序设计

封底文字

偶然的机会在凡平的博客上看到关于本书中Wi-Fi部分内容审核的邀请,看完目录结构后惊叹内容之全,Android 无线网络整个框架涉及的内容都包含其中,出于对书内容急切阅读之心就毛遂自荐参与书审核。
每章节内容安排很合理,考虑到读者知识在某些方面会有欠缺,都会先对相关的知识做补充介绍,以便代码实现分析理解能事半功倍。每章节内容均是作者根据代码分析结合实际操作流程分析总结出来,会看到为分析清楚Wi-Fi的数据包格式、认证和关联等流程而抓包分析,会看到为测试说明问题而对代码做修改和验证,会看到为说明如何使用API而提供DEMO。虽然只通过email跟作者沟通,但由书的内容可以看出作者做事是十分负责、一丝不苟。
当前市面大部分手持设备都是配有Wi-Fi、蓝牙、GPS和NFC功能,缺少网络的智能设备就相当于MP4机器,网络已成为人们生活中的一部分;蓝牙当前还没得到广泛应用,配合蓝牙耳机(听歌和打电话)使用较多,后续随着蓝牙4.0 (BLE)相关profile和应用配套设备的完善,蓝牙将得到广泛应用;GPS也已深入到人们生活,成为出行者的指路者;NFC目前还没得到广泛的普及使用,预计在明后两年会得到推广,估计支付功能将会是个看点。本书涉及四大无线模块中的Wi-Fi、GPS和NFC部分,无论是做应用的开发还是相关模块功能的扩展,都能从本书中得到收获,尤其Wi-Fi的学习和分析,对于初学者,面对android多层次的架构和如此之多的代码,可能会有无从切入的疑惑,本书将会是位很好的导师。
——吴劲良 全志(Allwinner)公司wireless-team负责人

Wi-Fi是手机等移动智能设备不可缺少的功能。尽管Wi-Fi如此重要, 遗憾的是目前还没有专著对Android系统的Wi-Fi功能的实现进行全面介绍。由于Wi-Fi系统的复杂性,工程师很难通过自学掌握Android系统Wi-Fi相关的知识,碰到问题一般依赖于Wi-Fi芯片供应商或者Android系统自身的版本发布。这本书的出现非常有效的弥补了这个空缺。它不但介绍了802.11协议的基本知识,而且清晰阐述了Android系统和Wi-Fi相关的软件架构,并且有翔实的代码分析,能够让Wi-Fi的工程师全面的掌握Android系统Wi-Fi的工作原理。这样可以便于他们开发一些基于Wi-Fi的高级应用,分析解决一些用户碰到的问题, 从而促进Android生态系统的发展。随着Wi-Fi新的标准和特性的层出不穷,以及Android的版本发布持续更新,希望作者能持续更新此书,以飨读者。
——杨洋 高通(Qualcomm)中国资深研发经理

Android系统发展到今天,connectivity已经成为不可或缺的组成部分。但是在实际开发移植的过程中,绝大多数Android软件工程师没有相关背景知识,与硬件工程师沟通不畅,延误项目进度。本书从原理、简单算法描述、应用场景和Android中具体的使用、移植等方面,由浅入深地对connectivity的三个应用进行了解释说明。无论是对于Android软件开发工程师,还是应用支持工程师而言,都是一本难得的“Jump Start Training Book”。同时,即便是对于有相关经验的Android工程师,也可以作为参考手册备用。最后,希望作者能够进一步更新此系列,进一步对更底层的BSP进行阐述,以飨读者。
——罗旻 新岸线(NeuFront)技术总监

当大家在疲于应付生活和工作压力的时候,作者在充满激情的精心钻研时下最流行的Android架构;与其他那些枯燥的分析Android源码的书不同的是,本书不仅介绍了Wi-Fi、NFC和GPS各模块的专业知识,还结合理论,对相关代码开展了深入浅出的分析。希望各位读者透过此书不仅向作者学习专业知识,还应该向作者学习乐于分享、追求卓越的工作态度。
——李智 全志(Allwinner) 营销总监

作者简介

邓凡平 著:暂无简介

图书目录

前 言
第1章 准备工作 1
1.1 Android系统架构 2
1.2 工具使用 2
1.2.1 Source Insight的使用 3
1.2.2 Eclipse的使用 3
1.2.3 BusyBox的使用 7
1.3 本书资源下载说明 8
第2章 深入理解Netd 9
2.1 概述 10
2.2 Netd工作流程 10
2.2.1 main函数分析 11
2.2.2 NetlinkManager分析 12
2.2.3 CommandListener分析 16
2.2.4 DnsProxyListener分析 18
2.2.5 MDnsSdListener分析 21
2.3 CommandListener中的命令 26
2.3.1 iptables、tc和ip命令 27
2.3.2 CommandListener构造函数和测试工具ndc 31
2.3.3 InterfaceCmd命令 33
2.3.4 IpFwd和FirewallCmd命令 40
2.3.5 ListTtysCmd和PppdCmd命令 43
2.3.6 BandwidthControlCmd和IdletimerControlCmd命令 45
2.3.7 NatCmd命令 47
2.3.8 TetherCmd和SoftapCmd命令 49
2.3.9 ResolverCmd命令 54
2.4 NetworkManagementService介绍 55
2.4.1 create函数详解 55
2.4.2 systemReady函数详解 57
2.5 本章总结和参考资料说明 58
2.5.1 本章总结 58
2.5.2 参考资料说明 58
第3章 Wi-Fi基础知识 62
3.1 概述 63
3.2 无线电频谱和802.11协议的发展历程 63
3.2.1 无线电频谱知识 63
3.2.2 IEEE 802.11发展历程 64
3.3 802.11无线网络技术 66
3.3.1 OSI基本参考模型及相关基本概念 66
3.3.2 802.11知识点导读 73
3.3.3 802.11组件 74
3.3.4 802.11 Service介绍 77
3.3.5 802.11 MAC服务和帧 82
3.3.6 802.11 MAC管理实体 98
3.3.7 无线网络安全技术知识点 105
3.4 Linux Wi-Fi编程API介绍 121
3.4.1 Linux Wireless Extensions介绍 122
3.4.2 nl80211介绍 125
3.5 本章总结和参考资料说明 135
3.5.1 本章总结 135
3.5.2 参考资料说明 136
第4章 深入理解wpa_supplicant 140
4.1 概述 142
4.2 初识wpa_supplicant 144
4.2.1 wpa_supplicant架构 144
4.2.2 wpa_supplicant编译配置 145
4.2.3 wpa_supplicant命令和控制API 146
4.2.4 git的使用 149
4.3 wpa_supplicant初始化流程 149
4.3.1 main函数分析 150
4.3.2 wpa_supplicant_init函数分析 153
4.3.3 wpa_supplicant_add_iface函数分析 158
4.3.4 wpa_supplicant_init_iface函数分析 164
4.4 EAP和EAPOL模块 191
4.4.1 EAP模块分析 191
4.4.2 EAPOL模块分析 202
4.5 wpa_supplicant连接无线网络分析 212
4.5.1 ADD_NETWORK命令处理 214
4.5.2 SET_NETWORK命令处理 216
4.5.3 ENABLE_NETWORK命令处理 218
4.6 本章总结和参考资料说明 264
4.6.1 本章总结 264
4.6.2 参考资料说明 264
第5章 深入理解WifiService 267
5.1 概述 268
5.2 WifiService的创建及初始化 268
5.2.1 HSM和AsyncChannel介绍 269
5.2.2 WifiService构造函数分析 276
5.2.3 WifiStateMachine介绍 277
5.3 加入无线网络分析 287
5.3.1 Settings操作Wi-Fi分析 288
5.3.2 WifiService操作Wi-Fi分析 295
5.4 WifiWatchdogStateMachine介绍 312
5.5 Captive Portal Check介绍 316
5.6 本章总结和参考资料说明 320
5.6.1 本章总结 320
5.6.2 参考资料说明 320
第6章 深入理解Wi-Fi Simple Configuration 321
6.1 概述 322
6.2 WSC基础知识 322
6.2.1 WSC应用场景 323
6.2.2 WSC核心组件及接口 325
6.3 Registration Protocol详解 326
6.3.1 WSC IE和Attribute介绍 328
6.3.2 802.11管理帧WSC IE设置 331
6.3.3 EAP-WSC介绍 335
6.4 WSC代码分析 343
6.4.1 Settings中的WSC处理 343
6.4.2  WifiStateMachine的处理 345
6.4.3 wpa_supplicant中的WSC处理 347
6.4.4 EAP-WSC处理流程分析 356
6.5 本章总结和参考资料说明 370
6.5.1 本章总结 370
6.5.2 参考资料说明 370
第7章 深入理解Wi-Fi P2P 371
7.1 概述 372
7.2 P2P基础知识 372
7.2.1 P2P架构 372
7.2.2 P2P Discovery技术 374
7.2.3 P2P工作流程 389
7.3 WifiP2pSettings和WifiP2pService介绍 392
7.3.1 WifiP2pSettings工作流程 392
7.3.2 WifiP2pService工作流程 397
7.4 wpa_supplicant中的P2P 408
7.4.1 P2P模块初始化 409
7.4.2 P2P Device Discovery流程分析 416
7.4.3 Provision Discovery流程分析 426
7.4.4 GO Negotiation流程分析 433
7.5 本章总结和参考资料说明 441
7.5.1 本章总结 441
7.5.2 参考资料说明 441
第8章 深入理解NFC 443
8.1 概述 444
8.2 NFC基础知识 444
8.2.1 NFC概述 445
8.2.2 NFC R/W运行模式 448
8.2.3 NFC P2P运行模式 453
8.2.4 NFC CE运行模式 459
8.2.5 NCI原理 462
8.2.6 NFC相关规范 464
8.3 Android中的NFC 464
8.3.1 NFC应用示例 465
8.3.2 NFC系统模块 478
8.4 NFC HAL层讨论 498
8.5 本章总结和参考资料说明 500
8.5.1 本章总结 500
8.5.2 参考资料说明 500
第9章 深入理解GPS 503
9.1 概述 504
9.2 GPS基础知识 504
9.2.1 卫星导航基本原理 505
9.2.2 GPS系统组成及原理 513
9.2.3 OMA-SUPL协议 532
9.3 Android中的位置管理 536
9.3.1 LocationManager架构 536
9.3.2 LocationManager应用示例 538
9.3.3 LocationManager系统模块 541
9.4 本章总结和参考资料说明 570
9.4.1 本章总结 570
9.4.2 参考资料说明 570
附录 574

教学资源推荐
作者: (美)Martin Kalin
作者: [美]奥弗·曼德勒维奇(Ofer Mendelevitch) 凯西·斯特拉(Casey Stella) 著 道格拉斯·伊德理恩(Douglas Eadline)
作者: [美] 凯·霍斯特曼(Cay Horstmann) 著
参考读物推荐
作者: 任侃 曹越 吴杰 等著
作者: (美)Jose Annunziato 等