Android Telephony原理解析与开发指南作 者: 杨青平出版时间: 2018 内容简介 随着Android系统平台的应用越来越广泛,更多人加入到Android平台的定制研发中来。Android的基本通信功能是Android系统定制的核心模块,本书主要围绕Android Telephony和融合通信两个核心部分展开。Android Telephony部分从接打电话、网络服务、数据上网三个功能解析Telephony。全书共10章,主要内容包括初识Android、搭建Android源代码编译调试环境、深入解析通话流程、详解Telecom、详解TeleService、Voice Call语音通话模型、ServiceState网络服务、Data Call移动数据业务、SMS & MMS业务、Radio Interface Layer)。本书适合计算机科学技术、信息技术、通信工程、软件工程等专业的研究生、本科、高职高专学生使用。图书目录第 1章 初识Android 11.1 智能手机的系统结构 11.2 Android系统架构 21.2.1 应用层 31.2.2 应用框架层 31.2.3 系统运行库层 31.2.4 核心层 41.3 Android Telephony框架结构 51.3.1 系统运行库层的HAL 61.3.2 简析HAL结构 61.3.3 Android为什么引入HAL 71.3.4 Android中HAL的运行结构 7本章小结 8第 2章 搭建Android源代码编译调试环境 92.1 Ubuntu Linux操作系统及工具安装 102.1.1 PC配置建议 102.1.2 Ubuntu安装光盘制作 102.1.3 Ubuntu安装过程 102.1.4 安装OpenJDK 122.1.5 Ubuntu系统工具包更新升级 132.2 Android源代码下载及编译过程 132.2.1 工作目录设置 132.2.2 源代码下载 132.2.3 开始编译Android源代码 142.2.4 编译单个模块 162.3 Android Studio及SDK 172.3.1 下载和配置Android Studio 172.3.2 Android SDK下载及配置和使用 172.3.3 使用Android SDK启动Android虚拟设备 192.3.4 Android调试工具adb的使用方法 202.3.5 相关技巧汇总 202.4 在Google手机上调试Android源码 212.4.1 Google手机对应编译选项 212.4.2 Google手机刷入工厂镜像 212.4.3 编译本地镜像并刷入Google手机 222.4.4 Google手机上调试Android源码 252.4.5 关键问题总结 26本章小结 27第3章 深入解析通话流程 293.1 拨号流程分析 293.1.1 打开Nexus 6P手机的拨号盘 303.1.2 进入拨号界面DialtactsActivity 303.1.3 DialpadFragment拨号盘 323.1.4 ITelecomService接收拨号请求服务 333.1.5 CallsManager拨号流程处理 353.1.6 IInCallService服务的响应过程 403.1.7 继续分析CallsManager.placeOutgoingCall 463.1.8 Telecom应用拨号流程回顾与总结 503.1.9 IConnectionService服务的响应过程 513.1.10 TelecomAdapter接收消息回调 553.1.11 拨号流程总结 563.2 来电流程分析 573.2.1 分析radio来电日志 583.2.2 UNSOL_RESPONSE_CALL_STATE_CHANGED消息处理 583.2.3 扩展RegistrantList消息处理机制 593.2.4 GsmCdmaCallTracker消息处理 613.2.5 ITelecomService处理来电消息 633.2.6 来电流程总结 663.3 通话总结 663.3.1 通话关键代码汇总 663.3.2 通话状态更新消息上报流程 683.3.3 控制通话消息下发流程 693.4 建立Android通话模型 70本章小结 71第4章 详解Telecom 734.1 Telecom应用加载入口 734.1.1 TelecomManager类核心逻辑分析 744.1.2 Telecom应用代码汇总 764.1.3 ITelecomService的onBind过程 774.1.4 第 二个拨号入口 794.2 Telecom交互模型 794.2.1 汇总frameworks/base/telecomm代码 804.2.2 绑定IInCallService机制 814.2.3 绑定IConnectionService机制 824.2.4 演进Telecom交互模型 854.3 核心Listener回调消息处理 864.3.1 CallsManagerListener 864.3.2 Call.Listener 884.3.3 CreateConnectionResponse 904.3.4 总结Listener消息 904.4 扩展CallsManager 924.4.1 记录通话日志 924.4.2 耳机Hook事件 934.4.3 通知栏信息同步 93本章小结 94第5章 详解TeleService 955.1 加载过程分析 955.1.1 应用基本信息 965.1.2 PhoneGlobals.onCreate 975.1.3 TelephonyGlobals.onCreate 985.2 Telephony Phone 985.2.1 GsmCdmaPhone 995.2.2 Composition(组合)关系 1015.2.3 Facade Pattern 1025.2.4 Handler消息处理机制 1035.3 扩展PhoneAccount 1055.3.1 PhoneAccount初始化过程 1055.3.2 PhoneAccount注册响应 1085.3.3 PhoneAccount在拨号流程中的作用分析 1095.3.4 小结 1125.4 TeleService服务 1135.4.1 phone系统服务 1135.4.2 isub系统服务 1155.4.3 IConnectionService应用服务 118本章小结 123第6章 Voice Call语音通话模型 1256.1 详解GsmCdmaCallTracker 1256.1.1 代码结构解析 1266.1.2 Handler消息处理方式 1276.1.3 与RILJ对象的交互机制 1306.2 handlePollCalls方法 1346.2.1 准备阶段 1346.2.2 更新通话相关信息 1356.2.3 发出通知 1406.2.4 更新mState 1416.3 通话管理模型分析 1426.3.1 GsmCdmaCall 1436.3.2 GsmCdmaConnection 1436.3.3 DriverCall、Call、Connection 1466.4 补充通话连接断开处理机制 1496.4.1 本地主动挂断通话 1496.4.2 远端断开通话连接 1526.5 区分Connection 1546.6 扩展InCallUi 1556.6.1 初始化过程 1556.6.2 addCall 1586.6.3 InCallUi通话界面 1606.6.4 updateCall 1656.7 验证Call运行模型 1666.7.1 Telephony Voice Call 1676.7.2 Telecom Call 1706.7.3 InCallUi Call 171本章小结 173第7章 ServiceState网络服务 1757.1 ServiceState 1767.1.1 ServiceState类的本质 1767.1.2 关键常量信息 1777.1.3 关键属性 1777.1.4 关键方法 1787.2 ServiceStateTracker运行机制详解 1797.2.1 核心类图 1797.2.2 代码结构 1807.2.3 Handler消息处理机制 1817.2.4 与RILJ对象的交互机制 1847.3 handlePollStateResult方法 1867.3.1 异常处理 1867.3.2 handlePollStateResultMessage 1877.3.3 继续更新mNewSS 1907.3.4 完成收尾工作 1917.4 *#*#4636#*#*测试工具 1937.4.1 网络服务信息 1947.4.2 扩展ITelephonyRegistry 1967.4.3 展示小区信息 1977.4.4 小区信息更新源头 1987.4.5 信号强度实时变化 1997.5 飞行模式 2017.5.1 飞行模式开启关闭入口逻辑 2017.5.2 Radio模块开启关闭 2027.5.3 WiFi模块开启关闭 2027.5.4 蓝牙模块开启关闭 2027.6 扩展SIM卡业务 2037.6.1 SIM卡业务分析 2037.6.2 驻网过程分析 2047.6.3 SoftSim业务实现分析 205本章小结 206第8章 Data Call移动数据业务 2078.1 DcTracker初始化过程 2078.1.1 Handler消息注册 2088.1.2 初始化ApnContext 2088.1.3 认识APN 2108.1.4 创建DcController 2128.1.5 注册Observer 2138.1.6 广播接收器 2138.1.7 加载ApnSetting 2138.2 解析StateMachine 2158.2.1 State设计模式 2158.2.2 StateMachine核心类 2158.2.3 初始化流程 2168.2.4 运行流程 2178.2.5 小结 2188.3 DataConnection 2198.3.1 关键属性 2208.3.2 关键方法 2208.3.3 StateMachine初始化流程 2218.4 开启移动数据业务 2228.4.1 流程分析 2228.4.2 前置条件分析 2278.4.3 DcActiveState收尾工作 2318.4.4 Suspend挂起状态 2328.4.5 查看手机上网基本信息 2328.5 关闭移动数据业务 2338.6 DataConnection状态转换 2338.7 获取Android手机上网数据包 2348.7.1 使用tcpdump工具抓取TCP/IP数据包 2348.7.2 使用Wireshark软件分析TCP/IP数据包 235本章小结 235第9章 SMS&MMS业务 2369.1 短信发送流程 2369.1.1 进入短信应用 2369.1.2 短信编辑界面 2379.1.3 Action处理机制 2399.1.4 继续跟进短信发送流程 2419.1.5 phone进程中的短信发送流程 2439.2 扩展短信发送业务 2459.2.1 确认短信发送结果 2459.2.2 重发机制 2469.2.3 状态报告 2479.3 短信接收流程 2479.3.1 RIL接收短信消息 2479.3.2 GsmInboundSmsHandler 2489.3.3 Messaging应用接收新短信 2509.3.4 PDU 2519.3.5 短信业务小结 2529.4 彩信关键业务逻辑 2539.4.1 彩信发送入口 2539.4.2 imms系统服务 2549.4.3 彩信发送流程 2559.4.4 Data Call 2569.4.5 doHttp 2599.4.6 接收彩信 2599.4.7 MmsService小结 260本章小结 261第 10章 Radio Interface Layer 26210.1 解析RILJ 26310.1.1 认识RIL类 26310.1.2 RILRequest 26510.1.3 IRadio关联的服务 26610.1.4 RIL消息分类 27010.1.5 Solicited Request 27010.1.6 Solicited Response 27110.1.7 UnSolicited 27410.2 详解rild 27410.2.1 RIL_startEventLoop 27510.2.2 获取RIL_RadioFunctions 27510.2.3 注册RIL_RadioFunctions 27710.3 libril初始化流程 27810.3.1 RIL_startEventLoop 27810.3.2 RIL_register 28010.4 扩展hal接口 28110.4.1 增加接口定义 28210.4.2 验证生成的代码 28210.4.3 实现新增接口 28510.4.4 运行结果验证 28610.5 RILC运行机制 28710.5.1 Solicited消息 28710.5.2 UnSolicited消息 291本章小结 293 上一篇: Unity案例开发大全 第2版 下一篇: 区块链2.0:以太坊应用开发指南