|
-- 會員 / 註冊 --
|
|
|
|
深入理解Android:Telephony原理剖析與最佳實踐 ( 簡體 字) |
作者:楊青平 | 類別:1. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 34660 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:1/6/2013 |
頁數:329 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
【不接受訂購】 | ISBN:9787111406761 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書是“深入理解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模組所提供的系統服務,包括系統服務的註冊入口以及調用系統服務介面的實例。
|
目錄:推薦序 前 言 第一部分 基礎篇 第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
|
序: |
|