Android開發進入專業時代: 深入Telephony核心模組詳解
作者 | 楊青平 |
---|---|
出版社 | 佳魁資訊股份有限公司 |
商品描述 | Android開發進入專業時代: 深入Telephony核心模組詳解:從原始程式碼角度深入解析Telephony的架構設計與實現原理,全面揭示Android系統的通訊機制!Android智慧型手機的爆 |
作者 | 楊青平 |
---|---|
出版社 | 佳魁資訊股份有限公司 |
商品描述 | Android開發進入專業時代: 深入Telephony核心模組詳解:從原始程式碼角度深入解析Telephony的架構設計與實現原理,全面揭示Android系統的通訊機制!Android智慧型手機的爆 |
內容簡介 從原始程式碼角度深入解析Telephony的架構設計與實現原理,全面揭示Android系統的通訊機制! Android 智慧型手機的爆發式成長和逐步從一般手機轉向Android 智慧型手機的廠商,催生了大量的從業人員需求,熟悉Android 智慧型手機開發,特別是熟悉Android Telephony 開發的技術人員越來越受到市場的青睞。Telephony 模組為智慧型手機的核心套件,是區別行動OS與桌面OS的重要特色。雖然Android來自於Linux,但是在普通Linux中並不存在,對很多從Java 或Linux 開發轉型而來的人員來說,Telephony 顯得陌生而神秘,而且Telephony 由於其固有的通訊複雜度,以及與環境和硬體的較大連結性,一直是Android 智慧型手機開發中的障礙,也是所有智慧型手機專案所必須克服的難度。在Android手機訂製化的過程中,Telephony相關的範圍和內容也非常多,從應用層到框架層,再到RIL 與Modem 無線通訊模組的互動,所有部分均有不同程度的訂製和最佳化,因此,在Android手機平台訂製化研發的過程中,需要對Android Telephony全面且深入的了解。本書以Android 4.0.3 原始程式碼為基礎,深入地解析Android Telephony有關的主要內容,包含Call 通話、ServiceState 連線網路服務狀態、DataConnection 手機上網資料連接以及SMS&MMS簡訊和多媒體簡訊的應用等,並且詳細解析Android RIL 的執行機制。全書分為5 個部分,共13 章:第一部分(第1~3 章)首先介紹Android 和智慧型手機的框架結構,幫助讀者了解一些手機的發展歷程;然後講解Android 原始程式碼的編譯環境架設過程,並普及Android 中的一些技術基礎。第二部分(第4~6 章)詳解Android Telephony 通話功能。首先整體認識通話功能在整個Android 系統平台所處的位置,及每層的主要作用;然後分析通話的關鍵流程,主要表現在主動撥號流程和來電流程的過程分析;最後解析通話功能在應用層和框架層中的實現機制和邏輯。第三部分(第7~9 章)詳解ServiceState(網路服務狀態)、DataConnection(手機上網資料連接)、SMS 和MMS 的業務實現流程,以及在應用層和框架層中的關鍵處理邏輯和實現機制。第四部分(第10~12 章)首先講解Android RIL 框架結構和關鍵業務流程,然後詳細解析RILJ、RILC 和Reference-RIL 的執行機制。第五部分(第13 章)講解Telephony 模組所提供的系統服務,包含系統服務的註冊入口以及呼叫系統服務介面的實例。
作者介紹 ■作者簡介楊青平
產品目錄 PART 1 基礎篇第01章 初識Android1.1 智慧型手機的系統結構1.2 Android 系統架構 1.2.1 應用層 1.2.2 應用框架層1.2.3 系統執行函數庫層1.2.4 核心層 1.3 Android Telephony 框架結構1.3.1 系統執行函數庫層的HAL 層1.3.2 簡析HAL 結構1.3.3 Android 為什麼引用HAL1.3.4 Android 中HAL 的執行結構1.4 本章小結 第02章 架設Android 原始程式碼編譯環境2.1 Ubuntu Linux 作業系統及工具安裝2.1.1 PC 設定建議 2.1.2 Ubuntu 安裝光碟的製作2.1.3 Ubuntu 安裝過程 2.1.4 Ubuntu 系統工具套件更新升級2.1.5 Java 執行環境JDK 安裝及設定2.1.6 Android SDK 的下載和設定2.1.7 使用Android SDK 啟動虛擬裝置2.2 Android 原始程式碼下載及編譯過程2.2.1 工作目錄設定2.2.2 原始程式碼下載 2.2.3 整體編譯Android 原始程式碼 2.2.4 單一模組隨選編譯 2.2.5 編譯產生本機Android SDK2.3 Android 常用工具使用及相關技巧說明 2.3.1 使用本機編譯成功的鏡像檔案啟動Android 模擬器 2.3.2 Android 偵錯工具adb 的使用方法2.3.3 進入Android 虛擬裝置主控台模擬簡訊、來電等功能2.4 Eclipse 設定及使用2.4.1 Android 開發套件ADT下載及設定2.4.2 建立Android 原始程式碼Java 專案 2.4.3 格式化Android Java 原始程式碼2.5 使用Source Insight 方便閱讀C C++ 程式2.5.1 安裝Wine 2.5.2 安裝Source Insight2.5.3 設定Source Insight C C++ 專案 2.6 本章小結第03章 主要技術準備3.1 何謂同步和非同步 3.2 Handler 訊息處理機制 3.2.1 Handler 概念分析 3.2.2 Handler 特性 3.2.3 常用Handler 訊息處理機制介紹 3.2.4 Handler 的作用3.3 AIDL 跨應用服務 3.3.1 AIDL 概念分析3.3.2 AIDL 服務提供方 3.3.3 AIDL 服務呼叫方 3.4 廣播 3.4.1 Android 系統中的廣播3.4.2 Broadcast 接收3.4.3 Broadcast 發送 3.5 本章小結PART 2 Telephony 通話功能第04章 架設Android 原始程式碼編譯環境4.1 通話相關主要原始程式碼整理及簡要說明4.2 電話主動呼叫流程分析 4.2.1 執行Android 虛擬裝置 4.2.2 撥號介面DialtactsActivity 的onCreate 方法4.2.3 DialpadFragment 撥號鍵Tab 表單 4.2.4 尋找撥號統一入口OutgoingCallBroadcaster4.2.5 CallController 撥號placeCall 方法 4.2.6 Phone 幫助類別PhoneUtils 靜態placeCall 方法4.2.7 通話大管家CallManager 4.2.8 Phone 物件的dial 撥號方法4.2.9 Call 狀態追蹤者GsmCallTracker4.2.10 RIL 訊息的出入口RIL.java4.2.11 啟動通話主介面InCallScreen4.2.12 撥號流程歸納 4.3 電話被動接收來電流程分析4.3.1 Android 虛擬裝置模擬接收來電 4.3.2 RegistrantList 訊息處理機制 4.3.3 GsmCallTracker 回應RIL 的Call 狀態變化通知4.3.4 RIL.java 的getCurrentCalls 方法4.3.5 GsmCallTracker 回應訊息通知4.3.6 handlePollCalls 發出來電通知 4.3.7 GSMPhone 的通知方法notifyNewRingingConnection4.3.8 CallManager 回應來電訊息通知4.3.9 CallNotifier 回應來電通知4.3.10 InCallScreen 展現來電介面 4.3.11 來電流程歸納 4.4 通話關鍵流程4.4.1 建立Android 通話模型4.4.2 AT 指令發送流程4.4.3 通話狀態變化流程 4.4.4 本機主動掛斷通話流程4.4.5 通話對方中斷通話連接流程 4.5 本章小結第05章 深入解析Telephony 通話應用機制5.1 Phone 應用的關鍵程式解析 5.2 認識通話主介面InCallScreen 5.2.1 InCallScreen 中的主要方法 5.2.2 單例模式的Activity 通話介面 5.2.3 Layout 版面配置說明 5.3 通話主介面InCallScreen5.3.1 onCreate—執行Activity 5.3.2 onNewIntent—單例InCallScreen 載入入口5.3.3 internalResolveIntent—進入InCallScreen 處理Intent 的唯一方法 5.3.4 onResume—顯示InCallScreen 通話介面 5.3.5 handleMessage—Handler 訊息回應方法5.3.6 onSuppServiceFailed—顯示通話服務失敗提示訊息5.3.7 updateScreen—更新通話介面5.3.8 onDisconnect—中斷通話連接 5.3.9 handleOnscreenButtonClick—回應通話控制按鈕點擊事件5.3.10 InCallScreen 通話介面執行機制歸納5.4 通話資訊展示CallCard5.4.1 兩路通話版面配置View 控制項 5.4.2 updateState—更新CallCard 5.4.3 displayMainCallStatus—顯示 更新第一線通話資訊5.4.4 displayOnHoldCallStatus—顯示 更新第二線通話資訊5.4.5 修改通話資訊展示的想法及原則 5.5 通話控制InCallTouchUi5.5.1 View 版面配置控制項 5.5.2 updateState—更新InCallTouchUi 5.5.3 MultiWaveView—來電控制接聽、拒接介面5.5.4 HeadSet—回應無線事件5.5.5 修改來電介面的想法及原則5.6 通話功能中必不可少的DTMF5.6.1 什麼是DTMF5.6.2 DTMFTwelveKeyDialer 的版面配置 5.6.3 如何顯示DTMF 介面5.6.4 Tone 音發送流程5.7 Phone 應用的載入入口PhoneApp 類別5.7.1 PhoneApp 類別屬性及方法 5.7.2 onCreate—PhoneApp 應用載入入口5.7.3 PowerManager—PhoneApp 電源管理5.7.4 Sensor—PhoneApp 感應器的應用5.7.5 MediaButtonBroadcastReceiver—接收耳機HOOK 鍵廣播事件5.7.6 PhoneAppBroadcastReceiver—接收Phone 應用雜項廣播事件5.8 Handler 訊息處理的後台工作者CallNotifier 5.8.1 CallNotifier 的本質 5.8.2 Handler 訊息註冊和回應機制 5.8.3 onNewRingingConnection—接收到新來電的後台處理5.8.4 onPhoneStateChanged—通話狀態變化的後台處理5.8.5 onDisconnect—通話連接中斷的後台處理 5.9 本章小結第06章 手機通話功能框架層實現機制6.1 Telephony Frameworks 層解析6.1.1 通話功能相關程式檔案6.1.2 通話功能關鍵類別6.1.3 Telephony 通訊能力模型 6.2 GSMPhone 物件詳解 6.2.1 GSMPhone 類別層次繼承關係6.2.2 GSMPhone 類別程式結構解析6.2.3 PhoneFactory 工廠方法實現類別6.2.4 PhoneProxy 代理模式實現類別6.2.5 GSMPhone 類別的組合邏輯關係 6.2.6 GSMPhone 類別的Handler 訊息處理機制6.2.7 GSMPhone 類別通話管理實現機制6.3 CallTracker 執行機制 6.3.1 GsmCallTracker 類別程式結構解析6.3.2 GsmCallTracker 的Handler 訊息處理機制 6.3.3 GsmCallTracker 與RIL 物件的互動機制6.4 以GsmCall 為核心的通話管理模型 6.4.1 GsmCall 類別程式結構解析 6.4.2 GsmConnection 類別程式結構解析 6.4.3 DriverCall 與GsmCall、GsmConnection 的關係 6.5 GsmCallTracker 類別的 handlePollCalls 方法處理邏輯6.5.1 初始化操作6.5.2 更新通話相關資訊 6.5.3 根據最新的通話狀態發出通知 6.5.4 更新手機狀態6.6 GsmCallTracker 通話連接中斷的處理機制6.6.1 本機主動掛斷通話的處理機制6.6.2 通話對方中斷通話連接的處理機制6.7 Android 虛擬裝置上驗證GSM 手機的通話模型 6.7.1 增加記錄檔輸出 6.7.2 執行Android 虛擬裝置並分析記錄檔 6.8 通話大管家CallManager6.8.1 CallManager 的本質6.8.2 Handler 訊息註冊及執行機制6.8.3 如何取得通話基本資訊6.9 通話計時實例分析6.9.1 記錄通話的開始時間6.9.2 記錄通話的結束時間 6.9.3 Phone 應用計算通話時長 6.10 Handler 訊息處理機制 6.10.1 Handler 訊息的註冊過程 6.10.2 Handler 訊息的接收和回應過程6.11 實戰—來電防火牆6.11.1 應用原理分析6.11.2 在onNewRingingConnection 方法加入攔截請求6.12 本章小結PART 3 Telephony 通訊功能第07章 網路服務狀態執行機制7.1 什麼是ServiceState7.2 初識ServiceState 實體類別7.2.1 ServiceState 類別的實質7.2.2 ServiceState 類別關鍵常數及屬性 7.2.3 ServiceState 類別關鍵方法7.3 ServiceStateTracker 執行機制詳解 7.3.1 ServiceStateTracker 抽象類別為核心的類別圖 7.3.2 ServiceStateTracker 程式結構 7.3.3 ServiceStateTracker 的Handler 訊息處理機制7.3.4 ServiceStateTracker 與RIL 物件的互動機制7.4 handlePollStateResult 方法處理邏輯7.4.1 RIL 傳回查詢結果的例外判斷和處理7.4.2 處理4 個不同網路服務查詢傳回的結果7.4.3 用pollStateDone 方法完成收尾工作 7.5 ServiceState 最佳實作7.5.1 取得電信業者資訊7.5.2 狀態列手機訊號即時變化7.6 實戰—飛航模式的實現 7.6.1 飛航模式的設定入口7.6.2 Radio 無線通訊模組的開啟或關閉 7.7 本章小結 第08章 Android 手機上網實現機制8.1 Android 網路整體結構 8.2 什麼是DataConnection 8.2.1 DataConnection 類別定義及子類別8.2.2 DataConnection 類別關鍵屬性8.2.3 DataConnection 類別的方法8.2.4 5 個資料連線物件的狀態轉換 8.3 StateMachine 狀態機 8.3.1 State 設計模式 8.3.2 StateMachine 核心類別 8.3.3 StateMachine 執行機制 8.3.4 DataConnection 使用State 模式的執行機制 8.4 什麼是APN8.4.1 APN 設定關鍵欄位 8.4.2 Android 支援的APN 型態8.4.3 如何在Android 中新增APN 設定8.5 開機自動建立default 預設資料連接8.5.1 如何檢視手機上網的基本參數設定8.5.2 初始化ApnContext8.5.3 建立DataConnection 資料連接8.5.4 啟動DataConnection 資料連接8.6 DataConnectionTracker 執行機制8.6.1 初始化ApnContext 操作 8.6.2 開機建立default 預設的資料連接8.6.3 關閉資料連接 8.6.4 迴圈更新網路連接狀態資訊 8.6.5 APN 資料庫設定資訊變化的觀察者8.7 取得Android 手機上網資料封包8.7.1 使用tcpdump 工具抓取TCP IP 資料封包8.7.2 使用Wireshark 軟體分析TCP IP 資料封包8.8 MMS 多媒體簡訊資料連接的實現8.8.1 建立和關閉多媒體簡訊資料連接 8.8.2 如何支援多種型態網路連接8.9 實戰—手機上網資料總開關的實現8.10 本章小結第09章 深入解析簡訊發送和接收流程9.1 MMS 應用主要原始程式碼整理及簡要說明 9.2 主動發送簡訊流程分析9.2.1 進入簡訊階段清單介面 9.2.2 簡訊編輯介面9.2.3 SmsMessageSender 簡訊發送處理邏輯 9.2.4 Telephony Frameworks 層中的SmsManager 類別9.2.5 IccSmsInterfaceManager 服務發送簡訊9.2.6 SMSDispatcher 簡訊分發器9.2.7 主動發送簡訊流程歸納 9.3 簡訊發送狀態相關處理機制9.3.1 如何判斷簡訊是否成功發送到簡訊中心 9.3.2 如何判斷簡訊接收方已經成功收取簡訊 9.4 簡訊接收流程分析9.4.1 簡訊接收的開始9.4.2 進入簡訊分發器SMSDispatcher 9.4.3 接收並處理新簡訊Broadcast 廣播9.4.4 簡訊接收流程歸納9.5 多媒體簡訊發送和接收關鍵流程 9.5.1 多媒體簡訊傳輸過程中的關鍵類別 9.5.2 TransactionService 為核心的多媒體簡訊傳輸機制 9.5.3 Transaction 物件執行多媒體簡訊傳輸9.5.4 以WAP PUSH 為基礎的多媒體簡訊接收與下載9.6 本章小結 PART 4 深入解析Android RIL第10章 Android RIL 框架結構及RILJ 執行機制10.1 Android RIL 關鍵處理流程10.1.1 Android RIL 框架結構 10.1.2 Android RIL 的資料互動 10.2 認識RILJ10.2.1 RILJ 核心類別圖10.2.2 RILJ 關鍵屬性 10.2.3 RILJ 關鍵方法 10.2.4 RILJ 執行機制10.3 認識RILRequest 類別 10.3.1 RILRequest 類別的關鍵屬性 10.3.2 RILRequest 類別的方法 10.4 解析RILJ 發出RIL 請求流程 10.4.1 send 方法發送Handler 訊息 10.4.2 RILSender 接收和處理Handler 訊息10.5 解析RILJ 接收Response 訊息處理流程10.5.1 RILReceiver 內部類別執行機制 10.5.2 Solicited Response 訊息處理方法processSolicited10.5.3 UnSolicited Response 訊息處理方法processUnsolicited10.6 本章小結第11章 RILC 系統結構及LibRIL 執行機制11.1 RILC 主要程式目錄結構11.2 解析RILC 執行機制11.2.1 RILC 啟動過程 11.2.2 RILC 執行過程 11.3 初識RILC 中的執行環境LibRIL11.3.1 LibRIL 主要檔案及作用 11.3.2 重點結構說明11.4 LibRIL 執行環境載入過程11.4.1 開啟ril_event 事件監聽入口RIL_startEventLoop 11.4.2 RIL_register 函數引用三方RIL_RadioFunctions11.5 執行狀態中ril_event 事件處理機制11.5.1 認識ril_event 結構11.5.2 RIL 事件生命週期控制的處理函數 11.5.3 ril_event_loop 處理機制 11.6 詳解LibRIL 執行機制11.6.1 RILJ 與LibRIL 建立Socket 連接過程11.6.2 Solicited 訊息的互動流程和處理機制 11.7 本章小結第12章 Reference-RIL 執行框架12.1 Reference-RIL 執行機制12.1.1 RIL_Init 函數初始化Reference-RIL12.1.2 onRequest 接收LibRIL 的請求呼叫 12.1.3 UnSolicited 訊息處理邏輯 12.2 AT 指令 12.2.1 如何新增AT 指令 12.2.2 Android Telephony 常用AT 指令12.3 Android RIL 層執行框架和機制歸納12.3.1 歸納Solicited 訊息處理流程 12.3.2 歸納UnSolicited 訊息處理流程12.4 本章小結PART 5 系統服務第13章 Telephony 提供的系統服務13.1 System Service 系統服務類別圖 13.2 詳解PhoneInterfaceManager 實現機制 13.2.1 ITelephony.aidl 介面定義 13.2.2 PhoneInterfaceManager 服務建立過程 13.2.3 PhoneInterfaceManager 服務使用實例分析13.3 詳解TelephonyRegistry 實現機制13.3.1 系統服務的建立入口13.3.2 TelephonyRegistry 關鍵方法13.3.3 listen 方法處理邏輯 13.3.4 notifyCallState 方法發出通話狀態變化通知13.3.5 觸發TelephonyRegistry 發出通知機制13.3.6 TelephonyRegistry 系統服務使用實例分析13.4 簡述TelephonyManager 實現機制13.5 本章小結
書名 / | Android開發進入專業時代: 深入Telephony核心模組詳解 |
---|---|
作者 / | 楊青平 |
簡介 / | Android開發進入專業時代: 深入Telephony核心模組詳解:從原始程式碼角度深入解析Telephony的架構設計與實現原理,全面揭示Android系統的通訊機制!Android智慧型手機的爆 |
出版社 / | 佳魁資訊股份有限公司 |
ISBN13 / | 9789865836702 |
ISBN10 / | 986583670X |
EAN / | 9789865836702 |
誠品26碼 / | 2680799990003 |
頁數 / | 464 |
開數 / | 18K |
注音版 / | 否 |
裝訂 / | P:平裝 |
語言 / | 1:中文 繁體 |
級別 / | N:無 |