![基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能開發(fā) 畢業(yè)設(shè)計(jì)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/18/643f32fd-c9df-4d25-ae49-8fa72bdf5141/643f32fd-c9df-4d25-ae49-8fa72bdf51411.gif)
![基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能開發(fā) 畢業(yè)設(shè)計(jì)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/18/643f32fd-c9df-4d25-ae49-8fa72bdf5141/643f32fd-c9df-4d25-ae49-8fa72bdf51412.gif)
![基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能開發(fā) 畢業(yè)設(shè)計(jì)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/18/643f32fd-c9df-4d25-ae49-8fa72bdf5141/643f32fd-c9df-4d25-ae49-8fa72bdf51413.gif)
![基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能開發(fā) 畢業(yè)設(shè)計(jì)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/18/643f32fd-c9df-4d25-ae49-8fa72bdf5141/643f32fd-c9df-4d25-ae49-8fa72bdf51414.gif)
![基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能開發(fā) 畢業(yè)設(shè)計(jì)_第5頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/18/643f32fd-c9df-4d25-ae49-8fa72bdf5141/643f32fd-c9df-4d25-ae49-8fa72bdf51415.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JIU JIANG UNIVERSITY畢 業(yè) 論 文 題 目 基于Android系統(tǒng)的3G網(wǎng) 絡(luò)功能開發(fā) 英文題目 The 3G Network Development Based on Android System 院 系 信息科學(xué)與技術(shù)學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名 黃盛華 班級(jí)學(xué)號(hào) A 指導(dǎo)教師 于林峰 二一二年五月摘 要隨著Android系統(tǒng)在消費(fèi)電子行業(yè)的份額不斷加重,為滿足用戶對(duì)手持移動(dòng)產(chǎn)品網(wǎng)絡(luò)功能的要求,3G無線網(wǎng)絡(luò)功能的開發(fā)是非常有必要的。主要針對(duì)中興MG3732模塊的開發(fā)。實(shí)現(xiàn)在FS_S5PC100開發(fā)板上連接MG3732模塊后,可以在其搭載的Android2.2系
2、統(tǒng)中實(shí)現(xiàn)3G無線網(wǎng)絡(luò)的打電話、發(fā)短信和上網(wǎng)。首先搭建一個(gè)Android系統(tǒng)開發(fā)的環(huán)境,主要是安裝編譯工具鏈,和搭建Java平臺(tái)。其次是實(shí)現(xiàn)電話、短信框架,主要是對(duì)RIL層的開發(fā)和MG3732模塊驅(qū)動(dòng)的調(diào)試,這是整個(gè)開發(fā)過程中的重點(diǎn)和難點(diǎn),需要長時(shí)間調(diào)試和優(yōu)化。然后是實(shí)現(xiàn)PPPD撥號(hào)上網(wǎng),最后編譯內(nèi)核和Android源碼,獲得img鏡像文件,燒錄開發(fā)板后,插上MG3732模塊,驗(yàn)證功能。關(guān)鍵詞:安卓系統(tǒng),第三代通信,網(wǎng)絡(luò)功能AbstractWith the Android system component in the consumer electronics industry has been
3、 increasing to meet the requirements of the users of the network functionality of handheld mobile products, the development of 3G wireless network function is very necessary.The development work is mainly for ZTE MG3732 module development. Overall to achieve the MG3732 module s5pc100 development boa
4、rd connected Android2.2 system equipped with 3G wireless networks, phone calls, texting and the Internet.First, the development is to build an Android system development environment, is to install the compiler tool chain,and build the Java platform. Followed by MG3732 module-driven the debugging and
5、 Androi2.2 system middle layer (the FRAMEWORK layer) is the development of RIL, which is the focus throughout the development process more difficult, after a long period of debugging and optimization. Then the preparation of the PPP dial-up script and AT command script, and finally compiled Adroid s
6、ource live img files, and burn development board, the certification function.Keywords:Android System, 3rd Generation Communication, Network Functions目 錄摘 要IAbstractII1 緒論1.1系統(tǒng)概述(1)1.2 研究的意義(1)1.3 發(fā)展現(xiàn)狀(1)1.4 發(fā)展趨勢(shì)(2)1.5 本章小結(jié)(2)2 需求分析2.1硬件需求分析(3)2.2軟件需求分析(3)2.3用戶需求分析(4)2.4可行性(5)2.5本章小結(jié)(6)3 硬件與軟件環(huán)境概述3.1
7、硬件概述(7)3.2軟件環(huán)境概述(8)3.3本章小結(jié)(10)4 基于Android系統(tǒng)的電話、短信功能框架的實(shí)現(xiàn)4.1 Application層(12)4.2 Framework層(13)4.3 Native層(15)4.4 Kernel層(26)4.5本章小結(jié)(27)5 基于Android系統(tǒng)的3G模塊(MG3732)開發(fā)5.1 RIL層的開發(fā)(28)5.2 PPPD撥號(hào)上網(wǎng)(32)5.3 本章小結(jié)(36)6 功能驗(yàn)證6.1功能測(cè)試(37)6.2本章小結(jié)(39)致 謝(41)參考文獻(xiàn)(42)1 緒論1.1系統(tǒng)概述此次開發(fā)目的為實(shí)現(xiàn)基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能,即利用3G網(wǎng)絡(luò)實(shí)現(xiàn)打接電
8、話、收發(fā)短信和無線上網(wǎng)。硬件部分主要采用三星FS_S5PC100開發(fā)平臺(tái)和中興MG3272 3G模塊,以及一張聯(lián)通3G SIM卡。系統(tǒng)軟件部分采用Android2.2系統(tǒng),主要包括Linux內(nèi)核、UBOOT、Android文件系統(tǒng)。應(yīng)用軟件部分主要包括Android2.2系統(tǒng)自帶的撥號(hào)輸入、SMS軟件及Browser軟件,主要作用用于驗(yàn)證。1.2 研究的意義3G是當(dāng)今社會(huì)移動(dòng)網(wǎng)絡(luò)的主流,Android系統(tǒng)也在消費(fèi)電子產(chǎn)品中占有極大的份額(特別是手機(jī)和平板電腦),所以研究3G在Android系統(tǒng)中的實(shí)現(xiàn),具有較大的意義的。3G在Android系統(tǒng)上的實(shí)現(xiàn),可以促使Android手機(jī)和Androi
9、d平板電腦實(shí)現(xiàn)寬帶上網(wǎng),大大提升上網(wǎng)的速度,并且可以進(jìn)行手機(jī)辦公、手機(jī)商務(wù)等活動(dòng)。其次手持移動(dòng)產(chǎn)品(如手機(jī)和平板電腦)的視頻通話和網(wǎng)絡(luò)電視、音樂及其他一些只能在PC上實(shí)現(xiàn)的功能,都能因此而得到圓滿的解決,這樣就極大地方便了用戶,也使基于Android系統(tǒng)的手持移動(dòng)產(chǎn)品真正達(dá)到“手持電腦”的效果。1.3 發(fā)展現(xiàn)狀3G已經(jīng)成為嵌入式領(lǐng)域的一個(gè)新熱點(diǎn),國內(nèi)的移動(dòng)通信三大巨頭在08年相繼宣布要重資發(fā)展3G業(yè)務(wù),3G網(wǎng)絡(luò)的WAP站點(diǎn)更是隨處可見。特別是近幾年,越來越多的消費(fèi)者選擇了Android系統(tǒng)的手機(jī)、平板電腦和其他設(shè)備?;贏ndroid系統(tǒng)的3G網(wǎng)絡(luò)功能必定會(huì)受到極大歡迎。1.4 發(fā)展趨勢(shì)近年來
10、,隨著計(jì)算機(jī)技術(shù)及相關(guān)技術(shù)的發(fā)展,嵌入式技術(shù)已成為后PC時(shí)代的主力,在通訊、網(wǎng)絡(luò)、工控、醫(yī)療、電子、物聯(lián)網(wǎng)、三網(wǎng)融合、3G等領(lǐng)域發(fā)揮著越來越重要的作用,嵌入式IT技術(shù)正在變得無處不在。如今,嵌入式IT系統(tǒng)開發(fā)無疑成為當(dāng)今最熱門、最有發(fā)展前途的領(lǐng)域之一。2010年開始,Android逐漸成為智能手機(jī)技術(shù)的主導(dǎo),與iPhone同領(lǐng)潮流,改變?nèi)藗兊纳詈凸ぷ?。并且Android系統(tǒng)開放性會(huì)使其得到更大的發(fā)展。因此,基于Android系統(tǒng)的3G系統(tǒng)會(huì)得到更大的發(fā)展。1.5 本章小結(jié)本章首先對(duì)包括硬件和軟件在內(nèi)的系統(tǒng)做了一個(gè)簡單介紹,然后說明了該項(xiàng)目的意義和目的。接下來介紹了當(dāng)前基于Android系統(tǒng)的
11、3G技術(shù)應(yīng)用這塊的發(fā)展現(xiàn)狀和未來發(fā)展趨勢(shì),說明當(dāng)今和未來幾年,基于Android系統(tǒng)的3G技術(shù)會(huì)是一項(xiàng)非常熱門的技術(shù)。2 需求分析需求分析是指開發(fā)人員要理解用戶的要求,進(jìn)行詳細(xì)的市場(chǎng)調(diào)查,確定系統(tǒng)的新目標(biāo)。為了滿足用戶的需要,回答系統(tǒng)要“做什么”的問題1。2.1硬件需求分析好的硬件平臺(tái)會(huì)發(fā)給軟件開發(fā)帶來許多便利,因此選擇一個(gè)合適的硬件平臺(tái)是非常重要的2。根據(jù)軟件開發(fā)需求和硬件平臺(tái)穩(wěn)定性、價(jià)格等一系列因素,選擇了FS_S5PC100開發(fā)板。該開發(fā)板采用三星SP5C100處理器,處理器采用64/32位內(nèi)部總線結(jié)構(gòu),運(yùn)算速度最大833MHZ,被廣泛的應(yīng)用于智能手機(jī)、平板電腦等產(chǎn)品。根據(jù)性價(jià)比,3G模
12、塊選擇了中興MG3732模塊。MG3732 模塊是基于高通QSC6270平臺(tái)開發(fā)的WCDMA 3G無線通訊模塊,引腳方式為36腳郵票孔,適用于 WCDMA和GSM網(wǎng)絡(luò),支持850/900/1800/1900/2100 頻段。2.2軟件需求分析據(jù)調(diào)查,這幾年,系統(tǒng)源碼開放的Android系統(tǒng)已經(jīng)占用了智能手機(jī)市場(chǎng)36%的份額,并且Android系統(tǒng)還將得到更大的發(fā)展3。選擇了Android2.2系統(tǒng),其優(yōu)點(diǎn)如下:(1)開放性 Android平臺(tái)首要優(yōu)勢(shì)就是其開放性4。開放的平臺(tái)允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個(gè)嶄
13、新的平臺(tái)也將很快走向成熟5。(2)掙脫束縛在過去很長的一段時(shí)間,特別是在歐美地區(qū),手機(jī)應(yīng)用往往受到運(yùn)營商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運(yùn)營商的控制。自從iPhone上市,用戶可以更加方便地連接網(wǎng)絡(luò),運(yùn)營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動(dòng)網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不是運(yùn)營商口中的笑談6。(3)豐富的硬件由于Android的開放性,同時(shí)Android的熱火,致使眾多的硬件生產(chǎn)廠商在第一時(shí)間專門針對(duì)Android生產(chǎn)出各具特色的產(chǎn)品。(4)開發(fā)商Android平臺(tái)提供給第三方開發(fā)商一個(gè)十分寬泛、自由的環(huán)境。因此不會(huì)受到各種條條框框的阻撓,可想而知,會(huì)有
14、無數(shù)新穎別致的軟件誕生。(5)Google應(yīng)用從搜索巨人到全面的互聯(lián)網(wǎng)滲透,Google服務(wù)如地圖、郵件、搜索等已經(jīng)成為連接用戶和互聯(lián)網(wǎng)的重要紐帶,而Android平臺(tái)手機(jī)將無縫結(jié)合這些優(yōu)秀的Google服務(wù)7。Android系統(tǒng)是開源的。這會(huì)為開發(fā)帶來極大的方便。在互聯(lián)網(wǎng)上,可以找到很多研究Android系統(tǒng)、研究3G網(wǎng)絡(luò)功能實(shí)現(xiàn)的心得體會(huì)。這樣可以通過查找資料,縮短開發(fā)的時(shí)間,明確開發(fā)方向。2.3用戶需求分析根據(jù)調(diào)查,全球3G市場(chǎng)正在保持快速穩(wěn)定的發(fā)展,并呈現(xiàn)以下趨勢(shì):(1)3G+技術(shù)將成增長主流截至2011年底,全球移動(dòng)普及率已超過76%,市場(chǎng)將逐漸趨于飽和,移動(dòng)用戶增長將趨緩。中國、印
15、度等發(fā)展中國家將是未來幾年3G用戶增長的主要來源,對(duì)整個(gè)移動(dòng)通信市場(chǎng)的發(fā)展影響重大。3G+技術(shù)將成為3G市場(chǎng)主流。預(yù)計(jì)到2015年,HSPA用戶占比將由2010年的6.3%迅速上升到25.6%,成為3G用戶增長的重要來源8。(2)中低端智能終端市場(chǎng)份額不斷提升,開放陣營將占據(jù)主流未來,智能終端的能力將呈現(xiàn)PC化,計(jì)算、處理和存儲(chǔ)能力等方面都逐漸向PC性能水平靠攏。在價(jià)格方面,智能終端將整體走低,受眾范圍不斷擴(kuò)大。依靠產(chǎn)業(yè)分工合作、標(biāo)準(zhǔn)化、通用服務(wù)獲得成本優(yōu)勢(shì)的中低端智能終端在市場(chǎng)中的份額將不斷上升9。(3)應(yīng)用商店模式加快發(fā)展,瀏覽器成為其新載體未來,移動(dòng)應(yīng)用商店將繼續(xù)處于快速發(fā)展階段。隨著智
16、能終端種類和行業(yè)應(yīng)用的增加,未來應(yīng)用商店應(yīng)用范圍將持續(xù)擴(kuò)大,成為覆蓋手機(jī)、平板電腦、電子閱讀器、筆記本電腦等移動(dòng)終端設(shè)備的通用應(yīng)用下載平臺(tái)10。顯而易見,基于Android系統(tǒng)的3G網(wǎng)絡(luò)功能,會(huì)是一個(gè)非常熱門的技術(shù),并且擁有一個(gè)巨大的市場(chǎng)。越來越多的用戶將會(huì)選擇Android系統(tǒng)的移動(dòng)終端設(shè)備,所以方便、快速、便宜,會(huì)是用戶基本的選擇條件。方便,即是攜帶方便,使用方便。3G模塊的成品只有U盤大小,可以隨身攜帶,使用時(shí)只需插入一張3G電話卡,連接上手機(jī)或是平板電腦就能直接使用??焖?,即是上網(wǎng)速度快。MG3732模塊的信號(hào)接收能力強(qiáng),而且接收信號(hào)穩(wěn)定。便宜,即是價(jià)格便宜。MG3732模塊在同類型的
17、3G模塊中有明顯的價(jià)格優(yōu)勢(shì)。綜上所述,此項(xiàng)目今后必會(huì)受到用戶的追捧,并且具有巨大的市場(chǎng)優(yōu)勢(shì)。2.4可行性2.4.1技術(shù)可行性基于Android的源代碼的開放,使得在對(duì)Android做系統(tǒng)開發(fā)的時(shí)候可以很好的通過查看源代碼來針對(duì)專門的問題進(jìn)行解決11。三星SP5C100的開發(fā)板有豐富的資源,在出現(xiàn)問題的時(shí)候在互聯(lián)網(wǎng)中的各大論壇中都能夠找到相應(yīng)的解決方案。所以通過學(xué)習(xí),查找相關(guān)的資料,開發(fā)本系統(tǒng)在技術(shù)方面沒有任何的問題。2.4.2經(jīng)濟(jì)可行性經(jīng)濟(jì)可行性就是對(duì)開發(fā)成本進(jìn)行分析,估計(jì)開發(fā)成本是否會(huì)超過項(xiàng)目的預(yù)期利潤7。在這個(gè)系統(tǒng)的開發(fā)過程中,需要的只是開發(fā)板的購買,而且開發(fā)板是可以多次使用的,對(duì)于And
18、roid系統(tǒng)是完全自由的,不需要付出任何的代價(jià)。當(dāng)項(xiàng)目結(jié)束的時(shí)候,可以直接把系統(tǒng)拿過去使用,或者針對(duì)相關(guān)的硬件進(jìn)行相應(yīng)的二次開發(fā),所獲得的效益是客觀的?;谝陨蟽牲c(diǎn)的分析,本次系統(tǒng)開發(fā)是很有價(jià)值的。2.5本章小結(jié)通過對(duì)軟件和硬件的需求分析,說明所選擇的硬件平臺(tái)是非常合適的。加之Android系統(tǒng)在未來幾年也是一個(gè)非常熱門的方向,3G市場(chǎng)更是穩(wěn)定快速發(fā)展,所以此次開發(fā)的項(xiàng)目,不僅緊靠市場(chǎng)的需求,而且在未來的幾年內(nèi)都是一個(gè)熱門的方向。3 硬件與軟件環(huán)境概述3.1硬件概述3.1.1開發(fā)板平臺(tái)采用了FS_S5PC100開發(fā)平臺(tái),該開發(fā)平臺(tái)用三星公司先進(jìn)的基于 Cortex-A8內(nèi)核的S5PC100 處
19、理器設(shè)計(jì)而成??梢赃m應(yīng)Android 、Linux 、Wince 等智能操作系統(tǒng)的發(fā)展及市場(chǎng)需求12。S5PC100處理器采用了64/32 位的內(nèi)部總線結(jié)構(gòu),運(yùn)算速度最大833MHZ13。包括強(qiáng)大的硬件加速器,如:動(dòng)態(tài)視頻處理、顯示控制和縮放。支持多種格式的硬件編解碼:MPEF-1/2/4 、H263/H264 等。其視頻解碼能力很強(qiáng)大并且省電 ,編解碼能力達(dá)到720p30fps (1280x720),支持電視輸出 (NTSC/PAL/HDMI )。支持 2D/3D 加速。本處理器廣泛應(yīng)用于智能手機(jī)、平板電腦等產(chǎn)品。FS_S5PC100平臺(tái)的外觀,如圖3-1所示。圖3-1 FS_S5PC100
20、的外觀圖3.1.2 3G模塊3G模塊采用的是中興MG3732模塊,適用于 WCDMA和GSM網(wǎng)絡(luò),支持850/900/1800/1900/2100 頻段14。ZTE MG3732 3G模塊外觀,如圖3-2所示。圖3-2 MG3732外觀圖3.2軟件環(huán)境概述3.2.1 交叉開發(fā)環(huán)境的搭建(1)安裝交叉編譯工具鏈 解壓 “Linux-Androidtoolchain ”目錄下的 “arm-none-eabi-4.2.2.tgz 到根 “/usr/local”目錄下,在“/usr/local”目錄下會(huì)生成“arm”目錄。執(zhí)行命令:#tar zxvf arm-none-eabi-4.2.2.tgz修改
21、環(huán)境變量 “PATH ”。$ sudo vim /etc/environment 將路徑添加到 PATH 變量的最后面,命令如下: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games :/usr/local/arm/4.2.2-eabi/usr/bin 保存退出后執(zhí)行:source /etc/environment 這樣修改的環(huán)境變量會(huì)立即生效。(2)安裝 JDK安裝“Linux-Androidtoolchain”目錄下的“jdk.bin”,jdk.bin是Jdk1.5,Jdk1.5 是編譯A
22、ndroid2.1必須的工具。 把“jdk.bin”拷貝到“/usr”目錄下,然后執(zhí)行,按照提示安裝即可。#sudo ./jdk.bin 安裝結(jié)束后還要配置一下環(huán)境變量。 $ sudo vim /etc/environment將路徑添加到PATH變量的最后面。PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.2.2-eabi/usr/bi n:/usr/jdk1.5.0_21/bin 保存退出后執(zhí)行:source /etc/environment3.2.2
23、搭建并配置Java環(huán)境(1)安裝依賴包$sudo apt-get install build-essential $sudo apt-get install libncurses5-dev $sudo apt-get install x11proto-core-dev $sudo apt-get install zlib1g-dev $sudo apt-get install libx11-dev $sudo apt-get install gperf $sudo apt-get install bison $sudo apt-get install flex (2)搭建 Java 編譯環(huán)境安
24、裝JDK下載jdk(JDK_1_5.BIN)并執(zhí)行如下命令:$sudo mkdir /usr/java$suod mv JDK_1_5.BIN /usr/java$sudo chmod +x JDK_1_5.BIN $sudo ./JDK_1_5.BIN 在執(zhí)行以上命令后生成license文件,按q然后根據(jù)提示輸入yes即可開始安裝。配置java環(huán)境$sudo gedit /.bashrc 在最后面加上:export JAVA_HOME=/usr/java/jdk1.5.0_21 /系統(tǒng)所用的jdk目錄 export PATH=$JAVA_HOME/bin:$PATH export ANDRO
25、ID_JAVA_HOME=$JAVA_HOME 3.3本章小結(jié)本章主要介紹了開發(fā)系統(tǒng)中所需要的硬件及其參數(shù),以及如何搭建好開發(fā)平臺(tái)。良好的開發(fā)平臺(tái)為一個(gè)系統(tǒng)開發(fā)不僅節(jié)約了開發(fā)成本,同時(shí)也縮短了開發(fā)周期15。4 基于Android系統(tǒng)的電話、短信功能框架的實(shí)現(xiàn)基于Android系統(tǒng)的3G網(wǎng)絡(luò)電話、短信框架分為如下四個(gè)部分:(1) Java application層;(2) Java framework層;(3) Native framework層;(4) Kernel 層。第一層和第二層都屬于Android應(yīng)用層的代碼使用的是JAVA語言開發(fā),在此定義為Javaril。第三層屬于JNI層代碼使用
26、的是C/C+語言開發(fā),從圖4-1中可知,對(duì)于硬件的具體操作代碼在第三層,一般情況下,Android框架代碼中使用JNI的方式完成Java和C/C+代碼的相互調(diào)用,再使用binder封裝實(shí)現(xiàn)進(jìn)程間通訊。電話框架沒有使用這種方式,而是使用socket的方式,完成進(jìn)程間通訊,rild進(jìn)程作為服務(wù)器端,Java層代碼作為客戶端把用戶的數(shù)據(jù)發(fā)送給rild進(jìn)程去處理,3G的網(wǎng)絡(luò)功能框架圖如圖4-1所示。圖4-1 3G網(wǎng)絡(luò)功能框架圖4.1 Application層4.1.1 電話部分(1)通話部分撥打電話時(shí),首先會(huì)調(diào)用onClick()方法,這個(gè)方法會(huì)通過myEditText.getText().toSTr
27、ing()方法獲取所撥打的電話號(hào)碼,并會(huì)調(diào)用isPhoneNumberValid()方法判斷這個(gè)電話號(hào)碼是否符合格式,如果符合格式,則會(huì)觸發(fā)Outgoingcallbroadcaster.java中的oncreate方法,如果號(hào)碼是緊急號(hào)碼則直接以startactivity方式處理。若不是緊急號(hào)碼,則將該號(hào)碼以sendorderedbroadcast(outgoingcallreceiver)方式處理,由OutgoingcallReceiver內(nèi)部類去接收(doReceive)此號(hào)碼,并在doreceive中啟動(dòng)InCallScreen類。IncallScreen類中,若第一次進(jìn)入則調(diào)用onc
28、reate函數(shù);若通話中再撥打電話則調(diào)用onnewintent函數(shù)。oncreate函數(shù)中會(huì)調(diào)用internalResolveIntent方法-調(diào)用placecall函數(shù)(建立一個(gè)我們需要撥打電話的Call)-接著調(diào)用Phoneutil.java的placecall函數(shù)(傳入phone對(duì)象和number參數(shù)),里面調(diào)用Connection cn = phone.dial(number)。phone類是個(gè)接口類,其中聲明了dial這個(gè)方法,具體的結(jié)構(gòu)如箭頭所示:Phone(interface)-implements-PhoneBase(abstractclass)+requestToString
29、(rr.mRequest);send(rr);在sendSMS()方法中,把上面?zhèn)飨聛淼亩绦畔嚓P(guān)的數(shù)據(jù)寫入到了Parcel中,協(xié)同一個(gè)特殊的RILRequest寫入到Socket的輸出流中,進(jìn)而將數(shù)據(jù)傳遞到RIL層。4.3 Native層RIL(Radio Interface Layer)層,主要是基于AT命令的操作,也就是把上層的傳遞下來的數(shù)據(jù)包(電話數(shù)據(jù)或是短信數(shù)據(jù))分解,并轉(zhuǎn)化為可以讓3G模塊識(shí)別的AT命令,最后把3G模塊處理完數(shù)據(jù)返回的response解析,再傳遞回上層。4.3.1 Android RIL概念A(yù)ndroid RIL是基于telephony服務(wù)和raido硬件層的抽象層,
30、Android的Rild庫介于硬件抽象層HAL接口與基于Modem之間,它同樣提供了語音、數(shù)據(jù)、短信、SIM卡管理以及STK應(yīng)用的功能,實(shí)現(xiàn)思路跟微軟的RIL有異曲同工之妙,也是把標(biāo)準(zhǔn)的 GSM27.007中常用的如Dial這些做主動(dòng)請(qǐng)求的操作稱之為request,一共75個(gè);另外一類信息是GSM模塊主動(dòng)上報(bào)的例如信號(hào)強(qiáng)度、基站信息等,稱之為unsolicited response,一共17個(gè)。其開發(fā)模式是跟微軟RIL開發(fā)差不多,需要針對(duì)不同的GSM模塊進(jìn)行不同的GSM驅(qū)動(dòng)開發(fā),公用的部分google已經(jīng)做好了,特定的部分需要用戶自己去定制,這樣做可以大大地提高開發(fā)效率。以下是RIL交互圖,如
31、圖4-2所示。圖4-2 RIL交互圖4.3.2 本地代碼 RIL支持的本地代碼包括RIL庫和守護(hù)進(jìn)程。hardware/ril/includehardware/ril/librilhardware/ril/rildhardware/ril/reference-ril編譯結(jié)果是:/system/bin/rild :守護(hù)進(jìn)程/system/lib/libril.so :RIL 的庫/system/lib/libreference-ril.so :RIL 參考庫Android的RIL驅(qū)動(dòng)模塊,在hardware/ril目錄下,一共分rild,libril.so以及l(fā)ibrefrence_ril.so
32、三個(gè)部分,另外radiooptions可供自動(dòng)或手動(dòng)調(diào)試使用。它們都依賴于include目錄中ril.h頭文件。目前cupcake分支上帶的是gsm的支持,另有一個(gè)cdma分支,3G通信模塊MG3732用到的是gsm驅(qū)動(dòng)。(1) rild與libril.so以及l(fā)ibrefrence_ril.so的關(guān)系 rild僅以main函數(shù)作為整個(gè)RIL層的入口點(diǎn),負(fù)責(zé)完成初始化。在rild.c文件中,將完成RIL的加載過程,它會(huì)執(zhí)行如下操作:首先動(dòng)態(tài)加載Vendor RIL的.so文件;其次執(zhí)行RIL_startEventLoop()開啟消息隊(duì)列以進(jìn)行事件監(jiān)聽;最后通過執(zhí)行Vendor RIL的rilI
33、nit()方法來進(jìn)行Vendor RIL與libril的關(guān)系建立。libril.so與 rild結(jié)合緊密,是其共享庫。編譯時(shí)就已經(jīng)建立了這一關(guān)系(其實(shí)也可以編譯成可執(zhí)行程序,作為守護(hù)進(jìn)程運(yùn)行)。組成部分為ril.cpp和ril_event.cpp。libril.so駐留在 rild這一守護(hù)進(jìn)程中,主要完成同上層通信的工作,接受RIL請(qǐng)求并傳遞給librefrence_ril.so,同時(shí)把來自librefrence_ril.so的反饋回傳給調(diào)用進(jìn)程。編譯時(shí),libril被鏈入rild,它為rild提供了event處理功能,還提供了在rild與Vendor RIL之間傳遞請(qǐng)求和響應(yīng)消息的能力。Li
34、bril提供的主要功能分布在兩個(gè)主要方法中:一個(gè)是RIL_startEventLoop()方法;另一個(gè)是RIL_register()方法。RIL_startEventLoop()方法所提供的功能就是啟用eventLoop線程,執(zhí)行RIL消息隊(duì)列;RIL_register()方法的功能是啟動(dòng)名為rild的監(jiān)聽端口。librefrence_ril.sorild通過手動(dòng)的dlopen方式加載,結(jié)合稍微松散,這主要是因?yàn)閘ibrefrence.so負(fù)責(zé)跟Modem硬件通信。這樣做更方便替換或修改加載的方式,以適配更多種類的Modem。它將來自libril.so的請(qǐng)求轉(zhuǎn)換為AT命令,同時(shí)監(jiān)控Modem的
35、反饋信息,并傳遞回libril.so。在初始化時(shí),rild通過符號(hào)RIL_Init獲取一組函數(shù)指針并以此與之建立聯(lián)系。reference-ril會(huì)接收調(diào)用者傳來的參數(shù),參數(shù)內(nèi)容為與radio的通信方式。如通過串口連接radio,那么參數(shù)形式為:-d /dev/ttySx,如圖4-3所示。圖4-3 Rild、Libril.so及Librefrence.so關(guān)系圖radiootionsradiooptiongs通過獲取啟動(dòng)參數(shù),利用socket與rild通信,其作用是通過串口將一些與radio相關(guān)的參數(shù)直接傳給rild??捎糜谡{(diào)試時(shí)配置Modem參數(shù)的配置。(2)初始化流程rild 是一個(gè)守護(hù)進(jìn)程
36、,在這里定義宏RIL_SHLIB。執(zhí)行的過程為:獲取參數(shù)打開功能庫建立事件循環(huán)執(zhí)行RIL_InitRIL_register。主入口是rild.c中的main函數(shù),主要完成三個(gè)任務(wù):任務(wù)一:開啟libril.so中的event機(jī)制。在RIL_startEventLoop中,最核心的是由多路I/O驅(qū)動(dòng)的消息循環(huán)。任務(wù)二:初始化librefrence_ril.so。也就是跟硬件或模擬硬件modem通信的部分(后面統(tǒng)一稱硬件),通過RIL_Init函數(shù)完成。任務(wù)三:通過RIL_Init獲取一組函數(shù)指針RIL_RadioFunctions,并通過RIL_register完成注冊(cè),并打開接受上層命令的so
37、cket通道。初始化流程分析如下:任務(wù)一:也就是RIL_startEventLoop函數(shù)。RIL_startEventLoop在ril.cpp中實(shí)現(xiàn),它的主要目的是通過pthread_create(&s_tid_dispatch, &attr, eventLoop, NULL)建立一個(gè)dispatch線程,入口點(diǎn)在eventLoop. 而eventLoop中,會(huì)調(diào)用ril_event.cpp中的ril_event_loop()函數(shù),建立起消息(event)隊(duì)列機(jī)制。這一消息隊(duì)列的機(jī)制討論如下:void ril_event_init(); / 初始化消息隊(duì)列void ril_event_set(
38、struct ril_event * ev, int fd, bool persist, ril_event_cb func, void * param);/ 設(shè)置消息隊(duì)列相關(guān)的屬性void ril_event_add(struct ril_event * ev); / 增加消息void ril_timer_add(struct ril_event * ev, struct timeval * tv); / 增加時(shí)間計(jì)時(shí)器void ril_event_del(struct ril_event * ev);/ 刪除消息void ril_event_loop(); / 通過多路復(fù)用I/O機(jī)制循環(huán)調(diào)
39、用消息隊(duì)列struct ril_event struct ril_event *next;/ 下一個(gè)消息struct ril_event *prev;/ 前一個(gè)消息int fd; /事件相關(guān)設(shè)備句柄。例如對(duì)于串口數(shù)據(jù)事件,fd就是相關(guān)串口的設(shè)備句柄bool persist; /如果是保持的,則不從watch_list中刪除struct timeval timeout; ril_event_cb func; /回調(diào)事件處理函數(shù)void *param; /回調(diào)時(shí)參數(shù);每個(gè)ril_event結(jié)構(gòu),與一個(gè)fd句柄綁定(可以是文件、socket、管道等),并且?guī)б粋€(gè)func指針去執(zhí)行指定的操作。具體流程
40、是:ril_event_init完成后,通過ril_event_set來配置一個(gè)新ril_event,并通過ril_event_add加入到隊(duì)列之中(實(shí)際通常用rilEventAddWakeup來添加)。add會(huì)把隊(duì)列里所有ril_event的fd,放入一個(gè)fd集合readFds中。這樣 ril_event_loop能通過一個(gè)多路復(fù)用I/O的機(jī)制(select)來等待這些fd。如果任何一個(gè)fd有數(shù)據(jù)寫入,則進(jìn)入分析流程processTimeouts(),processReadReadies(&rfds, n)和firePending()(后面會(huì)詳細(xì)分析這些流程)。另外可以看到,在進(jìn)入ril_e
41、vent_loop之前,已經(jīng)通過pipe機(jī)制掛入了s_wakeupfd_event。目的是為了可以在一些情況下能夠內(nèi)部喚醒ril_event_loop的多路復(fù)用阻塞,比如一些帶timeout的命令到期的時(shí)候。至此第一個(gè)任務(wù)分析完畢,這樣便建立起了基于event隊(duì)列的消息循環(huán),稍后便可以接受上層發(fā)來的的請(qǐng)求了(上層請(qǐng)求的event對(duì)象建立,在第三個(gè)任務(wù)中)。任務(wù)二:這個(gè)任務(wù)的入口是RIL_Init, RIL_Initreference-ril.c首先通過參數(shù)獲取(p/d/s)硬件接口的設(shè)備文件或模擬硬件接口的socket. 接下來便新創(chuàng)建一個(gè)線程pthread_create(&s_tid_mai
42、nloop, &attr, mainLoop, NULL)繼續(xù)初始化,即mainLoop。mainLoop的主要任務(wù)是建立起與硬件的通信,然后通過read方法阻塞等待硬件的主動(dòng)上報(bào)或響應(yīng)。在注冊(cè)一些基礎(chǔ)回調(diào)(timeout、readerclose)后,mainLoop首先打開硬件設(shè)備文件,建立起與硬件的通信,s_device_path和s_port是前面獲取的設(shè)備路徑參數(shù),將其打開(兩者可以同時(shí)打開并擁有各自的reader,這里也很容易添加雙卡雙待等支持)。接下來通過at_open(fd, onUnsolicited)函數(shù)建立起這一設(shè)備文件上的reader等待循環(huán),這也是通過新建一個(gè)線程完成,
43、ret= pthread_create(&s_tid_reader, &attr, readerLoop, &attr),入口點(diǎn)為readerLoop。AT命令都是以/r/n或/n/r的換行符來作為分隔符的,所以readerLoop是line驅(qū)動(dòng)的,除非出錯(cuò)、超時(shí)等,否則會(huì)讀到一行完整的響應(yīng)或主動(dòng)上報(bào),才會(huì)返回。這個(gè)循環(huán)啟動(dòng)以后,基本的AT響應(yīng)機(jī)制就已經(jīng)建立了起來。對(duì)它的具體分析,包括at_open中掛接的ATUnsolHandler, 放到后面的response分析里去。SMS(短信)的收發(fā)if(isSMSUnsolicited(line)判斷也在readerLoop中。有了響應(yīng)的機(jī)制(當(dāng)然
44、,能與硬件通信也已經(jīng)可以發(fā)請(qǐng)求了),通過RIL_requestTimedCallback(initializeCallback, NULL, &TIMEVAL_0),跑到initializeCallback中,執(zhí)行一些以AT命令為主的Modem初始化命令。關(guān)于AT命令發(fā)送的流程,詳見request分析。這里可以看到,主要完成一些參數(shù)配置,以及網(wǎng)絡(luò)狀態(tài)的檢查等。硬件已經(jīng)可以訪問了。任務(wù)三:由RIL_Init的返回值funcs = rilInit(&s_rilEnv, argc, rilArgv)開始,這是一個(gè)RIL_RadioFunctions結(jié)構(gòu)的指針。typedef struct int v
45、ersion; /* set to RIL_VERSION */RIL_RequestFunc onRequest;RIL_RadioStateRequest onStateRequest;RIL_Supports supports;RIL_Cancel onCancel;RIL_GetVersion getVersion; RIL_RadioFunctions;其中最重要的是onRequest域,來自上層的請(qǐng)求都由這個(gè)函數(shù)進(jìn)行映射后轉(zhuǎn)換成對(duì)應(yīng)的AT命令并發(fā)給硬件。Rild通過RIL_register注冊(cè)這一指針。RIL_register中要完成的另外一個(gè)任務(wù),就是打開跟上層通信的socket
46、接口(s_fdListen是主接口,s_fdDebug供調(diào)試時(shí)使用)。然后將這兩個(gè)socket接口使用任務(wù)一中實(shí)現(xiàn)的機(jī)制進(jìn)行注冊(cè)(僅列出s_fdListen)。ril_event_set (&s_listen_event, s_fdListen, false,listenCallback, NULL);rilEventAddWakeup (&s_listen_event);這樣將兩個(gè)socket加到任務(wù)一中建立起來多路復(fù)用I/O的檢查句柄集合中,一旦有上層來的(調(diào)試)請(qǐng)求,event機(jī)制便能響應(yīng)處理了。(3)Request流程對(duì)Dial而言,CommandInfo包含了所有的AT命令。所以Co
47、mmandInfo結(jié)構(gòu)應(yīng)該這樣進(jìn)行初始化:RIL_REQUEST_DIAL, dispatchDial, responseVoid這里執(zhí)行dispatchFunction, 也就是dispatchDial這一函數(shù)。其實(shí)有很多種類的dispatch function, 比如dispatchVoid, dispatchStrings, dispatchSIM_IO等等, 這些函數(shù)的區(qū)別在于解析傳入的參數(shù)形式,void就是不帶參數(shù)的,Strings是以string做參數(shù),又如Dial等,有自己的參數(shù)解析方式,以此類推。Request號(hào)和參數(shù)具備后,就可以進(jìn)行具體的request函數(shù)調(diào)用了。利用s_c
48、allbacks.onRequest(pRI-pCI-requestNumber, xxx, len, pRI)完成這一操作。s_callbacks的作用是獲取前文中提到的來自libreference-ril的RIL_RadioFunctions結(jié)構(gòu)指針。request請(qǐng)求在這里轉(zhuǎn)入底層的 libreference-ril處理,handler是reference-ril.c中的onRequest.onRequest進(jìn)行一個(gè)簡單的switch分發(fā)。RIL_REQUEST_DIAL流程是:onRequest-requestDial-at_send_command-at_send_command_f
49、ull-at_send_command_full_nolock-writeline。requestDial中將命令和參數(shù)轉(zhuǎn)換成對(duì)應(yīng)的AT命令,調(diào)用公共send command接口at_send_command。除了這個(gè)接口之外,還有如下命令:at_send_command_singleline、at_send_command_sms、at_send_command_multiline等,這是根據(jù)at返回值,以及發(fā)命令流程的類型來區(qū)別的。比如at_csq類型,需要at_send_command_singleline,而發(fā)送短信,因?yàn)橛衟rompt提示符“”,傳送數(shù)據(jù)、結(jié)束符等一系列操作,需要專門
50、用at_send_command_sms來實(shí)現(xiàn)。然后執(zhí)行at_send_command_full,前面幾個(gè)接口都會(huì)最終到這里,再通過一個(gè)互斥的at_send_command_full_nolock調(diào)用,完成最終的寫出操作,在writeline中,寫出到初始化時(shí)打開的設(shè)備中。前面提到RILSender將請(qǐng)求呼叫的字節(jié)流傳給了rild的socket。這時(shí),ril_event_loop方法的select檢測(cè)到了有請(qǐng)求的信號(hào),導(dǎo)致被掛入pending_list,并執(zhí)行ev-func(ev-fd, 0, ev-param),即調(diào)用static void listenCallback (int fd, short flags, void
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 5.2 解決問題 二年級(jí)下冊(cè)數(shù)學(xué)同步練習(xí)(含答案)
- 人教版四年級(jí)上冊(cè)數(shù)學(xué)第六單元除數(shù)是兩位數(shù)的除法達(dá)標(biāo)檢測(cè)試卷(帶答案)
- 精準(zhǔn)農(nóng)業(yè)技術(shù)研發(fā)合同(2篇)
- 四川省成都市蓉城聯(lián)盟2024-2025學(xué)年高一上學(xué)期12月期末考試物理試卷(解析版)
- 山西省太原市2024-2025學(xué)年高二上學(xué)期期中考試物理試卷(解析版)
- 山東省濟(jì)寧市2024-2025學(xué)年高二上學(xué)期12月聯(lián)考物理試題(解析版)
- 二級(jí)建造師之二建建設(shè)工程法規(guī)及相關(guān)知識(shí)題庫【達(dá)標(biāo)題】
- 遼寧省七校2024-2025學(xué)年高二上學(xué)期11月聯(lián)考(期中)物理試卷(解析版)
- 外研版高中英語選擇性必修第四冊(cè)UNIT1 Period7課件
- 身份證號(hào)碼變更申請(qǐng)書
- 山東省威海乳山市(五四制)2023-2024學(xué)年八年級(jí)下學(xué)期期末考試化學(xué)試題(解析版)
- 工程施工人員安全教育培訓(xùn)【共55張課件】
- 2024電化學(xué)儲(chǔ)能電站巡視檢查項(xiàng)目表
- 資金共管協(xié)議合同范本
- 中壓電力線載波通信技術(shù)規(guī)范
- 光療法課件(精制手工圖文)
- 精密陶瓷劈刀項(xiàng)目規(guī)劃方案
- 周志華-機(jī)器學(xué)習(xí)-Chap01緒論-課件
- 共享廚房項(xiàng)目計(jì)劃書
- 第三單元《交流平臺(tái)與初試身手》課件語文六年級(jí)下冊(cè)
- (2024年)TPM培訓(xùn)講義課件
評(píng)論
0/150
提交評(píng)論