深入理解Android

深入理解Android

杨青平, 著

出版社:机械工业出版社

年代:2012

定价:69.0

书籍简介:

本书是“深入理解Android”系列的第3本。在写作思路和方式上,本书与前两本书一脉相承,对它们的优点进行了继承和发扬;在内容上,本书从从源码角度深入解析了Android Telephony的架构设计与实现原理,深刻揭示了Android系统的通信机制!全书共13章,分为五篇:第一篇,介绍了智能手机的系统结构、Android系统的架构、Telephony框架的结构、Android源代码编译环境和阅读环境的搭建方法,以及阅读本书要做的技术准备;第二篇,对Android的通话功能进行了深入的解析,包括通话流程的分析、主动拨号和来电流程的分析、通话应用机制的分析等;第三篇,对Android的通信功能进行了深入的解析,包括网络服务状态的运行机制分析、Android手机上网的实现机制分析,以及短息发送和接收流程的分析;第四篇,对Android RIL的工作机制进行了深入的解析,包括框架层中的RILJ运行机制解析、RILC系统结构及LibRIL运行机制解析等;第五篇,分析了Telephony了模块所提供的系统服务,包括系统服务的注册入口以及调用系统服务接口的实例。

书籍目录:

推荐序

前言

第一部分 基础篇

第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

内容摘要:

Telephony原理剖析与最佳实践》要做的技术准备;第二部分(4~6章),对Android的通话功能进行了深入的分析,包括对通话流程的分析、对主动拨号和来电流程的分析、对通话应用机制的分析,以及对手机通信功能在框架层和应用层中的实现机制的分析;第三部分(7~9章),对Android的通信功能进行了深入的分析,包括对网络服务状态的运行机制的分析、对Android手机上网的实现机制的分析,以及对短息发送和接收流程的分析;第四部分(10~12章),对Android RIL的工作机制进行了深入的分析,包括对框架层中的RILJ运行机制的分析、对RILC系统结构及LibRIL运行机制的分析,以及对Reference-RIL框架的原理的分析;第五部分(13章),分析了Telephony模块所提供的系统服务,包括系统服务的注册入口以及调用系统服务接口的实例。

书籍规格:

书籍详细信息
书名深入理解Android站内查询相似图书
9787111406761
如需购买下载《深入理解Android》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位机械工业出版社
版次1版印次1
定价(元)69.0语种简体中文
尺寸24 × 19装帧平装
页数 352 印数

书籍信息归属:

深入理解Android是机械工业出版社于2013.1出版的中图分类号为 TN929.53 的主题关于 移动终端-应用程序-程序设计 的书籍。