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

深入理解Android:Telephony原理剖析与最佳实践
作者 : 杨青平 著
出版日期 : 2013-01-04
ISBN : 978-7-111-40676-1
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 355
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是“深入理解Android”系列的第3本,前两本书的内容质量在Android开发者社群内得到了高度认可,已经树立起该系列书的品牌。在写作思路和方式上,本书与前两本书一脉相承,对它们的优点进行了继承和发扬;在内容上,本书从从源码角度深入解析了Android Telephony的架构设计与实现原理,深刻揭示了Android系统的通信机制!对于Android应用开发工程师和系统工程师而言,本书都是难得的研究和学习资料!
全书共13章,分为五大部分:第一部分(1~3章),首先介绍了智能手机的系统结构、Android系统的架构、Telephony框架的结构,然后详细介绍了Android源代码编译环境和阅读环境的搭建方法,以及阅读本书要做的技术准备;第二部分(4~6章),对Android的通话功能进行了深入的解析,包括通话流程的分析、主动拨号和来电流程的分析、通话应用机制的分析,以及手机通信功能在框架层和应用层中的实现机制的分析;第三部分(7~9章),对Android的通信功能进行了深入的解析,包括网络服务状态的运行机制分析、Android手机上网的实现机制分析,以及短息发送和接收流程的分析;第四部分(10~12章),对Android RIL的工作机制进行了深入的解析,包括框架层中的RILJ运行机制解析、RILC系统结构及LibRIL运行机制解析,以及Reference-RIL框架的原理解析;第五部分(13章),分析了Telephony了模块所提供的系统服务,包括系统服务的注册入口以及调用系统服务接口的实例。

图书特色

伴随着《深入理解Android:卷II》的上市,“深入理解Android”系列图书在Android图书市场引起了更大的反响,获得了更好的口碑,已经建立起了自己的品牌。本书继承了该系列图书的所有优点,宏观上将模块的架构和设计思路整理得非常清晰,微观上则将模块的工作机制和实现原理分析得细致入微。无论你是关心Android系统通信功能的应用开发者,还是要对Android系统进行定制或移植的系统工程师,只要能跟随作者的思路,吃透本书的内容,在以后的工作中你都会游刃有余!
——51CTO移动开发频道(http://mobile.51cto.com/)

Android为移动设备而生,对于移动设备而言,通信是最重要的功能,同时也是最复杂的功能。对于应用开发工程师而言,如果能深入了解Telephony的通信功能和原理,就能在开发Android应用时选择最优的方式完成相关功能;对于系统工程师而言,通信能力是Android系统平台定制化过程中的重点和难点,它的稳定性和性能直接决定了设备是否能量产。本书从源代码的角度深入分析了Telephony的通信机制和实现原理,对于应用开发工程师和系统开发工程师而言,都是不可多得的参考资料。
安卓巴士(http://www.apkbus.com/) 做最好的Android开发社区

机械工业出版社华章分社出版的“深入理解Android”系列图书以分析Android的源代码为主,包含应用、框架、专题和内核四个部分,本书是专题部分的第一本书。本书的研究重点是Android的Telephony相关模块,它们也是Android体系结构中相对独立的一部分,分析难度较大,因为涉及的面较广,需要掌握的专业知识也较多。青平结合两年多的研究成果,精心总结和整理了这本拥有完整知识框架、条理清晰、理论和实战结合的专题书籍,全方位、多角度向读者展示了Android Telephony体系结构的工作流程和相关原理。同时,该书秉承了“深入理解Android”系列图书高标准、高质量的传统,并展现了作者作为一位川籍软件工程师所拥有的追逐细节的品质和开阔的思路。

     ——邓凡平 《深入理解Android 卷I/卷II》作者

Android Telephony作为Android手机中的核心模块,为手机提供了基础的通信能力,其逻辑处理、运行效率和稳定性是Android手机定制开发过程中的重点和难点。为解决这个难题,本书由浅入深、非常全面地分析了Android Telephony模块的实现机制和设计理念,对Call通话、ServiceState接入网络服务状态、DataConnection手机上网数据连接、SMS&MMS短信和彩信的应用、Android RIL等重要模块进行了详细分析和关键点的总结。
在分析过程中,选择通话作为核心,从通话的流程开始分析和总结,然后逐步解析通话应用在Application、Framework、HAL每层中的处理逻辑,使读者既能够从整体上认识通话流程,同时又能够学习到通话的实现细节。另外,Android Telephony涉及的关键流程和设计思路,本书尽量使用UML图进行展现,并使用文字进行总结和说明,把工作机制尽量说得明白且深入。同时,我们也希望读者能在此基础上继续前行,以开展更加深入和广泛的研究。
通过阅读、分析和总结Android的源代码,不断地思考和总结Google资深人士的设计思路和代码实现方式,形成自己的知识体系,能大大提升我们自身的综合能力和素质。

作者简介
杨青平 资深Android系统工程师和软件开发工程师,热衷于Android用源代码和系统原理的研究,对Android的系统架构、设计原理以及Telephony和Framework等核心功能模块的工作机制有非常深入的研究。目前就职于国内领先的Android OS提供商ThunderSoft(中科创达),担任系统架构师。他对J2EE、UML、设计模式等相关技术,以及电信增值业务、电子商务、物联网等重要软件行业的运行模式、业务发展规划也有较深入的了解。此外,他还是一位经验丰富的讲师,有多年的人才培训经验,善于总结和分享。

图书前言

随着ICT技术的推广和发展,在三网融合、智慧的地球(物联网)等概念风行的形势下,手机终端技术的发展和进步可谓日新月异;Android经受住了市场的考验,并占据了较大的市场份额,从手机芯片厂家、手机生产厂家到各种应用开发公司、互联网公司等,逐步形成了以Android系统平台为核心的上下游产业链。正是由于Android源代码的开源,各大手机厂商才能通过深度定制Android系统平台,在降低研发成本的同时,快速推出具有自身特色的Android智能手机产品。因此,各大手机厂家在推出新版本Android系统平台手机上投入了较多的研发成本,其中不乏SamSung、Motorola等国际知名公司;国内如小米手机、联发科、展讯等也都有自己的Android研发团队。
  目前国内市场上针对Android的书籍很多,但这些书籍中,绝大多数是基于Android SDK在应用层的开发进行讲解的。针对Android系统级的源代码分析的书籍,主要是邓凡平著的《深入理解Android:卷Ⅰ》和《深入理解Android:卷Ⅱ》,但深入理解Android Telephony的书籍国内目前还是空白。而Telephony基本通信功能是手机中的核心,在定制Android手机的过程中也不例外,手机离开了基本通信能力,如通话、短彩信、手机上网等功能,也就失去了它本身的意义。
  在Android手机定制化的过程中,Telephony涉及的范围和内容也非常多,从应用层到框架层,再到RIL与Modem无线通信模块的交互,所有部分均有不同程度的定制和优化,因此,在Android手机平台定制化研发的过程中,需要对Android Telephony有全面而深入的理解。
  本书以Android 4.0.3源代码为基础,全面、深入地解析了Android Telephony涉及的主要内容,其中包括Call通话、ServiceState接入网络服务状态、DataConnection手机上网数据连接以及SMS&MMS短信和彩信的应用等,并且详细解析了Android RIL的运行机制。
读者对象
  本书主要适合于以下读者。
  (1)Android应用的普通开发者
  对于Android应用开发工程师来说,本书中关于发起通话呼叫、接收到新的来电、发送短信、接收新短信、手机上网等Telephony涉及的通信能力的介绍,能帮助他们在编写Android应用程序时,选择最优方式完成多种场景的应用。比如如何发起通话呼叫、如何发送短信、如何监听或接收新来电或新短信的通知等,都是Android应用程序需要处理的消息和事件。
  (2)Android 系统平台的定制开发者
  Android Telephony涉及的通信能力,常常是Android系统平台定制化过程中的重点和难点,它的可用性和稳定性决定了手机产品是否能成功量产。本书全面、深入地讲解了Android Telephony涉及的通信能力的实现流程和机制。
  (3)对Android源代码有浓厚兴趣的读者
  Android源代码中汇集了很多国外专家和优秀工程师的设计思想和理念,本书对Android Telephony源代码中的关键设计模式、设计思路做了详细分析,读者可拓展思考和训练,以提升自己的设计水平和编码能力。
  (4)开设相关课程的大专院校的师生
  从搭建Android的编译环境到分析源代码的过程,本书由浅入深地进行了讲解,阅读本书可帮助读者提升Linux操作系统的动手能力、Java语言的编码能力、UML的阅读能力和理解常见的设计模式,了解Android系统平台定制的主要工作内容。
如何阅读本书
  全书分为5个部分,共13章:
  第一部分(第1~3章)首先介绍Android和智能手机的框架结构,帮助读者了解一些手机的发展历程;然后讲解Android源代码的编译环境搭建过程,并普及Android中的一些技术基础。
  第二部分(第4~6章)详解Android Telephony通话功能。首先整体认识通话功能在整个Android系统平台所处的位置,及每层的主要作用;然后分析通话的关键流程,主要体现在主动拨号流程和来电流程的过程分析;最后解析通话功能在应用层和框架层中的实现机制和逻辑。
  第三部分(第7~9章)详解ServiceState(网络服务状态)、DataConnection(手机上网数据连接)、SMS和MMS的业务实现流程,以及在应用层和框架层中的关键处理逻辑和实现机制。
  第四部分(第10~12章)首先讲解Android RIL框架结构和关键业务流程,然后详细解析RILJ、RILC和Reference-RIL的运行机制。
  第五部分(第13章)讲解Telephony模块所提供的系统服务,包括系统服务的注册入口以及调用系统服务接口的实例。
  如果你是一名Android经验丰富的资深用户,能够快速搭建Android源代码编译环境以及掌握了Android开发的基础知识和技巧,那么可以跳过第一部分,直接阅读后面四部分;但是如果你是一名Android初学者,请一定从第1章的基础理论知识开始学习。
勘误和支持
  由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,笔者特意创建一个在线支持博客http://blog.163.com/yqp_mail/。您可以将书中的错误或是遇到的任何问题留言给我,我将尽量在线上为读者提供最满意的解答。如果您有更多的宝贵意见,也欢迎发送邮件至邮箱yqp_mail@163.com。期待能够得到大家的真挚反馈。
致谢
  感谢Android技术专家邓凡平,在你的引荐下才促成了这本书的合作与出版。
  感谢机械工业出版社华章分社的编辑杨福川和白宇,在这半年里是你们始终支持着我的写作,因为有了你们的鼓励和帮助我才能顺利完成全部书稿。
  感谢ThunderSoft中科创达公司,这是一家创业型、学习型和成长型的软件公司。在这里工作,有机会与Android亲密接触,能够在Android涉及的各个方面不断学习、总结和分享;感谢ThunderSoft成都分公司领导常衡生先生和曾俊汉先生的鼓励和支持,因为有了你们的帮助,我才能有更多的时间和精力去完成全部书稿的写作;感谢ThunderSoft公司的同事刘斌、任洪亮等人在本书的写作过程中给予的大力支持。
  感谢我的妻子,在本书的写作过程中,我几乎放弃了所有晚上和周末的休息时间,妻子给了我极大的关心和体贴,让我无后顾之忧,专注写作。
  最后感谢我的爸爸、妈妈,你们将我培养成人,从小学、初中、高中到大学,乃至到我工作后,你们都时时刻刻关心和帮助着我,在本书的写作过程中你们同样给了我极大的关心和帮助。
  谨以此书献给我最亲爱的家人,以及众多热爱Android的朋友们!

杨青平
于成都

上架指导

计算机\程序设计

封底文字

伴随着《深入理解Android:卷II》的上市,“深入理解Android”系列图书在Android图书市场引起了更大的反响,获得了更好的口碑,已经建立起了自己的品牌。本书继承了该系列图书的所有优点,宏观上将模块的架构和设计思路整理得非常清晰,微观上则将模块的工作机制和实现原理分析得细致入微。无论你是关心Android系统通信功能的应用开发者,还是要对Android系统进行定制或移植的系统工程师,只要能跟随作者的思路,吃透本书的内容,你都会游刃有余!
——51CTO移动开发频道(http://mobile.51cto.com/)
Android为移动设备而生,对于移动设备而言,通信是最重要的功能,同时也是最复杂的功能。对于应用开发工程师而言,如果能深入了解Telephony的通信功能和原理,就能在开发Android应用时选择最优的方式完成相关功能的开发;对于系统工程师而言,通信能力是Android系统平台定制化过程中的重点和难点,它的稳定性和性能直接决定了设备是否能量产。本书从源码的角度深入分析了Telephony的通信机制和实现原理,对于应用开发工程师和系统开发工程师而言,都是不可多得的参考资料。
安卓巴士(http://www.apkbus.com/) 做最好的Android开发社区
机械工业出版社华章分社出版的“深入理解Android”系列图书以分析Android的源代码为主,包含应用、框架、专题和内核四个部分,本书是专题部分的第一本书。本书的研究重点是Android的Telephony相关模块,它们也是Android体系结构中相对独立的一部分。分析难度较大,因为涉及的面较广,需要掌握的专业知识也比较多。青平兄结合2年多的实际工作经验,精心总结和整理了这本拥有完整知识框架、条理清晰、理论和实战结合的专题书籍,全方位、多角度向读者展示了Android Telephony体系结构的工作流程和相关原理。同时,该书秉承了“深入理解Android”系列图书高标准、高质量的传统,并展现了作者作为一位川籍软件工程师所拥有的追逐细节的品质和开阔的思路。
     ——邓凡平 《深入理解Android 卷I/卷II》作者/Tieto公司高级软件架构师
说明:加上阅读路线图,同《深入理解Android:卷II》

作者简介

杨青平 著:放排好的目录及宣传语

图书目录

推荐序
前 言
第一部分 基础篇
第1章 初识Android / 2
1.1 智能手机的系统结构 / 2
1.2 Android系统架构 / 3
1.2.1 应用层 / 3
1.2.2 应用框架层 / 4
1.2.3 系统运行库层 / 5
1.2.4 核心层 / 6
1.3 Android Telephony框架结构 / 6
1.3.1 系统运行库层的HAL层 / 7
1.3.2 简析HAL结构 / 8
1.3.3 Android为什么引入HAL / 9
1.3.4 Android中HAL的运行结构 / 9
1.4 本章小结 / 10
第2章 搭建Android源代码编译环境 / 11
2.1 Ubuntu Linux操作系统及工具安装 / 11
2.1.1 PC配置建议 / 12
2.1.2 Ubuntu安装光盘的制作 / 12
2.1.3 Ubuntu安装过程 / 12
2.1.4 Ubuntu系统工具包更新升级 / 14
2.1.5 Java运行环境JDK安装及配置 / 15
2.1.6 Android SDK的下载和配置 / 16
2.1.7 使用Android SDK启动虚拟设备 / 17
2.2 Android源代码下载及编译过程 / 19
2.2.1 工作目录设置 / 19
2.2.2 源代码下载 / 19
2.2.3 整体编译Android 源代码 / 19
2.2.4 单个模块按需编译 / 20
2.2.5 编译生成本地Android SDK / 21
2.3 Android常用工具使用及相关技巧说明 / 21
2.3.1 使用本地编译成功的镜像文件启动Android模拟器 / 22
2.3.2 Android调试工具adb的使用方法 / 23
2.3.3 进入Android虚拟设备控制台模拟短信、来电等功能 / 23
2.4 Eclipse配置及使用 / 24
2.4.1 Android开发套件ADT下载及配置 / 24
2.4.2 建立Android源代码Java工程 / 25
2.4.3 格式化Android Java源代码 / 26
2.5 使用Source Insight方便阅读C/C++代码 / 26
2.5.1 安装Wine / 26
2.5.2 安装Source Insight / 26
2.5.3 配置Source Insight C/C++工程 / 27
2.6 本章小结 / 27
第3章 主要技术准备 / 29
3.1 何为同步和异步 / 29
3.2 Handler消息处理机制 / 30
3.2.1 Handler概念分析 / 30
3.2.2 Handler特性 / 30
3.2.3 常用Handler消息处理机制讲解 / 31
3.2.4 Handler的作用 / 34
3.3 AIDL跨应用服务 / 35
3.3.1 AIDL概念分析 / 35
3.3.2 AIDL服务提供方 / 36
3.3.3 AIDL服务调用方 / 37
3.4 广播 / 38
3.4.1 Android 系统中的广播 / 38
3.4.2 Broadcast接收 / 38
3.4.3 Broadcast发送 / 39
3.5 本章小结 / 39
第二部分 Telephony通话功能
第4章 深入解析通话流程 / 42
4.1 通话相关主要源代码汇总及简要说明 / 42
4.2 电话主动呼叫流程分析 / 44
4.2.1 运行Android虚拟设备 / 44
4.2.2 拨号界面DialtactsActivity的onCreate方法 / 45
4.2.3 DialpadFragment拨号盘Tab表单 / 45
4.2.4 寻找拨号统一入口OutgoingCallBroadcaster / 47
4.2.5 CallController拨号placeCall方法 / 47
4.2.6 Phone帮助类PhoneUtils静态placeCall方法 / 48
4.2.7 通话大管家CallManager / 50
4.2.8 Phone对象的dial拨号方法 / 50
4.2.9 Call状态跟踪者GsmCallTracker / 51
4.2.10 RIL消息的出入口RIL.java / 52
4.2.11 启动通话主界面InCallScreen / 53
4.2.12 拨号流程总结 / 53
4.3 电话被动接收来电流程分析 / 55
4.3.1 Android虚拟设备模拟接收来电 / 56
4.3.2 RegistrantList消息处理机制 / 57
4.3.3 GsmCallTracker响应RIL的Call状态变化通知 / 60
4.3.4 RIL.java的getCurrentCalls方法 / 60
4.3.5 GsmCallTracker响应消息通知 / 61
4.3.6 handlePollCalls发出来电通知 / 61
4.3.7 GSMPhone的通知方法notifyNewRingingConnection / 62
4.3.8 CallManager响应来电消息通知 / 62
4.3.9 CallNotifier响应来电通知 / 63
4.3.10 InCallScreen展现来电界面 / 64
4.3.11 来电流程总结 / 65
4.4 通话关键流程 / 66
4.4.1 建立Android通话模型 / 67
4.4.2 AT命令发送流程 / 68
4.4.3 通话状态变化流程 / 69
4.4.4 本地主动挂断通话流程 / 70
4.4.5 远端断开通话连接流程 / 72
4.5 本章小结 / 73
第5章 深入解析Telephony通话应用机制 / 74
5.1 Phone应用的关键代码解析 / 74
5.2 认识通话主界面InCallScreen / 75
5.2.1 InCallScreen中的主要方法 / 76
5.2.2 单例模式的Activity通话界面 / 76
5.2.3 Layout布局说明 / 77
5.3 通话主界面InCallScreen / 78
5.3.1 onCreate—运行Activity / 78
5.3.2 onNewIntent—单例InCallScreen加载入口 / 80
5.3.3 internalResolveIntent—进入InCallScreen处理Intent的唯一方法 / 81
5.3.4 onResume—显示InCallScreen通话界面 / 82
5.3.5 handleMessage—Handler消息响应方法 / 84
5.3.6 onSuppServiceFailed—显示通话服务失败提示信息 / 85
5.3.7 updateScreen—更新通话界面 / 86
5.3.8 onDisconnect—断开通话连接 / 88
5.3.9 handleOnscreenButtonClick—响应通话控制按钮点击事件 / 90
5.3.10 InCallScreen通话界面运行机制总结 / 91
5.4 通话信息展示CallCard / 92
5.4.1 两路通话布局View控件 / 92
5.4.2 updateState—更新CallCard / 93
5.4.3 displayMainCallStatus—显示/更新第一路通话信息 / 95
5.4.4 displayOnHoldCallStatus—显示/更新第二路通话信息 / 97
5.4.5 修改通话信息展示的思路及原则 / 98
5.5  通话控制InCallTouchUi / 99
5.5.1 View布局控件 / 99
5.5.2 updateState—更新InCallTouchUi / 101
5.5.3 MultiWaveView—来电控制接听、拒接界面 / 102
5.5.4 HeadSet—响应免提事件 / 103
5.5.5 修改来电界面的思路及原则 / 104
5.6 通话功能中必不可少的DTMF / 105
5.6.1 什么是DTMF / 105
5.6.2 DTMFTwelveKeyDialer的布局 / 105
5.6.3 如何显示DTMF界面 / 106
5.6.4 Tone音发送流程 / 106
5.7 Phone应用的加载入口PhoneApp类 / 108
5.7.1 PhoneApp类属性及方法 / 108
5.7.2 onCreate—PhoneApp应用加载入口 / 109
5.7.3 PowerManager—PhoneApp电源管理 / 110
5.7.4 Sensor—PhoneApp感应器的应用 / 112
5.7.5 MediaButtonBroadcastReceiver—接收耳机HOOK键广播事件 / 115
5.7.6 PhoneAppBroadcastReceiver—接收Phone应用杂项广播事件 / 116
5.8 Handler消息处理的幕后工作者CallNotifier / 118
5.8.1 CallNotifier的本质 / 118
5.8.2 Handler消息注册和响应机制 / 119
5.8.3 onNewRingingConnection—接收到新来电的幕后处理 / 119
5.8.4 onPhoneStateChanged—通话状态变化的幕后处理 / 121
5.8.5 onDisconnect—通话连接断开的幕后处理 / 122
5.9 本章小结 / 124
第6章 手机通话功能框架层实现机制 / 125
6.1 Telephony Frameworks层解析 / 125
6.1.1 通话功能相关代码文件 / 125
6.1.2 通话功能关键类 / 126
6.1.3 Telephony通信能力模型 / 127
6.2 GSMPhone对象详解 / 128
6.2.1 GSMPhone类层次继承关系 / 128
6.2.2 GSMPhone类代码结构解析 / 129
6.2.3 PhoneFactory工厂方法实现类 / 130
6.2.4 PhoneProxy代理模式实现类 / 131
6.2.5 GSMPhone类的组合逻辑关系 / 132
6.2.6 GSMPhone类的Handler消息处理机制 / 133
6.2.7 GSMPhone类通话管理实现机制 / 136
6.3 CallTracker运行机制 / 137
6.3.1 GsmCallTracker类代码结构解析 / 137
6.3.2 GsmCallTracker的Handler消息处理机制 / 139
6.3.3 GsmCallTracker与RIL对象的交互机制 / 142
6.4 以GsmCall为核心的通话管理模型 / 145
6.4.1 GsmCall类代码结构解析 / 146
6.4.2 GsmConnection类代码结构解析 / 147
6.4.3 DriverCall与GsmCall、GsmConnection的关系 / 149
6.5 GsmCallTracker类的 handlePollCalls方法处理逻辑 / 153
6.5.1 初始化操作 / 153
6.5.2 更新通话相关信息 / 154
6.5.3 根据最新的通话状态发出通知 / 158
6.5.4 更新手机状态 / 158
6.6 GsmCallTracker通话连接断开的处理机制 / 160
6.6.1 本地主动挂断通话的处理机制 / 160
6.6.2 远端断开通话连接的处理机制 / 162
6.7 Android虚拟设备上验证GSM制式手机的通话模型 / 164
6.7.1 增加日志输出 / 164
6.7.2 运行Android虚拟设备并分析日志 / 166
6.8 通话大管家CallManager / 168
6.8.1 CallManager的本质 / 168
6.8.2 Handler消息注册及运行机制 / 169
6.8.3 如何获取通话基本信息 / 170
6.9 通话计时实例分析 / 171
6.9.1 记录通话的开始时间 / 171
6.9.2 记录通话的结束时间 / 171
6.9.3 Phone应用计算通话时长 / 171
6.10  Handler消息处理机制 / 173
6.10.1 Handler消息的注册过程 / 173
6.10.2 Handler消息的接收和响应过程 / 174
6.11 实战—来电防火墙 / 175
6.11.1 应用原理分析 / 175
6.11.2 在onNewRingingConnection方法加入拦截请求 / 176
6.12 本章小结 / 176
第三部分 Telephony通信功能
第7章 网络服务状态运行机制 / 180
7.1 什么是ServiceState / 180
7.2 初识ServiceState实体类 / 180
7.2.1 ServiceState类的实质 / 181
7.2.2 ServiceState类关键常量及属性 / 181
7.2.3 ServiceState类关键方法 / 182
7.3 ServiceStateTracker运行机制详解 / 183
7.3.1 ServiceStateTracker抽象类为核心的类图 / 184
7.3.2 ServiceStateTracker代码结构 / 184
7.3.3 ServiceStateTracker的Handler消息处理机制 / 186
7.3.4 ServiceStateTracker与RIL对象的交互机制 / 189
7.4 handlePollStateResult方法处理逻辑 / 192
7.4.1 RIL返回查询结果的异常判断和处理 / 192
7.4.2 处理4个不同网络服务查询返回的结果 / 192
7.4.3 用pollStateDone方法完成收尾工作 / 195
7.5 ServiceState最佳实践 / 197
7.5.1 获取运营商信息 / 197
7.5.2 通知栏手机信号实时变化 / 198
7.6 实战—飞行模式的实现 / 200
7.6.1 飞行模式的设置入口 / 200
7.6.2 Radio无线通信模块的开启或关闭 / 202
7.7 本章小结 / 203
第8章 Android手机上网实现机制 / 204
8.1 Android网络整体结构 / 204
8.2 什么是DataConnection / 205
8.2.1 DataConnection类定义及子类 / 205
8.2.2 DataConnection类关键属性 / 206
8.2.3 DataConnection类的方法 / 207
8.2.4 5个数据连接对象的状态转换 / 207
8.3 StateMachine状态机 / 208
8.3.1 State设计模式 / 209
8.3.2 StateMachine核心类 / 209
8.3.3 StateMachine运行机制 / 210
8.3.4 DataConnection使用State模式的运行机制 / 211
8.4 什么是APN / 212
8.4.1 APN配置关键字段 / 212
8.4.2 Android支持的APN类型 / 213
8.4.3 如何在Android中新增APN配置 / 213
8.5 开机自动建立default默认数据连接 / 215
8.5.1 如何查看手机上网的基本参数配置 / 215
8.5.2 初始化ApnContext / 216
8.5.3 创建DataConnection数据连接 / 219
8.5.4 激活DataConnection数据连接 / 222
8.6 DataConnectionTracker运行机制 / 226
8.6.1 初始化ApnContext操作 / 227
8.6.2 开机建立default默认的数据连接 / 228
8.6.3 关闭数据连接 / 229
8.6.4 循环更新网络连接状态信息 / 230
8.6.5 APN数据库配置信息变化的观察者 / 231
8.7 获取Android手机上网数据包 / 232
8.7.1 使用tcpdump工具抓取TCP/IP数据包 / 232
8.7.2 使用Wireshark软件分析TCP/IP数据包 / 232
8.8 MMS彩信数据连接的实现 / 233
8.8.1 建立和关闭彩信数据连接 / 233
8.8.2 如何支持多种类型网络连接 / 234
8.9 实战—手机上网数据总开关的实现 / 235
8.10 本章小结 / 235
第9章 深入解析短信发送和接收流程 / 237
9.1 MMS应用主要源代码汇总及简要说明 / 237
9.2 主动发送短信流程分析 / 238
9.2.1 进入短信会话列表界面 / 238
9.2.2 短信编辑界面 / 239
9.2.3 SmsMessageSender短信发送处理逻辑 / 241
9.2.4 Telephony Frameworks层中的SmsManager类 / 243
9.2.5 IccSmsInterfaceManager服务发送短信 / 244
9.2.6 SMSDispatcher短信分发器 / 245
9.2.7 主动发送短信流程总结 / 246
9.3 短信发送状态相关处理机制 / 248
9.3.1 如何判断短信是否成功发送到短信中心 / 248
9.3.2 如何判断短信接收方已经成功收取短信 / 250
9.4 短信接收流程分析 / 252
9.4.1 短信接收的开始 / 252
9.4.2 进入短信分发器SMSDispatcher / 253
9.4.3 接收并处理新短信Broadcast广播 / 254
9.4.4 短信接收流程总结 / 254
9.5 彩信发送和接收关键流程 / 255
9.5.1 彩信传输过程中的关键类 / 255
9.5.2 TransactionService为核心的彩信传输机制 / 257
9.5.3 Transaction对象执行彩信传输 / 259
9.5.4 基于WAP PUSH的彩信接收与下载 / 260
9.6 本章小结 / 261
第四部分 深入解析Android RIL
第10章 Android RIL框架结构及RILJ运行机制 / 264
10.1 Android RIL关键处理流程 / 264
10.1.1 Android RIL框架结构 / 264
10.1.2 Android RIL的数据交互 / 265
10.2 认识RILJ / 265
10.2.1 RILJ核心类图 / 265
10.2.2 RILJ关键属性 / 266
10.2.3 RILJ关键方法 / 267
10.2.4 RILJ运行机制 / 268
10.3 认识RILRequest类 / 269
10.3.1 RILRequest类的关键属性 / 269
10.3.2 RILRequest类的方法 / 269
10.4 解析RILJ发出RIL请求流程 / 271
10.4.1 send方法发送Handler消息 / 271
10.4.2 RILSender接收和处理Handler消息 / 272
10.5 解析RILJ接收Response消息处理流程 / 273
10.5.1 RILReceiver内部类运行机制 / 273
10.5.2 Solicited Response消息处理方法processSolicited / 276
10.5.3 UnSolicited Response消息处理方法processUnsolicited / 279
10.6 本章小结 / 280
第11章 RILC系统结构及LibRIL运行机制 / 281
11.1 RILC主要代码目录结构 / 281
11.2 解析RILC运行机制 / 282
11.2.1 RILC启动过程 / 283
11.2.2 RILC运行过程 / 285
11.3 初识RILC中的运行环境LibRIL / 285
11.3.1 LibRIL主要文件及作用 / 285
11.3.2 重点结构体说明 / 286
11.4 LibRIL运行环境加载过程 / 288
11.4.1 开启ril_event事件监听入口RIL_startEventLoop / 288
11.4.2 RIL_register函数引入三方RIL_RadioFunctions / 290
11.5 运行状态中ril_event事件处理机制 / 291
11.5.1 认识ril_event结构体 / 291
11.5.2 RIL事件生命周期控制的处理函数 / 292
11.5.3 ril_event_loop处理机制 / 294
11.6 详解LibRIL运行机制 / 296
11.6.1 RILJ与LibRIL建立Socket连接过程 / 296
11.6.2 Solicited消息的交互流程和处理机制 / 297
11.7 本章小结 / 302
第12章 Reference-RIL运行框架 / 303
12.1 Reference-RIL运行机制 / 303
12.1.1 RIL_Init函数初始化Reference-RIL / 303
12.1.2 onRequest接收LibRIL的请求调用 / 304
12.1.3 UnSolicited消息处理逻辑 / 306
12.2 AT命令 / 310
12.2.1 如何新增AT命令 / 310
12.2.2 Android Telephony常用AT命令 / 310
12.3 Android RIL层运行框架和机制总结 / 311
12.3.1 总结Solicited消息处理流程 / 312
12.3.2 总结UnSolicited消息处理流程 / 313
12.4 本章小结 / 314
第五部分 系统服务
第13章 Telephony提供的系统服务 / 316
13.1 System Service系统服务类图 / 316
13.2 详解PhoneInterfaceManager实现机制 / 317
13.2.1 ITelephony.aidl接口定义 / 318
13.2.2 PhoneInterfaceManager服务创建过程 / 318
13.2.3 PhoneInterfaceManager服务使用实例分析 / 318
13.3 详解TelephonyRegistry实现机制 / 319
13.3.1 系统服务的创建入口 / 320
13.3.2 TelephonyRegistry关键方法 / 320
13.3.3 listen方法处理逻辑 / 320
13.3.4 notifyCallState方法发出通话状态变化通知 / 321
13.3.5 触发TelephonyRegistry发出通知机制 / 322
13.3.6 TelephonyRegistry系统服务使用实例分析 / 323
13.4 简述TelephonyManager实现机制 / 324
13.5 本章小结 / 326

教学资源推荐
作者: [美]托尼·加迪斯(Tony Gaddis)著
作者: (美)Bjarne Stroustrup 著
作者: Brian W.Kernighan
作者: 郑阿奇
参考读物推荐
作者: [美]帕维尔·约西福维奇(Pavel Yosifovich) 著
作者: 李宁 著