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