出版時(shí)間:2013-1 出版社:楊青平 機(jī)械工業(yè)出版社 (2013-01出版) 作者:楊青平 頁數(shù):352
Tag標(biāo)簽:無
前言
前言隨著ICT技術(shù)的推廣和發(fā)展,在三網(wǎng)融合、智慧的地球(物聯(lián)網(wǎng))等概念風(fēng)行的形勢下,手機(jī)終端技術(shù)的發(fā)展和進(jìn)步可謂日新月異;Android經(jīng)受住了市場的考驗(yàn),并占據(jù)了較大的市場份額,從手機(jī)芯片廠家、手機(jī)生產(chǎn)廠家到各種應(yīng)用開發(fā)公司、互聯(lián)網(wǎng)公司等,逐步形成了以Android系統(tǒng)平臺為核心的上下游產(chǎn)業(yè)鏈。正是由于Android源代碼的開源,各大手機(jī)廠商才能通過深度定制Android系統(tǒng)平臺,在降低研發(fā)成本的同時(shí),快速推出具有自身特色的Android智能手機(jī)產(chǎn)品。因此,各大手機(jī)廠家在推出新版本Android系統(tǒng)平臺手機(jī)上投入了較多的研發(fā)成本,其中不乏SamSung、Motorola等國際知名公司;國內(nèi)如小米手機(jī)、聯(lián)發(fā)科、展訊等也都有自己的Android研發(fā)團(tuán)隊(duì)。目前國內(nèi)市場上針對Android的書籍很多,但這些書籍中,絕大多數(shù)是基于Android SDK在應(yīng)用層的開發(fā)進(jìn)行講解的。針對Android系統(tǒng)級的源代碼分析的書籍,主要是鄧凡平著的《深入理解Android:卷Ⅰ》和《深入理解Android:卷Ⅱ》,但深入理解Android Telephony的書籍國內(nèi)目前還是空白。而Telephony基本通信功能是手機(jī)中的核心,在定制Android手機(jī)的過程中也不例外,手機(jī)離開了基本通信能力,如通話、短彩信、手機(jī)上網(wǎng)等功能,也就失去了它本身的意義。在Android手機(jī)定制化的過程中,Telephony涉及的范圍和內(nèi)容也非常多,從應(yīng)用層到框架層,再到RIL與Modem無線通信模塊的交互,所有部分均有不同程度的定制和優(yōu)化,因此,在Android手機(jī)平臺定制化研發(fā)的過程中,需要對Android Telephony有全面而深入的理解。本書以Android 4.0.3源代碼為基礎(chǔ),全面、深入地解析了Android Telephony涉及的主要內(nèi)容,其中包括Call通話、ServiceState接入網(wǎng)絡(luò)服務(wù)狀態(tài)、DataConnection手機(jī)上網(wǎng)數(shù)據(jù)連接以及SMS&MMS短信和彩信的應(yīng)用等,并且詳細(xì)解析了Android RIL的運(yùn)行機(jī)制。讀者對象本書主要適合于以下讀者。(1)Android應(yīng)用的普通開發(fā)者對于Android應(yīng)用開發(fā)工程師來說,本書中關(guān)于發(fā)起通話呼叫、接收到新的來電、發(fā)送短信、接收新短信、手機(jī)上網(wǎng)等Telephony涉及的通信能力的介紹,能幫助他們在編寫Android應(yīng)用程序時(shí),選擇最優(yōu)方式完成多種場景的應(yīng)用。比如如何發(fā)起通話呼叫、如何發(fā)送短信、如何監(jiān)聽或接收新來電或新短信的通知等,都是Android應(yīng)用程序需要處理的消息和事件。(2)Android 系統(tǒng)平臺的定制開發(fā)者Android Telephony涉及的通信能力,常常是Android系統(tǒng)平臺定制化過程中的重點(diǎn)和難點(diǎn),它的可用性和穩(wěn)定性決定了手機(jī)產(chǎn)品是否能成功量產(chǎn)。本書全面、深入地講解了Android Telephony涉及的通信能力的實(shí)現(xiàn)流程和機(jī)制。(3)對Android源代碼有濃厚興趣的讀者Android源代碼中匯集了很多國外專家和優(yōu)秀工程師的設(shè)計(jì)思想和理念,本書對Android Telephony源代碼中的關(guān)鍵設(shè)計(jì)模式、設(shè)計(jì)思路做了詳細(xì)分析,讀者可拓展思考和訓(xùn)練,以提升自己的設(shè)計(jì)水平和編碼能力。(4)開設(shè)相關(guān)課程的大專院校的師生從搭建Android的編譯環(huán)境到分析源代碼的過程,本書由淺入深地進(jìn)行了講解,閱讀本書可幫助讀者提升Linux操作系統(tǒng)的動(dòng)手能力、Java語言的編碼能力、UML的閱讀能力和理解常見的設(shè)計(jì)模式,了解Android系統(tǒng)平臺定制的主要工作內(nèi)容。如何閱讀本書全書分為5個(gè)部分,共13章:第一部分(第1~3章)首先介紹Android和智能手機(jī)的框架結(jié)構(gòu),幫助讀者了解一些手機(jī)的發(fā)展歷程;然后講解Android源代碼的編譯環(huán)境搭建過程,并普及Android中的一些技術(shù)基礎(chǔ)。第二部分(第4~6章)詳解Android Telephony通話功能。首先整體認(rèn)識通話功能在整個(gè)Android系統(tǒng)平臺所處的位置,及每層的主要作用;然后分析通話的關(guān)鍵流程,主要體現(xiàn)在主動(dòng)撥號流程和來電流程的過程分析;最后解析通話功能在應(yīng)用層和框架層中的實(shí)現(xiàn)機(jī)制和邏輯。第三部分(第7~9章)詳解ServiceState(網(wǎng)絡(luò)服務(wù)狀態(tài))、DataConnection(手機(jī)上網(wǎng)數(shù)據(jù)連接)、SMS和MMS的業(yè)務(wù)實(shí)現(xiàn)流程,以及在應(yīng)用層和框架層中的關(guān)鍵處理邏輯和實(shí)現(xiàn)機(jī)制。第四部分(第10~12章)首先講解Android RIL框架結(jié)構(gòu)和關(guān)鍵業(yè)務(wù)流程,然后詳細(xì)解析RILJ、RILC和Reference-RIL的運(yùn)行機(jī)制。第五部分(第13章)講解Telephony模塊所提供的系統(tǒng)服務(wù),包括系統(tǒng)服務(wù)的注冊入口以及調(diào)用系統(tǒng)服務(wù)接口的實(shí)例。如果你是一名Android經(jīng)驗(yàn)豐富的資深用戶,能夠快速搭建Android源代碼編譯環(huán)境以及掌握了Android開發(fā)的基礎(chǔ)知識和技巧,那么可以跳過第一部分,直接閱讀后面四部分;但是如果你是一名Android初學(xué)者,請一定從第1章的基礎(chǔ)理論知識開始學(xué)習(xí)??闭`和支持由于筆者的水平有限,加之編寫時(shí)間倉促,書中難免會出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請讀者批評指正。為此,筆者特意創(chuàng)建一個(gè)在線支持博客http://blog.163.com/yqp_mail/。您可以將書中的錯(cuò)誤或是遇到的任何問題留言給我,我將盡量在線上為讀者提供最滿意的解答。如果您有更多的寶貴意見,也歡迎發(fā)送郵件至郵箱yqp_mail@163.com。期待能夠得到大家的真摯反饋。致謝感謝Android技術(shù)專家鄧凡平,在你的引薦下才促成了這本書的合作與出版。感謝機(jī)械工業(yè)出版社華章公司的編輯楊福川和白宇,在這半年里是你們始終支持著我的寫作,因?yàn)橛辛四銈兊墓膭?lì)和幫助我才能順利完成全部書稿。感謝ThunderSoft中科創(chuàng)達(dá)公司,這是一家創(chuàng)業(yè)型、學(xué)習(xí)型和成長型的軟件公司。在這里工作,有機(jī)會與Android親密接觸,能夠在Android涉及的各個(gè)方面不斷學(xué)習(xí)、總結(jié)和分享;感謝ThunderSoft成都分公司領(lǐng)導(dǎo)常衡生先生和曾俊漢先生的鼓勵(lì)和支持,因?yàn)橛辛四銈兊膸椭?,我才能有更多的時(shí)間和精力去完成全部書稿的寫作;感謝ThunderSoft公司的同事劉斌、任洪亮等人在本書的寫作過程中給予的大力支持。感謝我的妻子,在本書的寫作過程中,我?guī)缀醴艞壛怂型砩虾椭苣┑男菹r(shí)間,妻子給了我極大的關(guān)心和體貼,讓我無后顧之憂,專注寫作。最后感謝我的爸爸、媽媽,你們將我培養(yǎng)成人,從小學(xué)、初中、高中到大學(xué),乃至到我工作后,你們都時(shí)時(shí)刻刻關(guān)心和幫助著我,在本書的寫作過程中你們同樣給了我極大的關(guān)心和幫助。謹(jǐn)以此書獻(xiàn)給我最親愛的家人,以及眾多熱愛Android的朋友們!楊青平于成都
內(nèi)容概要
《深入理解Android:Telephony原理剖析與最佳實(shí)踐》是“深入理解Android”系列的第3本,前兩本書的內(nèi)容和質(zhì)量在Android開發(fā)者社群內(nèi)得到了高度認(rèn)可,已經(jīng)樹立起該系列圖書的品牌。在寫作思路和方式上,本書與前兩本書一脈相承,對它們的優(yōu)點(diǎn)進(jìn)行了繼承和發(fā)揚(yáng);在內(nèi)容上,本書從從源代碼角度深入解析了AndroidTelephony的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理,深刻揭示了Android系統(tǒng)的通信機(jī)制。對于Android應(yīng)用開發(fā)工程師和系統(tǒng)工程師而言,本書都是難得的研究和學(xué)習(xí)資料。 全書共13章,分為五部分:第一部分(1~3章),首先介紹了智能手機(jī)的系統(tǒng)結(jié)構(gòu)、Android系統(tǒng)的架構(gòu)、Telephony框架的結(jié)構(gòu),然后詳細(xì)介紹了Android源代碼編譯環(huán)境和閱讀環(huán)境的搭建方法,以及閱讀本書要做的技術(shù)準(zhǔn)備;第二部分(4~6章),對Android的通話功能進(jìn)行了深入的分析,包括對通話流程的分析、對主動(dòng)撥號和來電流程的分析、對通話應(yīng)用機(jī)制的分析,以及對手機(jī)通信功能在框架層和應(yīng)用層中的實(shí)現(xiàn)機(jī)制的分析;第三部分(7~9章),對Android的通信功能進(jìn)行了深入的分析,包括對網(wǎng)絡(luò)服務(wù)狀態(tài)的運(yùn)行機(jī)制的分析、對Android手機(jī)上網(wǎng)的實(shí)現(xiàn)機(jī)制的分析,以及對短息發(fā)送和接收流程的分析;第四部分(10~12章),對AndroidRIL的工作機(jī)制進(jìn)行了深入的分析,包括對框架層中的RILJ運(yùn)行機(jī)制的分析、對RILC系統(tǒng)結(jié)構(gòu)及LibRIL運(yùn)行機(jī)制的分析,以及對Reference-RIL框架的原理的分析;第五部分(13章),分析了Telephony模塊所提供的系統(tǒng)服務(wù),包括系統(tǒng)服務(wù)的注冊入口以及調(diào)用系統(tǒng)服務(wù)接口的實(shí)例。
作者簡介
楊青平,資深A(yù)ndroid系統(tǒng)工程師和軟件開發(fā)工程師,熱衷于Android用源代碼和系統(tǒng)原理的研究,對Android的系統(tǒng)架構(gòu)、設(shè)計(jì)原理以及Telephony和Framework等核心功能模塊的工作機(jī)制有非常深入的研究。目前就職于國內(nèi)領(lǐng)先的Android OS提供商ThunderSoft(中科創(chuàng)達(dá)),擔(dān)任系統(tǒng)架構(gòu)師。他對J2EE、UML、設(shè)計(jì)模式等相關(guān)技術(shù),以及電信增值業(yè)務(wù)、電子商務(wù)、物聯(lián)網(wǎng)等重要軟件行業(yè)的運(yùn)行模式、業(yè)務(wù)發(fā)展規(guī)劃也有較深入的了解。此外,他還是一位經(jīng)驗(yàn)豐富的講師,有多年的人才培訓(xùn)經(jīng)驗(yàn),善于總結(jié)和分享。
書籍目錄
推薦序前言第一部分 基礎(chǔ)篇第1章 初識Android 21.1 智能手機(jī)的系統(tǒng)結(jié)構(gòu) 21.2 Android系統(tǒng)架構(gòu) 31.2.1 應(yīng)用層 31.2.2 應(yīng)用框架層 41.2.3 系統(tǒng)運(yùn)行庫層 51.2.4 核心層 61.3 Android Telephony框架結(jié)構(gòu) 61.3.1 系統(tǒng)運(yùn)行庫層的HAL層 71.3.2 簡析HAL結(jié)構(gòu) 81.3.3 Android為什么引入HAL 91.3.4 Android中HAL的運(yùn)行結(jié)構(gòu) 91.4 本章小結(jié) 10第2章 搭建Android源代碼編譯環(huán)境 112.1 Ubuntu Linux操作系統(tǒng)及工具安裝 112.1.1 PC配置建議 122.1.2 Ubuntu安裝光盤的制作 122.1.3 Ubuntu安裝過程 122.1.4 Ubuntu系統(tǒng)工具包更新升級 142.1.5 Java運(yùn)行環(huán)境JDK安裝及配置 152.1.6 Android SDK的下載和配置 162.1.7 使用Android SDK啟動(dòng)虛擬設(shè)備 172.2 Android源代碼下載及編譯過程 192.2.1 工作目錄設(shè)置 192.2.2 源代碼下載 192.2.3 整體編譯Android 源代碼 192.2.4 單個(gè)模塊按需編譯 202.2.5 編譯生成本地Android SDK 212.3 Android常用工具使用及相關(guān)技巧說明 212.3.1 使用本地編譯成功的鏡像文件啟動(dòng)Android模擬器 222.3.2 Android調(diào)試工具adb的使用方法 232.3.3 進(jìn)入Android虛擬設(shè)備控制臺模擬短信、來電等功能 232.4 Eclipse配置及使用 242.4.1 Android開發(fā)套件ADT下載及配置 242.4.2 建立Android源代碼Java工程 252.4.3 格式化Android Java源代碼 262.5 使用Source Insight方便閱讀C/C++代碼 262.5.1 安裝Wine 262.5.2 安裝Source Insight 262.5.3 配置Source Insight C/C++工程 272.6 本章小結(jié) 27第3章 主要技術(shù)準(zhǔn)備 293.1 何為同步和異步 293.2 Handler消息處理機(jī)制 303.2.1 Handler概念分析 303.2.2 Handler特性 303.2.3 常用Handler消息處理機(jī)制講解 313.2.4 Handler的作用 343.3 AIDL跨應(yīng)用服務(wù) 353.3.1 AIDL概念分析 353.3.2 AIDL服務(wù)提供方 363.3.3 AIDL服務(wù)調(diào)用方 373.4 廣播 383.4.1 Android 系統(tǒng)中的廣播 383.4.2 Broadcast接收 383.4.3 Broadcast發(fā)送 393.5 本章小結(jié) 39第二部分 Telephony通話功能第4章 深入解析通話流程 424.1 通話相關(guān)主要源代碼匯總及簡要說明 424.2 電話主動(dòng)呼叫流程分析 444.2.1 運(yùn)行Android虛擬設(shè)備 444.2.2 撥號界面DialtactsActivity的onCreate方法 454.2.3 DialpadFragment撥號盤Tab表單 454.2.4 尋找撥號統(tǒng)一入口OutgoingCallBroadcaster 474.2.5 CallController撥號placeCall方法 474.2.6 Phone幫助類PhoneUtils靜態(tài)placeCall方法 484.2.7 通話大管家CallManager 504.2.8 Phone對象的dial撥號方法 504.2.9 Call狀態(tài)跟蹤者GsmCallTracker 514.2.10 RIL消息的出入口RIL.java 524.2.11 啟動(dòng)通話主界面InCallScreen 534.2.12 撥號流程總結(jié) 534.3 電話被動(dòng)接收來電流程分析 554.3.1 Android虛擬設(shè)備模擬接收來電 564.3.2 RegistrantList消息處理機(jī)制 574.3.3 GsmCallTracker響應(yīng)RIL的Call狀態(tài)變化通知 604.3.4 RIL.java的getCurrentCalls方法 604.3.5 GsmCallTracker響應(yīng)消息通知 614.3.6 handlePollCalls發(fā)出來電通知 614.3.7 GSMPhone的通知方法notifyNewRingingConnection 624.3.8 CallManager響應(yīng)來電消息通知 624.3.9 CallNotifier響應(yīng)來電通知 634.3.10 InCallScreen展現(xiàn)來電界面 644.3.11 來電流程總結(jié) 654.4 通話關(guān)鍵流程 664.4.1 建立Android通話模型 674.4.2 AT命令發(fā)送流程 684.4.3 通話狀態(tài)變化流程 694.4.4 本地主動(dòng)掛斷通話流程 704.4.5 遠(yuǎn)端斷開通話連接流程 724.5 本章小結(jié) 73第5章 深入解析Telephony通話應(yīng)用機(jī)制 745.1 Phone應(yīng)用的關(guān)鍵代碼解析 745.2 認(rèn)識通話主界面InCallScreen 755.2.1 InCallScreen中的主要方法 765.2.2 單例模式的Activity通話界面 765.2.3 Layout布局說明 775.3 通話主界面InCallScreen 785.3.1 onCreate—運(yùn)行Activity 785.3.2 onNewIntent—單例InCallScreen加載入口 805.3.3 internalResolveIntent—進(jìn)入InCallScreen處理Intent的唯一方法 815.3.4 onResume—顯示InCallScreen通話界面 825.3.5 handleMessage—Handler消息響應(yīng)方法 845.3.6 onSuppServiceFailed—顯示通話服務(wù)失敗提示信息 855.3.7 updateScreen—更新通話界面 865.3.8 onDisconnect—斷開通話連接 885.3.9 handleOnscreenButtonClick—響應(yīng)通話控制按鈕點(diǎn)擊事件 905.3.10 InCallScreen通話界面運(yùn)行機(jī)制總結(jié) 915.4 通話信息展示CallCard 925.4.1 兩路通話布局View控件 925.4.2 updateState—更新CallCard 935.4.3 displayMainCallStatus—顯示/更新第一路通話信息 955.4.4 displayOnHoldCallStatus—顯示/更新第二路通話信息 975.4.5 修改通話信息展示的思路及原則 985.5 通話控制InCallTouchUi 995.5.1 View布局控件 995.5.2 updateState—更新InCallTouchUi 1015.5.3 MultiWaveView—來電控制接聽、拒接界面 1025.5.4 HeadSet—響應(yīng)免提事件 1035.5.5 修改來電界面的思路及原則 1045.6 通話功能中必不可少的DTMF 1055.6.1 什么是DTMF 1055.6.2 DTMFTwelveKeyDialer的布局 1055.6.3 如何顯示DTMF界面 1065.6.4 Tone音發(fā)送流程 1065.7 Phone應(yīng)用的加載入口PhoneApp類 1085.7.1 PhoneApp類屬性及方法 1085.7.2 onCreate—PhoneApp應(yīng)用加載入口 1095.7.3 PowerManager—PhoneApp電源管理 1105.7.4 Sensor—PhoneApp感應(yīng)器的應(yīng)用 1125.7.5 MediaButtonBroadcastReceiver—接收耳機(jī)HOOK鍵廣播事件 1155.7.6 PhoneAppBroadcastReceiver—接收Phone應(yīng)用雜項(xiàng)廣播事件 1165.8 Handler消息處理的幕后工作者CallNotifier 1185.8.1 CallNotifier的本質(zhì) 1185.8.2 Handler消息注冊和響應(yīng)機(jī)制 1195.8.3 onNewRingingConnection—接收到新來電的幕后處理 1195.8.4 onPhoneStateChanged—通話狀態(tài)變化的幕后處理 1215.8.5 onDisconnect—通話連接斷開的幕后處理 1225.9 本章小結(jié) 124第6章 手機(jī)通話功能框架層實(shí)現(xiàn)機(jī)制 1256.1 Telephony Frameworks層解析 1256.1.1 通話功能相關(guān)代碼文件 1256.1.2 通話功能關(guān)鍵類 1266.1.3 Telephony通信能力模型 1276.2 GSMPhone對象詳解 1286.2.1 GSMPhone類層次繼承關(guān)系 1286.2.2 GSMPhone類代碼結(jié)構(gòu)解析 1296.2.3 PhoneFactory工廠方法實(shí)現(xiàn)類 1306.2.4 PhoneProxy代理模式實(shí)現(xiàn)類 1316.2.5 GSMPhone類的組合邏輯關(guān)系 1326.2.6 GSMPhone類的Handler消息處理機(jī)制 1336.2.7 GSMPhone類通話管理實(shí)現(xiàn)機(jī)制 1366.3 CallTracker運(yùn)行機(jī)制 1376.3.1 GsmCallTracker類代碼結(jié)構(gòu)解析 1376.3.2 GsmCallTracker的Handler消息處理機(jī)制 1396.3.3 GsmCallTracker與RIL對象的交互機(jī)制 1426.4 以GsmCall為核心的通話管理模型 1456.4.1 GsmCall類代碼結(jié)構(gòu)解析 1466.4.2 GsmConnection類代碼結(jié)構(gòu)解析 1476.4.3 DriverCall與GsmCall、GsmConnection的關(guān)系 1496.5 GsmCallTracker類的 handlePollCalls方法處理邏輯 1536.5.1 初始化操作 1536.5.2 更新通話相關(guān)信息 1546.5.3 根據(jù)最新的通話狀態(tài)發(fā)出通知 1586.5.4 更新手機(jī)狀態(tài) 1586.6 GsmCallTracker通話連接斷開的處理機(jī)制 1606.6.1 本地主動(dòng)掛斷通話的處理機(jī)制 1606.6.2 遠(yuǎn)端斷開通話連接的處理機(jī)制 1626.7 Android虛擬設(shè)備上驗(yàn)證GSM制式手機(jī)的通話模型 1646.7.1 增加日志輸出 1646.7.2 運(yùn)行Android虛擬設(shè)備并分析日志 1666.8 通話大管家CallManager 1686.8.1 CallManager的本質(zhì) 1686.8.2 Handler消息注冊及運(yùn)行機(jī)制 1696.8.3 如何獲取通話基本信息 1706.9 通話計(jì)時(shí)實(shí)例分析 1716.9.1 記錄通話的開始時(shí)間 1716.9.2 記錄通話的結(jié)束時(shí)間 1716.9.3 Phone應(yīng)用計(jì)算通話時(shí)長 1716.10 Handler消息處理機(jī)制 1736.10.1 Handler消息的注冊過程 1736.10.2 Handler消息的接收和響應(yīng)過程 1746.11 實(shí)戰(zhàn)—來電防火墻 1756.11.1 應(yīng)用原理分析 1756.11.2 在onNewRingingConnection方法加入攔截請求 1766.12 本章小結(jié) 176第三部分 Telephony通信功能第7章 網(wǎng)絡(luò)服務(wù)狀態(tài)運(yùn)行機(jī)制 1807.1 什么是ServiceState 1807.2 初識ServiceState實(shí)體類 1807.2.1 ServiceState類的實(shí)質(zhì) 1817.2.2 ServiceState類關(guān)鍵常量及屬性 1817.2.3 ServiceState類關(guān)鍵方法 1827.3 ServiceStateTracker運(yùn)行機(jī)制詳解 1837.3.1 ServiceStateTracker抽象類為核心的類圖 1847.3.2 ServiceStateTracker代碼結(jié)構(gòu) 1847.3.3 ServiceStateTracker的Handler消息處理機(jī)制 1867.3.4 ServiceStateTracker與RIL對象的交互機(jī)制 1897.4 handlePollStateResult方法處理邏輯 1927.4.1 RIL返回查詢結(jié)果的異常判斷和處理 1927.4.2 處理4個(gè)不同網(wǎng)絡(luò)服務(wù)查詢返回的結(jié)果 1927.4.3 用pollStateDone方法完成收尾工作 1957.5 ServiceState最佳實(shí)踐 1977.5.1 獲取運(yùn)營商信息 1977.5.2 通知欄手機(jī)信號實(shí)時(shí)變化 1987.6 實(shí)戰(zhàn)—飛行模式的實(shí)現(xiàn) 2007.6.1 飛行模式的設(shè)置入口 2007.6.2 Radio無線通信模塊的開啟或關(guān)閉 2027.7 本章小結(jié) 203第8章 Android手機(jī)上網(wǎng)實(shí)現(xiàn)機(jī)制 2048.1 Android網(wǎng)絡(luò)整體結(jié)構(gòu) 2048.2 什么是DataConnection 2058.2.1 DataConnection類定義及子類 2058.2.2 DataConnection類關(guān)鍵屬性 2068.2.3 DataConnection類的方法 2078.2.4 5個(gè)數(shù)據(jù)連接對象的狀態(tài)轉(zhuǎn)換 2078.3 StateMachine狀態(tài)機(jī) 2088.3.1 State設(shè)計(jì)模式 2098.3.2 StateMachine核心類 2098.3.3 StateMachine運(yùn)行機(jī)制 2108.3.4 DataConnection使用State模式的運(yùn)行機(jī)制 2118.4 什么是APN 2128.4.1 APN配置關(guān)鍵字段 2128.4.2 Android支持的APN類型 2138.4.3 如何在Android中新增APN配置 2138.5 開機(jī)自動(dòng)建立default默認(rèn)數(shù)據(jù)連接 2158.5.1 如何查看手機(jī)上網(wǎng)的基本參數(shù)配置 2158.5.2 初始化ApnContext 2168.5.3 創(chuàng)建DataConnection數(shù)據(jù)連接 2198.5.4 激活DataConnection數(shù)據(jù)連接 2228.6 DataConnectionTracker運(yùn)行機(jī)制 2268.6.1 初始化ApnContext操作 2278.6.2 開機(jī)建立default默認(rèn)的數(shù)據(jù)連接 2288.6.3 關(guān)閉數(shù)據(jù)連接 2298.6.4 循環(huán)更新網(wǎng)絡(luò)連接狀態(tài)信息 2308.6.5 APN數(shù)據(jù)庫配置信息變化的觀察者 2318.7 獲取Android手機(jī)上網(wǎng)數(shù)據(jù)包 2328.7.1 使用tcpdump工具抓取TCP/IP數(shù)據(jù)包 2328.7.2 使用Wireshark軟件分析TCP/IP數(shù)據(jù)包 2328.8 MMS彩信數(shù)據(jù)連接的實(shí)現(xiàn) 2338.8.1 建立和關(guān)閉彩信數(shù)據(jù)連接 2338.8.2 如何支持多種類型網(wǎng)絡(luò)連接 2348.9 實(shí)戰(zhàn)—手機(jī)上網(wǎng)數(shù)據(jù)總開關(guān)的實(shí)現(xiàn) 2358.10 本章小結(jié) 235第9章 深入解析短信發(fā)送和接收流程 2379.1 MMS應(yīng)用主要源代碼匯總及簡要說明 2379.2 主動(dòng)發(fā)送短信流程分析 2389.2.1 進(jìn)入短信會話列表界面 2389.2.2 短信編輯界面 2399.2.3 SmsMessageSender短信發(fā)送處理邏輯 2419.2.4 Telephony Frameworks層中的SmsManager類 2439.2.5 IccSmsInterfaceManager服務(wù)發(fā)送短信 2449.2.6 SMSDispatcher短信分發(fā)器 2459.2.7 主動(dòng)發(fā)送短信流程總結(jié) 2469.3 短信發(fā)送狀態(tài)相關(guān)處理機(jī)制 2489.3.1 如何判斷短信是否成功發(fā)送到短信中心 2489.3.2 如何判斷短信接收方已經(jīng)成功收取短信 2509.4 短信接收流程分析 2529.4.1 短信接收的開始 2529.4.2 進(jìn)入短信分發(fā)器SMSDispatcher 2539.4.3 接收并處理新短信Broadcast廣播 2549.4.4 短信接收流程總結(jié) 2549.5 彩信發(fā)送和接收關(guān)鍵流程 2559.5.1 彩信傳輸過程中的關(guān)鍵類 2559.5.2 TransactionService為核心的彩信傳輸機(jī)制 2579.5.3 Transaction對象執(zhí)行彩信傳輸 2599.5.4 基于WAP PUSH的彩信接收與下載 2609.6 本章小結(jié) 261第四部分 深入解析Android RIL第10章 Android RIL框架結(jié)構(gòu)及RILJ運(yùn)行機(jī)制 26410.1 Android RIL關(guān)鍵處理流程 26410.1.1 Android RIL框架結(jié)構(gòu) 26410.1.2 Android RIL的數(shù)據(jù)交互 26510.2 認(rèn)識RILJ 26510.2.1 RILJ核心類圖 26510.2.2 RILJ關(guān)鍵屬性 26610.2.3 RILJ關(guān)鍵方法 26710.2.4 RILJ運(yùn)行機(jī)制 26810.3 認(rèn)識RILRequest類 26910.3.1 RILRequest類的關(guān)鍵屬性 26910.3.2 RILRequest類的方法 26910.4 解析RILJ發(fā)出RIL請求流程 27110.4.1 send方法發(fā)送Handler消息 27110.4.2 RILSender接收和處理Handler消息 27210.5 解析RILJ接收Response消息處理流程 27310.5.1 RILReceiver內(nèi)部類運(yùn)行機(jī)制 27310.5.2 Solicited Response消息處理方法processSolicited 27610.5.3 UnSolicited Response消息處理方法processUnsolicited 27910.6 本章小結(jié) 280第11章 RILC系統(tǒng)結(jié)構(gòu)及LibRIL運(yùn)行機(jī)制 28111.1 RILC主要代碼目錄結(jié)構(gòu) 28111.2 解析RILC運(yùn)行機(jī)制 28211.2.1 RILC啟動(dòng)過程 28311.2.2 RILC運(yùn)行過程 28511.3 初識RILC中的運(yùn)行環(huán)境LibRIL 28511.3.1 LibRIL主要文件及作用 28511.3.2 重點(diǎn)結(jié)構(gòu)體說明 28611.4 LibRIL運(yùn)行環(huán)境加載過程 28811.4.1 開啟ril_event事件監(jiān)聽入口RIL_startEventLoop 28811.4.2 RIL_register函數(shù)引入三方RIL_RadioFunctions 29011.5 運(yùn)行狀態(tài)中ril_event事件處理機(jī)制 29111.5.1 認(rèn)識ril_event結(jié)構(gòu)體 29111.5.2 RIL事件生命周期控制的處理函數(shù) 29211.5.3 ril_event_loop處理機(jī)制 29411.6 詳解LibRIL運(yùn)行機(jī)制 29611.6.1 RILJ與LibRIL建立Socket連接過程 29611.6.2 Solicited消息的交互流程和處理機(jī)制 29711.7 本章小結(jié) 302第12章 Reference-RIL運(yùn)行框架 30312.1 Reference-RIL運(yùn)行機(jī)制 30312.1.1 RIL_Init函數(shù)初始化Reference-RIL 30312.1.2 onRequest接收LibRIL的請求調(diào)用 30412.1.3 UnSolicited消息處理邏輯 30612.2 AT命令 31012.2.1 如何新增AT命令 31012.2.2 Android Telephony常用AT命令 31012.3 Android RIL層運(yùn)行框架和機(jī)制總結(jié) 31112.3.1 總結(jié)Solicited消息處理流程 31212.3.2 總結(jié)UnSolicited消息處理流程 31312.4 本章小結(jié) 314第五部分 系統(tǒng)服務(wù)第13章 Telephony提供的系統(tǒng)服務(wù) 31613.1 System Service系統(tǒng)服務(wù)類圖 31613.2 詳解PhoneInterfaceManager實(shí)現(xiàn)機(jī)制 31713.2.1 ITelephony.aidl接口定義 31813.2.2 PhoneInterfaceManager服務(wù)創(chuàng)建過程 31813.2.3 PhoneInterfaceManager服務(wù)使用實(shí)例分析 31813.3 詳解TelephonyRegistry實(shí)現(xiàn)機(jī)制 31913.3.1 系統(tǒng)服務(wù)的創(chuàng)建入口 32013.3.2 TelephonyRegistry關(guān)鍵方法 32013.3.3 listen方法處理邏輯 32013.3.4 notifyCallState方法發(fā)出通話狀態(tài)變化通知 32113.3.5 觸發(fā)TelephonyRegistry發(fā)出通知機(jī)制 32213.3.6 TelephonyRegistry系統(tǒng)服務(wù)使用實(shí)例分析 32313.4 簡述TelephonyManager實(shí)現(xiàn)機(jī)制 32413.5 本章小結(jié) 326
章節(jié)摘錄
第一部分 基礎(chǔ)篇第1章 初識Android第2章 搭建Android源代碼編譯環(huán)境第3章 主要技術(shù)準(zhǔn)備第1章 初識AndroidAndroid中文意思為“機(jī)器人”,中文翻譯為“安卓”,是Google于2007年11月5日發(fā)布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱。該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,被稱為首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。Google與電信運(yùn)營商、手機(jī)設(shè)備制造商、芯片開發(fā)商以及其他有關(guān)方面結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開放式的移動(dòng)電話軟件平臺,在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式的生態(tài)系統(tǒng)。從2007年到現(xiàn)在,Android已經(jīng)成為全球最熱門的手機(jī)操作平臺之一。本章主要從智能手機(jī)的基本硬件結(jié)構(gòu)、Android手機(jī)操作系統(tǒng)整體架構(gòu)和Android的Telephony模塊的體系結(jié)構(gòu)這三個(gè)方面介紹Android,特別將Android手機(jī)操作系統(tǒng)平臺下的Telephony模塊作為本書講解的重點(diǎn)內(nèi)容。
媒體關(guān)注與評論
伴隨著《深入理解Android:卷II》的上市,“深入理解Android”系列圖書在Android圖書市場引起了更大的反響,獲得了更好的口碑,已經(jīng)建立起了自己的品牌。本書繼承了該系列圖書的所有優(yōu)點(diǎn),宏觀上將模塊的架構(gòu)和設(shè)計(jì)思路整理得非常清晰,微觀上則將模塊的工作機(jī)制和實(shí)現(xiàn)原理分析得細(xì)致入微。無論你是關(guān)心Android系統(tǒng)通信功能的應(yīng)用開發(fā)者,還是要對Android系統(tǒng)進(jìn)行定制或移植的系統(tǒng)工程師,只要能跟隨作者的思路,吃透本書的內(nèi)容,你都會游刃有余!——51CTO移動(dòng)開發(fā)頻道(http://mobile.51cto.com/)Android為移動(dòng)設(shè)備而生,對于移動(dòng)設(shè)備而言,通信是最重要的功能,同時(shí)也是最復(fù)雜的功能。對于應(yīng)用開發(fā)工程師而言,如果能深入了解Telephony的通信功能和原理,就能在開發(fā)Android應(yīng)用時(shí)選擇最優(yōu)的方式完成相關(guān)功能的開發(fā);對于系統(tǒng)工程師而言,通信能力是Android系統(tǒng)平臺定制化過程中的重點(diǎn)和難點(diǎn),它的穩(wěn)定性和性能直接決定了設(shè)備是否能量產(chǎn)。本書從源碼的角度深入分析了Telephony的通信機(jī)制和實(shí)現(xiàn)原理,對于應(yīng)用開發(fā)工程師和系統(tǒng)開發(fā)工程師而言,都是不可多得的參考資料?!沧堪褪浚╤ttp://www.apkbus.com/) 做最好的Android開發(fā)社區(qū)
編輯推薦
《深入理解Android:Telephony原理剖析與最佳實(shí)踐》為經(jīng)典暢銷書“深入理解Android”系列新作,從源碼角度深入解析Telephony的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理,深刻揭示Android系統(tǒng)的通信機(jī)制!
名人推薦
華章公司出版的“深入理解Android”系列圖書以分析Android的源代碼為主,包含應(yīng)用、框架、專題和內(nèi)核四個(gè)部分,本書是專題部分的第一本書。本書的研究重點(diǎn)是Android的Telephony相關(guān)模塊,它們也是Android體系結(jié)構(gòu)中相對獨(dú)立的一部分。分析難度較大,因?yàn)樯婕暗拿孑^廣,需要掌握的專業(yè)知識也比較多。青平兄結(jié)合2年多的實(shí)際工作經(jīng)驗(yàn),精心總結(jié)和整理了這本擁有完整知識框架、條理清晰、理論和實(shí)戰(zhàn)結(jié)合的專題書籍,全方位、多角度向讀者展示了Android Telephony體系結(jié)構(gòu)的工作流程和相關(guān)原理。同時(shí),該書秉承了“深入理解Android”系列圖書高標(biāo)準(zhǔn)、高質(zhì)量的傳統(tǒng),并展現(xiàn)了作者作為一位川籍軟件工程師所擁有的追逐細(xì)節(jié)的品質(zhì)和開闊的思路?!嚪财?《深入理解Android 卷I/卷II》作者/Tieto公司高級軟件架構(gòu)師
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載