庫存狀況
「香港二樓書店」讓您 愛上二樓●愛上書
我的購物車 加入會員 會員中心 常見問題 首頁
「香港二樓書店」邁向第一華人書店
登入 客戶評價 whatsapp 常見問題 加入會員 會員專區 現貨書籍 現貨書籍 購物流程 運費計算 我的購物車 聯絡我們 返回首頁
香港二樓書店 > 今日好書推介
   
區政新角度
  • 定價64.00元
  • 8 折優惠:HK$51.2
  • 放入購物車
二樓書籍分類
 
Android實戰手冊:Telephony原理剖析與最佳實作

Android實戰手冊:Telephony原理剖析與最佳實作

沒有庫存
訂購需時10-14天
9789863794684
楊青平
佳魁資訊
2017年1月25日
217.00  元
HK$ 184.45  






ISBN:9789863794684
  • 規格:平裝 / 464頁 / 17 x 23 x 2.1 cm / 普通級 / 單色印刷 / 初版
  • 出版地:台灣


  • 電腦資訊 > 程式設計 > 手機/平板程式開發

















      從原始程式碼角度深入解析Telephony的架構設計與實現原理,全面揭示Android系統的通訊機制!



      Android 智慧型手機的爆發式成長和逐步從一般手機轉向Android 智慧型手機的廠商,催生了大量的從業人員需求,熟悉Android 智慧型手機開發,特別是熟悉Android Telephony 開發的技術人員越來越受到市場的青睞。



      Telephony 模組為智慧型手機的核心套件,是區別行動OS與桌面OS的重要特色。雖然Android來自於Linux,但是在普通Linux中並不存在,對很多從Java 或Linux 開發轉型而來的人員來說,Telephony 顯得陌生而神秘,而且Telephony 由於其固有的通訊複雜度,以及與環境和硬體的較大連結性,一直是Android 智慧型手機開發中的障礙,也是所有智慧型手機專案所必須克服的難度。

    ?





    PART 1 基礎篇

    第01章 初識Android

    1.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 為什麼引用HAL

    1.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 SDK

    2.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 Insight

    2.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 尋找撥號統一入口OutgoingCallBroadcaster

    4.2.5 CallController 撥號placeCall 方法 ?

    4.2.6 Phone 幫助類別PhoneUtils 靜態placeCall 方法

    4.2.7 通話大管家CallManager ?

    4.2.8 Phone 物件的dial 撥號方法

    4.2.9 Call 狀態追蹤者GsmCallTracker

    4.2.10 RIL 訊息的出入口RIL.java

    4.2.11 啟動通話主介面InCallScreen

    4.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 的通知方法notifyNewRingingConnection

    4.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 通話主介面InCallScreen

    5.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 通話資訊展示CallCard

    5.4.1 兩路通話版面配置View 控制項 ?

    5.4.2 updateState—更新CallCard ?

    5.4.3 displayMainCallStatus—顯示/ 更新第一線通話資訊

    5.4.4 displayOnHoldCallStatus—顯示/ 更新第二線通話資訊

    5.4.5 修改通話資訊展示的想法及原則 ?

    5.5 通話控制InCallTouchUi

    5.5.1 View 版面配置控制項 ?

    5.5.2 updateState—更新InCallTouchUi ?

    5.5.3 MultiWaveView—來電控制接聽、拒接介面

    5.5.4 HeadSet—回應無線事件

    5.5.5 修改來電介面的想法及原則

    5.6 通話功能中必不可少的DTMF

    5.6.1 什麼是DTMF

    5.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 通話大管家CallManager

    6.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 什麼是ServiceState

    7.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 什麼是APN

    8.4.1 APN 設定關鍵欄位 ?

    8.4.2 Android 支援的APN 型態

    8.4.3 如何在Android 中新增APN 設定

    8.5 開機自動建立default 預設資料連接

    8.5.1 如何檢視手機上網的基本參數設定

    8.5.2 初始化ApnContext

    8.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 認識RILJ

    10.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 訊息處理方法processSolicited

    10.5.3 UnSolicited Response 訊息處理方法processUnsolicited

    10.6 本章小結

    第11章 RILC 系統結構及LibRIL 執行機制?

    11.1 RILC 主要程式目錄結構

    11.2 解析RILC 執行機制

    11.2.1 RILC 啟動過程 ?

    11.2.2 RILC 執行過程 ?

    11.3 初識RILC 中的執行環境LibRIL

    11.3.1 LibRIL 主要檔案及作用 ?

    11.3.2 重點結構說明

    11.4 LibRIL 執行環境載入過程

    11.4.1 開啟ril_event 事件監聽入口RIL_startEventLoop ?

    11.4.2 RIL_register 函數引用三方RIL_RadioFunctions

    11.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-RIL

    12.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 更加快了行動網際網路的繁榮,也帶動了整個產業鏈的發展。Android 智慧型手機的爆發式成長和逐步從一般手機轉向Android 智慧型手機的廠商,催生了大量的從業人員需求,熟悉Android 智慧型手機開發,特別是熟悉Android Telephony 開發的技術人員越來越受到市場的青睞。



      Telephony 模組為智慧型手機的核心套件,是區別行動OS 與桌面OS 的重要特色。雖然Android 來自於Linux,但是在普通Linux 中並不存在,對很多從Java 或Linux 開發轉型而來的人員來說,Telephony 顯得陌生而神秘,而且Telephony 由於其固有的通訊複雜度,以及與環境和硬體的較大連結性,一直是Android 智慧型手機開發中的障礙,也是所有智慧型手機專案所必須克服的難度。



      隨著ICT 技術的推廣和發展,在三網融合、智慧的地球(物聯網)等概念風行的形勢下,手機終端技術的發展和進步可謂日新月異;Android 不但通過市場的考驗,並有了較大的市佔率,從手機晶片廠商、手機生產廠商到各種應用開發公司、網際網路公司等,逐步形成了以Android 系統平台為核心的上下游產業鏈。正是由於Android 原始程式碼的開放,各大手機廠商才能透過深度訂製Android 系統平台,在降低研發成本的同時,快速推出具有本身特色的Android 智慧型手機產品。因此,各大手機廠商在推出新版本Android 系統平台手機上投入了極高的研發成本,其中不乏Samsung、Motorola 等國際知名公司。



      目前市場上針對Android 的書籍很多,但絕大多數是以Android SDK 在應用層為基礎的開發進行講解的,深入了解Android Telephony 的書籍目前還是空白。而Telephony 基本通訊功能是手機中的核心,在訂製Android 手機的過程中也不例外,手機離開了基本通訊能力,如通話、多媒體簡訊、手機上網等功能,也就失去了它本身的意義。



      在Android 手機訂製化的過程中,Telephony 有關的範圍和內容也非常多,從應用層到框架層,再到RIL 與Modem 無線通訊模組的互動,所有部分均有不同程度的訂製和最佳化,因此,在Android 手機平台訂製化研發的過程中,需要對Android Telephony 有全面而深入的了解。本書以Android 4.0.3 原始程式碼為基礎,全面、深入地解析了Android Telephony 有關的主要內容,其中包含Call 通話、ServiceState 連線網路服務狀態、DataConnection 手機上網資料連接以及SMS&MMS 簡訊和多媒體簡訊的應用等,並且詳細解析Android RIL 的執行機制。



      如果你是一名Android 經驗豐富的資深使用者,能夠快速架設Android 原始程式碼編譯環境以及熟練Android 開發的基礎知識和技巧,那麼可以跳過第一部分,直接閱讀後面四部分;但如果你是一名Android 初學者,請一定從第1 章的基礎理論知識開始學習。




    楊青平




    其 他 著 作
    1. 進入Android開發的專業時代:深入Telephony核心模組