Android Telephony原理解析與開(kāi)發(fā)指南
定 價(jià):59.8 元
- 作者:楊青平
- 出版時(shí)間:2018/8/1
- ISBN:9787115489159
- 出 版 社:人民郵電出版社
- 中圖法分類(lèi):TN929.53
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
隨著Android系統(tǒng)平臺(tái)的應(yīng)用越來(lái)越廣泛,更多人加入到Android平臺(tái)的定制研發(fā)中來(lái)。Android的基本通信功能是Android系統(tǒng)定制的核心模塊,本書(shū)主要圍繞Android Telephony和融合通信兩個(gè)核心部分展開(kāi)。Android Telephony部分從接打電話(huà)、網(wǎng)絡(luò)服務(wù)、數(shù)據(jù)上網(wǎng)三個(gè)功能解析Telephony。
全書(shū)共10章,主要內(nèi)容包括初識(shí)Android、搭建Android源代碼編譯調(diào)試環(huán)境、深入解析通話(huà)流程、詳解Telecom、詳解TeleService、Voice Call語(yǔ)音通話(huà)模型、ServiceState網(wǎng)絡(luò)服務(wù)、Data Call移動(dòng)數(shù)據(jù)業(yè)務(wù)、SMS & MMS業(yè)務(wù)、Radio Interface Layer)。
本書(shū)適合計(jì)算機(jī)科學(xué)技術(shù)、信息技術(shù)、通信工程、軟件工程等專(zhuān)業(yè)的研究生、本科、高職高專(zhuān)學(xué)生使用。
Android系統(tǒng)工程師和軟件開(kāi)發(fā)工程師傾力打造Android專(zhuān)題書(shū)籍
知識(shí)框架完整、條理清晰、理論和實(shí)戰(zhàn)相結(jié)合
深度解析Android手機(jī)定制開(kāi)發(fā)中的重點(diǎn)和難點(diǎn)Telephony通信模塊
楊青平,著有《深入解析Android:Telephony原理剖析及實(shí)踐》,Android系統(tǒng)工程師和軟件開(kāi)發(fā)工程師,熱衷于Android用源代碼和系統(tǒng)原理的研究,對(duì)Android的系統(tǒng)架構(gòu)、設(shè)計(jì)原理以及Telephony和Framework等核心功能模塊的工作機(jī)制有非常深入的研究。目前任職于國(guó)內(nèi)AndroidOS提供商ThunderSoft(中科創(chuàng)達(dá)),擔(dān)任系統(tǒng)架構(gòu)師。
目 錄
第 1章 初識(shí)Android 1
1.1 智能手機(jī)的系統(tǒng)結(jié)構(gòu) 1
1.2 Android系統(tǒng)架構(gòu) 2
1.2.1 應(yīng)用層 3
1.2.2 應(yīng)用框架層 3
1.2.3 系統(tǒng)運(yùn)行庫(kù)層 3
1.2.4 核心層 4
1.3 Android Telephony框架結(jié)構(gòu) 5
1.3.1 系統(tǒng)運(yùn)行庫(kù)層的HAL 6
1.3.2 簡(jiǎn)析HAL結(jié)構(gòu) 6
1.3.3 Android為什么引入HAL 7
1.3.4 Android中HAL的運(yùn)行結(jié)構(gòu) 7
本章小結(jié) 8
第 2章 搭建Android源代碼編譯調(diào)試環(huán)境 9
2.1 Ubuntu Linux操作系統(tǒng)及工具安裝 10
2.1.1 PC配置建議 10
2.1.2 Ubuntu安裝光盤(pán)制作 10
2.1.3 Ubuntu安裝過(guò)程 10
2.1.4 安裝OpenJDK 12
2.1.5 Ubuntu系統(tǒng)工具包更新升級(jí) 13
2.2 Android源代碼下載及編譯過(guò)程 13
2.2.1 工作目錄設(shè)置 13
2.2.2 源代碼下載 13
2.2.3 開(kāi)始編譯Android源代碼 14
2.2.4 編譯單個(gè)模塊 16
2.3 Android Studio及SDK 17
2.3.1 下載和配置Android Studio 17
2.3.2 Android SDK下載及配置和使用 17
2.3.3 使用Android SDK啟動(dòng)Android虛擬設(shè)備 19
2.3.4 Android調(diào)試工具adb的使用方法 20
2.3.5 相關(guān)技巧匯總 20
2.4 在Google手機(jī)上調(diào)試Android源碼 21
2.4.1 Google手機(jī)對(duì)應(yīng)編譯選項(xiàng) 21
2.4.2 Google手機(jī)刷入工廠鏡像 21
2.4.3 編譯本地鏡像并刷入Google手機(jī) 22
2.4.4 Google手機(jī)上調(diào)試Android源碼 25
2.4.5 關(guān)鍵問(wèn)題總結(jié) 26
本章小結(jié) 27
第3章 深入解析通話(huà)流程 29
3.1 撥號(hào)流程分析 29
3.1.1 打開(kāi)Nexus 6P手機(jī)的撥號(hào)盤(pán) 30
3.1.2 進(jìn)入撥號(hào)界面DialtactsActivity 30
3.1.3 DialpadFragment撥號(hào)盤(pán) 32
3.1.4 ITelecomService接收撥號(hào)請(qǐng)求服務(wù) 33
3.1.5 CallsManager撥號(hào)流程處理 35
3.1.6 IInCallService服務(wù)的響應(yīng)過(guò)程 40
3.1.7 繼續(xù)分析CallsManager.placeOutgoingCall 46
3.1.8 Telecom應(yīng)用撥號(hào)流程回顧與總結(jié) 50
3.1.9 IConnectionService服務(wù)的響應(yīng)過(guò)程 51
3.1.10 TelecomAdapter接收消息回調(diào) 55
3.1.11 撥號(hào)流程總結(jié) 56
3.2 來(lái)電流程分析 57
3.2.1 分析radio來(lái)電日志 58
3.2.2 UNSOL_RESPONSE_CALL_STATE_CHANGED消息處理 58
3.2.3 擴(kuò)展RegistrantList消息處理機(jī)制 59
3.2.4 GsmCdmaCallTracker消息處理 61
3.2.5 ITelecomService處理來(lái)電消息 63
3.2.6 來(lái)電流程總結(jié) 66
3.3 通話(huà)總結(jié) 66
3.3.1 通話(huà)關(guān)鍵代碼匯總 66
3.3.2 通話(huà)狀態(tài)更新消息上報(bào)流程 68
3.3.3 控制通話(huà)消息下發(fā)流程 69
3.4 建立Android通話(huà)模型 70
本章小結(jié) 71
第4章 詳解Telecom 73
4.1 Telecom應(yīng)用加載入口 73
4.1.1 TelecomManager類(lèi)核心邏輯分析 74
4.1.2 Telecom應(yīng)用代碼匯總 76
4.1.3 ITelecomService的onBind過(guò)程 77
4.1.4 第 二個(gè)撥號(hào)入口 79
4.2 Telecom交互模型 79
4.2.1 匯總frameworks/base/telecomm代碼 80
4.2.2 綁定IInCallService機(jī)制 81
4.2.3 綁定IConnectionService機(jī)制 82
4.2.4 演進(jìn)Telecom交互模型 85
4.3 核心Listener回調(diào)消息處理 86
4.3.1 CallsManagerListener 86
4.3.2 Call.Listener 88
4.3.3 CreateConnectionResponse 90
4.3.4 總結(jié)Listener消息 90
4.4 擴(kuò)展CallsManager 92
4.4.1 記錄通話(huà)日志 92
4.4.2 耳機(jī)Hook事件 93
4.4.3 通知欄信息同步 93
本章小結(jié) 94
第5章 詳解TeleService 95
5.1 加載過(guò)程分析 95
5.1.1 應(yīng)用基本信息 96
5.1.2 PhoneGlobals.onCreate 97
5.1.3 TelephonyGlobals.onCreate 98
5.2 Telephony Phone 98
5.2.1 GsmCdmaPhone 99
5.2.2 Composition(組合)關(guān)系 101
5.2.3 Facade Pattern 102
5.2.4 Handler消息處理機(jī)制 103
5.3 擴(kuò)展PhoneAccount 105
5.3.1 PhoneAccount初始化過(guò)程 105
5.3.2 PhoneAccount注冊(cè)響應(yīng) 108
5.3.3 PhoneAccount在撥號(hào)流程中的作用分析 109
5.3.4 小結(jié) 112
5.4 TeleService服務(wù) 113
5.4.1 phone系統(tǒng)服務(wù) 113
5.4.2 isub系統(tǒng)服務(wù) 115
5.4.3 IConnectionService應(yīng)用服務(wù) 118
本章小結(jié) 123
第6章 Voice Call語(yǔ)音通話(huà)模型 125
6.1 詳解GsmCdmaCallTracker 125
6.1.1 代碼結(jié)構(gòu)解析 126
6.1.2 Handler消息處理方式 127
6.1.3 與RILJ對(duì)象的交互機(jī)制 130
6.2 handlePollCalls方法 134
6.2.1 準(zhǔn)備階段 134
6.2.2 更新通話(huà)相關(guān)信息 135
6.2.3 發(fā)出通知 140
6.2.4 更新mState 141
6.3 通話(huà)管理模型分析 142
6.3.1 GsmCdmaCall 143
6.3.2 GsmCdmaConnection 143
6.3.3 DriverCall、Call、Connection 146
6.4 補(bǔ)充通話(huà)連接斷開(kāi)處理機(jī)制 149
6.4.1 本地主動(dòng)掛斷通話(huà) 149
6.4.2 遠(yuǎn)端斷開(kāi)通話(huà)連接 152
6.5 區(qū)分Connection 154
6.6 擴(kuò)展InCallUi 155
6.6.1 初始化過(guò)程 155
6.6.2 addCall 158
6.6.3 InCallUi通話(huà)界面 160
6.6.4 updateCall 165
6.7 驗(yàn)證Call運(yùn)行模型 166
6.7.1 Telephony Voice Call 167
6.7.2 Telecom Call 170
6.7.3 InCallUi Call 171
本章小結(jié) 173
第7章 ServiceState網(wǎng)絡(luò)服務(wù) 175
7.1 ServiceState 176
7.1.1 ServiceState類(lèi)的本質(zhì) 176
7.1.2 關(guān)鍵常量信息 177
7.1.3 關(guān)鍵屬性 177
7.1.4 關(guān)鍵方法 178
7.2 ServiceStateTracker運(yùn)行機(jī)制詳解 179
7.2.1 核心類(lèi)圖 179
7.2.2 代碼結(jié)構(gòu) 180
7.2.3 Handler消息處理機(jī)制 181
7.2.4 與RILJ對(duì)象的交互機(jī)制 184
7.3 handlePollStateResult方法 186
7.3.1 異常處理 186
7.3.2 handlePollStateResultMessage 187
7.3.3 繼續(xù)更新mNewSS 190
7.3.4 完成收尾工作 191
7.4 *#*#4636#*#*測(cè)試工具 193
7.4.1 網(wǎng)絡(luò)服務(wù)信息 194
7.4.2 擴(kuò)展ITelephonyRegistry 196
7.4.3 展示小區(qū)信息 197
7.4.4 小區(qū)信息更新源頭 198
7.4.5 信號(hào)強(qiáng)度實(shí)時(shí)變化 199
7.5 飛行模式 201
7.5.1 飛行模式開(kāi)啟關(guān)閉入口邏輯 201
7.5.2 Radio模塊開(kāi)啟關(guān)閉 202
7.5.3 WiFi模塊開(kāi)啟關(guān)閉 202
7.5.4 藍(lán)牙模塊開(kāi)啟關(guān)閉 202
7.6 擴(kuò)展SIM卡業(yè)務(wù) 203
7.6.1 SIM卡業(yè)務(wù)分析 203
7.6.2 駐網(wǎng)過(guò)程分析 204
7.6.3 SoftSim業(yè)務(wù)實(shí)現(xiàn)分析 205
本章小結(jié) 206
第8章 Data Call移動(dòng)數(shù)據(jù)業(yè)務(wù) 207
8.1 DcTracker初始化過(guò)程 207
8.1.1 Handler消息注冊(cè) 208
8.1.2 初始化ApnContext 208
8.1.3 認(rèn)識(shí)APN 210
8.1.4 創(chuàng)建DcController 212
8.1.5 注冊(cè)O(shè)bserver 213
8.1.6 廣播接收器 213
8.1.7 加載ApnSetting 213
8.2 解析StateMachine 215
8.2.1 State設(shè)計(jì)模式 215
8.2.2 StateMachine核心類(lèi) 215
8.2.3 初始化流程 216
8.2.4 運(yùn)行流程 217
8.2.5 小結(jié) 218
8.3 DataConnection 219
8.3.1 關(guān)鍵屬性 220
8.3.2 關(guān)鍵方法 220
8.3.3 StateMachine初始化流程 221
8.4 開(kāi)啟移動(dòng)數(shù)據(jù)業(yè)務(wù) 222
8.4.1 流程分析 222
8.4.2 前置條件分析 227
8.4.3 DcActiveState收尾工作 231
8.4.4 Suspend掛起狀態(tài) 232
8.4.5 查看手機(jī)上網(wǎng)基本信息 232
8.5 關(guān)閉移動(dòng)數(shù)據(jù)業(yè)務(wù) 233
8.6 DataConnection狀態(tài)轉(zhuǎn)換 233
8.7 獲取Android手機(jī)上網(wǎng)數(shù)據(jù)包 234
8.7.1 使用tcpdump工具抓取TCP/IP數(shù)據(jù)包 234
8.7.2 使用Wireshark軟件分析TCP/IP數(shù)據(jù)包 235
本章小結(jié) 235
第9章 SMS&MMS業(yè)務(wù) 236
9.1 短信發(fā)送流程 236
9.1.1 進(jìn)入短信應(yīng)用 236
9.1.2 短信編輯界面 237
9.1.3 Action處理機(jī)制 239
9.1.4 繼續(xù)跟進(jìn)短信發(fā)送流程 241
9.1.5 phone進(jìn)程中的短信發(fā)送流程 243
9.2 擴(kuò)展短信發(fā)送業(yè)務(wù) 245
9.2.1 確認(rèn)短信發(fā)送結(jié)果 245
9.2.2 重發(fā)機(jī)制 246
9.2.3 狀態(tài)報(bào)告 247
9.3 短信接收流程 247
9.3.1 RIL接收短信消息 247
9.3.2 GsmInboundSmsHandler 248
9.3.3 Messaging應(yīng)用接收新短信 250
9.3.4 PDU 251
9.3.5 短信業(yè)務(wù)小結(jié) 252
9.4 彩信關(guān)鍵業(yè)務(wù)邏輯 253
9.4.1 彩信發(fā)送入口 253
9.4.2 imms系統(tǒng)服務(wù) 254
9.4.3 彩信發(fā)送流程 255
9.4.4 Data Call 256
9.4.5 doHttp 259
9.4.6 接收彩信 259
9.4.7 MmsService小結(jié) 260
本章小結(jié) 261
第 10章 Radio Interface Layer 262
10.1 解析RILJ 263
10.1.1 認(rèn)識(shí)RIL類(lèi) 263
10.1.2 RILRequest 265
10.1.3 IRadio關(guān)聯(lián)的服務(wù) 266
10.1.4 RIL消息分類(lèi) 270
10.1.5 Solicited Request 270
10.1.6 Solicited Response 271
10.1.7 UnSolicited 274
10.2 詳解rild 274
10.2.1 RIL_startEventLoop 275
10.2.2 獲取RIL_RadioFunctions 275
10.2.3 注冊(cè)RIL_RadioFunctions 277
10.3 libril初始化流程 278
10.3.1 RIL_startEventLoop 278
10.3.2 RIL_register 280
10.4 擴(kuò)展hal接口 281
10.4.1 增加接口定義 282
10.4.2 驗(yàn)證生成的代碼 282
10.4.3 實(shí)現(xiàn)新增接口 285
10.4.4 運(yùn)行結(jié)果驗(yàn)證 286
10.5 RILC運(yùn)行機(jī)制 287
10.5.1 Solicited消息 287
10.5.2 UnSolicited消息 291
本章小結(jié) 293