<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Android平臺(tái)的雙網(wǎng)雙待設(shè)計(jì)

          基于Android平臺(tái)的雙網(wǎng)雙待設(shè)計(jì)

          作者: 時(shí)間:2012-06-27 來(lái)源:網(wǎng)絡(luò) 收藏

          0 引言

          本文引用地址:http://www.ex-cimer.com/article/257407.htm

          隨著移動(dòng)通信技術(shù)的快速發(fā)展以及人們對(duì)手機(jī)功能需求的不斷提高,逐漸成為人們的日常消費(fèi)品,的用戶(hù)也與日俱增。為了方便人們的生活,追求已成為手機(jī)研發(fā)的一種普遍現(xiàn)象。解決了一部手機(jī)可以同時(shí)接入兩個(gè)網(wǎng)絡(luò)的難題,最大的優(yōu)點(diǎn)是保證了GSM 與CDMA 兩種網(wǎng)絡(luò)在同一手機(jī)中同時(shí)工作,真正實(shí)現(xiàn)了兩網(wǎng)自由連通。雙網(wǎng)的連通還具有差異化優(yōu)勢(shì),可以將CDMA 較高的接入速度和通信保密等強(qiáng)大功能體現(xiàn)在終端方面,使手機(jī)用戶(hù)能夠盡享CDMA 網(wǎng)絡(luò)支持的豐富多彩的數(shù)據(jù)增值業(yè)務(wù)。同時(shí)GSM 與CDMA 兩網(wǎng)的和諧整合將為手機(jī)廠(chǎng)商帶來(lái)巨大的市場(chǎng)價(jià)值。

          作為當(dāng)前眾多系統(tǒng)平臺(tái)的后起之秀,以其優(yōu)勢(shì)正逐漸獲得廣大手機(jī)開(kāi)發(fā)人員和手機(jī)消費(fèi)者的青睞。實(shí)現(xiàn)雙網(wǎng)雙待也必將成為 不斷創(chuàng)新和發(fā)展的重要因素。

          系統(tǒng)由嵌入式Linux 和Java 構(gòu)成,因此基于Android 系統(tǒng)平臺(tái)的雙網(wǎng)雙待設(shè)計(jì)區(qū)別于其他手機(jī)對(duì)雙網(wǎng)雙待的實(shí)現(xiàn),它充分地利用了Android 平臺(tái)清晰的系統(tǒng)架構(gòu)、簡(jiǎn)易的工作原理和已經(jīng)實(shí)現(xiàn)的部分Phone 核心應(yīng)用程序進(jìn)行雙網(wǎng)雙待的功能擴(kuò)展,提高了Android 平臺(tái)雙網(wǎng)雙待設(shè)計(jì)的效率。

          1 Android 操作系統(tǒng)介紹

          Android 是Google 于2007 年11 月份宣布的基于Linux 2. 6. 23平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),號(hào)稱(chēng)是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件。Google 重新設(shè)計(jì)了Android Java 虛擬機(jī)和系統(tǒng),使得Android 的Java 應(yīng)用更接近于底層系統(tǒng),效率更高; 另外使用虛擬機(jī)技術(shù)使得Android 的應(yīng)用在被監(jiān)控的情況下運(yùn)行,安全性更高。Android 包括移動(dòng)電話(huà)工作所需的全部軟件,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專(zhuān)有權(quán)障礙,具有平臺(tái)標(biāo)準(zhǔn)化、用戶(hù)可定制以及服務(wù)免費(fèi)等特色,是一個(gè)對(duì)第三方軟件完全開(kāi)放的平臺(tái),突破了iPhone 等只能添加為數(shù)不多的固定軟件的枷鎖; 同時(shí)與Windows Mobile、Symbian、iPhone OS 等廠(chǎng)商不同,Android 操作系統(tǒng)免費(fèi)向開(kāi)發(fā)人員提供,大大節(jié)省了開(kāi)發(fā)成本。

          Android 平臺(tái)由操作系統(tǒng)、中間件、用戶(hù)界面和應(yīng)用軟件組成。Linux 內(nèi)核層用來(lái)提供系統(tǒng)的底層服務(wù),位于硬件和其他軟件之間。Android 運(yùn)行庫(kù)包含一組核心庫(kù)和Dalvik 虛擬機(jī),Android 提供豐富的類(lèi)庫(kù)支持且大部分為開(kāi)源代碼,如采用嵌入式數(shù)據(jù)庫(kù)SQLite.應(yīng)用框架層為Android 開(kāi)發(fā)人員提供了訪(fǎng)問(wèn)框架應(yīng)用程序接口的全部權(quán)限,采用結(jié)構(gòu)化設(shè)計(jì)簡(jiǎn)化了組件間的重用。在應(yīng)用程序?qū)樱珹ndroid 本身附帶了一些核心的應(yīng)用程序,大大簡(jiǎn)化了Android 應(yīng)用程序的開(kāi)發(fā)。

          因此,利用Android 平臺(tái)更易于開(kāi)發(fā)具有雙網(wǎng)雙待功能的智能手機(jī)系統(tǒng),同時(shí)也便于在原有系統(tǒng)的基礎(chǔ)上進(jìn)行不斷的完善和功能擴(kuò)展。

          2 Android 平臺(tái)雙網(wǎng)雙待框架設(shè)計(jì)

          Android 平臺(tái)上實(shí)現(xiàn)的雙網(wǎng)雙待手機(jī)是將GSM 網(wǎng)絡(luò)和CDMA網(wǎng)絡(luò)相結(jié)合,使得一部手機(jī)可同時(shí)插入兩張不同網(wǎng)絡(luò)的號(hào)卡,并同時(shí)處于開(kāi)機(jī)狀態(tài),用戶(hù)無(wú)需切換網(wǎng)絡(luò),即可任意撥打、接聽(tīng)和收發(fā)短信,且這些手機(jī)均可支持中國(guó)電信自有的增值業(yè)務(wù),使商務(wù)人士盡享移動(dòng)辦公的自由以及休息娛樂(lè)的樂(lè)趣。此外,用戶(hù)還可預(yù)設(shè)接聽(tīng)和撥打電話(huà)的順序,使用起來(lái)非常方便。

          基于Android 系統(tǒng)平臺(tái)的雙網(wǎng)雙待的設(shè)計(jì),充分結(jié)合了Android2. 1 版本之后在framework 層上已經(jīng)實(shí)現(xiàn)的雙卡處理機(jī)制,設(shè)計(jì)方案主要側(cè)重于RIL 及ARM(modem)側(cè)的實(shí)現(xiàn)機(jī)制。通過(guò)在RIL 上依樣建立一套新的處理機(jī)制,將雙卡分別進(jìn)行處理。

          比如,打電話(huà)的時(shí)候,發(fā)送哪套請(qǐng)求就先選擇向哪套機(jī)制發(fā)送請(qǐng)求,然后還在這套機(jī)制中等待消息的返回。Android 平臺(tái)雙網(wǎng)雙待框架如圖1 所示。

          圖1 Android 平臺(tái)雙網(wǎng)雙待框架

          圖1 中GSM 網(wǎng)絡(luò)和CDMA 網(wǎng)絡(luò)分別擁有一套獨(dú)立的RIL處理機(jī)制,從而可以根據(jù)上層不同的Phone 服務(wù)執(zhí)行framework層以及RIL 層的相應(yīng)處理,真正實(shí)現(xiàn)雙網(wǎng)的協(xié)同工作,達(dá)到同一手機(jī)中雙網(wǎng)雙卡之間互不干擾的效果。

          3 Android 平臺(tái)雙網(wǎng)雙待軟件設(shè)計(jì)

          Android 平臺(tái)雙網(wǎng)雙待功能設(shè)計(jì)主要涉及到Android 軟件平臺(tái)的四大功能模塊,分別是Linux 內(nèi)核層、本機(jī)庫(kù)/運(yùn)行時(shí)、應(yīng)用程序框架層以及應(yīng)用程序?qū)?。其中在?yīng)用程序?qū)永肁ndroid的各種組件API 實(shí)現(xiàn)PhoneApp 并在Linux 內(nèi)核層提供相應(yīng)的底層驅(qū)動(dòng)。Android 系統(tǒng)架構(gòu)如圖2 所示。

          圖2 Android 系統(tǒng)架構(gòu)

          (1)Linux 內(nèi)核。

          Android 系統(tǒng)平臺(tái)是基于優(yōu)化的Linux 內(nèi)核來(lái)開(kāi)發(fā)的,主要添加了一個(gè)名為Goldfish 的虛擬CPU 以及Android 運(yùn)行所需的特定驅(qū)動(dòng)代碼。該層用來(lái)提供系統(tǒng)的底層服務(wù),提供諸如內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動(dòng)、安全管理、電源管理等驅(qū)動(dòng)模塊,作為一個(gè)虛擬的中間層,該層位于硬件與其他軟件層之間,采用YAFFS2 文件系統(tǒng),同時(shí)也是手機(jī)軟硬件的連接層。在系統(tǒng)開(kāi)發(fā)中,也需要針對(duì)自身的硬件模塊添加對(duì)應(yīng)的驅(qū)動(dòng),如Phone 驅(qū)動(dòng)、GPRS 驅(qū)動(dòng)、GPS 驅(qū)動(dòng)、液晶和觸摸板驅(qū)動(dòng)等。

          (2)本機(jī)庫(kù)/Android 運(yùn)行時(shí)。

          這些共享庫(kù)都是利用C 和C + + 語(yǔ)言編寫(xiě)的,且針對(duì)電話(huà)使用的特定的硬件架構(gòu)進(jìn)行了編譯,并已由手機(jī)制造商預(yù)先安裝到手機(jī)上。本機(jī)庫(kù)主要包含: 標(biāo)準(zhǔn)C 函數(shù)庫(kù)、媒體功能庫(kù)、瀏覽器引擎、2D 和3D 圖形庫(kù)及SQLite 引擎等。開(kāi)發(fā)者利用這些功能可以方便地開(kāi)發(fā)出人機(jī)界面友好的應(yīng)用程序接口,極大地縮短了開(kāi)發(fā)過(guò)程。

          Android 運(yùn)行時(shí)包含一組Java 內(nèi)核庫(kù)和Dalvik 虛擬機(jī),它們有效地優(yōu)化了Java 程序的運(yùn)行過(guò)程。

          (3)應(yīng)用程序框架層。

          Android 應(yīng)用程序開(kāi)發(fā)是基于框架和組件的,該層提供了在創(chuàng)建應(yīng)用程序時(shí)需要使用的各種高級(jí)構(gòu)建塊,因此在該層中,開(kāi)發(fā)人員擁有訪(fǎng)問(wèn)框架API 的全部權(quán)限,在開(kāi)發(fā)應(yīng)用程序時(shí)調(diào)用Android 本身自帶的許多組件,也可以開(kāi)發(fā)新的組件,并將該組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用,這樣的模塊大大提高了應(yīng)用程序的開(kāi)發(fā)效率。

          (4)應(yīng)用程序?qū)印?/p>

          Android 本身包含一些由Java 開(kāi)發(fā)的核心應(yīng)用程序,如桌面、短信收發(fā)程序、日歷、電話(huà)通訊錄、瀏覽器、E-mail 客戶(hù)端等,開(kāi)發(fā)者還可以在此基礎(chǔ)上開(kāi)發(fā)出更多具有特色的Android 應(yīng)用程序,如特效相機(jī)、播放器、充電相框等。

          3. 1 Android 雙網(wǎng)雙待實(shí)現(xiàn)方案

          在GSM 單模狀態(tài)下通過(guò)添加一套支持CDMA 的無(wú)線(xiàn)接口層RIL 來(lái)實(shí)現(xiàn)雙網(wǎng)雙待機(jī)制的方案如圖3 所示。

          圖3 Android 雙網(wǎng)雙待電話(huà)部分結(jié)構(gòu)

          在PhoneAPP 中new 一個(gè)GSMPhone 和一個(gè)CDMAPhone,分別對(duì)應(yīng)兩種framework (不同的CallTracker)和RIL (不同的RIL),實(shí)現(xiàn)單模向雙網(wǎng)雙待的改進(jìn)。

          圖中CallLiST 主要用來(lái)管理兩個(gè)電話(huà)之間的切換,以避免如掛掉某一個(gè)通話(huà)卻導(dǎo)致另一個(gè)的通話(huà)也結(jié)束等一系列界面顯示出錯(cuò)問(wèn)題。CallList 模塊管理兩個(gè)電話(huà)以及這兩個(gè)電話(huà)所有的通話(huà),通過(guò)一個(gè)CallList 表來(lái)存儲(chǔ)兩個(gè)電話(huà)的所有呼叫。上層界面調(diào)用這個(gè)CallList 表來(lái)處理兩個(gè)電話(huà)的切換。在framework 中new 一個(gè)CallList 的類(lèi)來(lái)存儲(chǔ)phone 的多個(gè)電話(huà)以便上層顯示。

          CallList 類(lèi)中包含attached(),detach(),update(),clear(),get-CurrentCall(),getDefault()等方法。使得兩個(gè)Phone 的Call 得到控制。掛掉的時(shí)候就從表中刪除,來(lái)電話(huà)的時(shí)候加入表中。

          上層顯示的時(shí)候,只要調(diào)用CallList 中的最后存入Call 就不會(huì)出現(xiàn)界面出錯(cuò)的情況。

          在包含GSM 網(wǎng)絡(luò)和CDMA 網(wǎng)絡(luò)的雙網(wǎng)雙待模塊中,因?yàn)橛辛薈DMA 部分的整合不少代碼已經(jīng)發(fā)生改變,原來(lái)的CallTracker只被GSM 使用,在這里改為CallTracker 和GsmCallTracker,抽象出CallTracker 基類(lèi),使其也可以被CDMA 利用; GSMCall 變成GsmCall,更加符合統(tǒng)一的命名規(guī)則; 另外,比如pppd 的啟動(dòng)部分,也從Java 框架層放到RIL 層。

          3. 2 Android RIL 層的改進(jìn)

          在Android 系統(tǒng)中RIL 是電話(huà)系統(tǒng)的本地實(shí)現(xiàn),它提供了Android 電話(huà)服務(wù)(android. telephony)與無(wú)線(xiàn)電硬件之間的抽象層,主要負(fù)責(zé)AT 命令的發(fā)送和響應(yīng)解析,這也是電話(huà)服務(wù)的實(shí)現(xiàn)基礎(chǔ)。另外,RIL 還負(fù)責(zé)數(shù)據(jù)的可靠傳輸。因此RIL 在Android電話(huà)部分起核心作用。本方案設(shè)計(jì)過(guò)程中主要涉及到RIL以下四個(gè)部分的修改:

          (1)由于本方案維護(hù)兩個(gè)RIL 實(shí)例,因此RIL 實(shí)例管理者(RIL instance Manager)需要各自負(fù)責(zé)與android telephony 通過(guò)socket 進(jìn)行連接。每個(gè)RIL 實(shí)例針對(duì)各自的SIM 卡提供專(zhuān)用的通信通道來(lái)進(jìn)行modem 側(cè)的通信服務(wù)。

          (2)無(wú)線(xiàn)電仲裁管理者(Radio Service Arbitration Manager),這是實(shí)現(xiàn)雙網(wǎng)雙待方案中新增加的模塊,主要用來(lái)為每個(gè)RIL 實(shí)例進(jìn)行語(yǔ)音和短消息業(yè)務(wù)的仲裁,數(shù)據(jù)服務(wù)的仲裁由MODEM 來(lái)進(jìn)行。

          (3)RIL 事件分配機(jī)(RIL Event Dispatcher),用于分配RIL請(qǐng)求及AMSS 事件到通信服務(wù)管理模塊進(jìn)行的處理。

          (4)無(wú)線(xiàn)電服務(wù)管理者(Radio Service Manager),Android 通話(huà)應(yīng)用首先需要通過(guò)子系統(tǒng)信息來(lái)從framework 層獲得通話(huà)服務(wù),然后每個(gè)SIM 卡子系統(tǒng)將會(huì)映射到一個(gè)特定的RIL 實(shí)例ID上,服務(wù)管理將使用RIL 實(shí)例的ID 來(lái)識(shí)別子系統(tǒng)ID 中DSS API的參數(shù)。

          3. 3 Android 雙網(wǎng)雙待通話(huà)機(jī)制的實(shí)現(xiàn)

          Android 系統(tǒng)電話(huà)服務(wù)的實(shí)現(xiàn)基礎(chǔ)是RIL.在Android 單模狀態(tài)下的RIL 同TI 等平臺(tái)類(lèi)似,均使用了Google 默認(rèn)的參考接口,也就是通過(guò)打開(kāi)modem 側(cè)提供的串口或者USB 虛擬串口向modem 側(cè)發(fā)送AT 指令的方式,進(jìn)行實(shí)際的無(wú)線(xiàn)通信。比如,UI上層向RIL 層發(fā)送RIL_REQUEST_DIAL 請(qǐng)求,RIL 層在接收到該請(qǐng)求的時(shí)候,通過(guò)串口向modem 發(fā)送AT***命令,發(fā)起呼叫,當(dāng)然,最終真正實(shí)現(xiàn)通話(huà)的是modem 側(cè)的功能,此時(shí),與Android 就無(wú)關(guān)了。Android 平臺(tái)RIL 與modem 的工作原理如圖4 所示。

          圖4 RIL 與modem 的工作原理

          呼叫(call)構(gòu)建于電話(huà)服務(wù)的基本架構(gòu)之上。

          與呼叫相關(guān)的主要用戶(hù)接口,其實(shí)就是基于ITelephony 接口實(shí)現(xiàn)Phone 應(yīng)用中的Phone服務(wù),通過(guò)TelephonyManager 提供訪(fǎng)問(wèn)接口。此服務(wù)內(nèi)部通過(guò)PhonyFactory 獲取的GSMPhone /CDMAPhone 來(lái)訪(fǎng)問(wèn)RIL,提供諸如撥號(hào)、接通、掛斷、保持通話(huà)等服務(wù)功能。Android 雙網(wǎng)雙待呼叫部分的結(jié)構(gòu)如圖5 所示。

          圖5 android 雙網(wǎng)雙待呼叫部分結(jié)構(gòu)

          Android 系統(tǒng)雙網(wǎng)雙待呼叫部分的實(shí)現(xiàn),從GSMPhone /CDMAPhone到對(duì)應(yīng)RIL 的路徑中間主要涉及幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu),即GSMCall /CDMACall、CallNotifiter、GSMConnection /CDMAConnection、CallTracker 等類(lèi)。

          其中GSMCall 和CDMAPhone 都繼承Call 基類(lèi),提供基本的呼叫控制結(jié)構(gòu)以及呼叫狀態(tài),如Hold、Active 等信息,每個(gè)接通的GSMCall / CDMACall 都擁有一個(gè)或多個(gè)(conference call)GSMConnection /CDMAConnection 結(jié)構(gòu),用于維護(hù)呼叫時(shí)長(zhǎng)等相關(guān)信息。CallTracker 是呼叫模塊的核心,它提供與呼叫相關(guān)的接口,如通話(huà)、掛斷等。GSMPhone /CDMAPhone 擁有CallTracker的實(shí)例,并封裝相應(yīng)的接口,這個(gè)接口通過(guò)調(diào)用GSMPhone /CDMAPhone中的CommandsInterface 實(shí)現(xiàn),即提交的RIL 封裝。

          除此之外,CallTracker 還維護(hù)當(dāng)前的GSMCall 和CDMACall列表,保持對(duì)所有呼叫狀態(tài)的追蹤,提供對(duì)來(lái)去電等呼叫狀態(tài)的管理。實(shí)現(xiàn)追蹤的方法為pollCallsWhenSafe,通過(guò)CommandsInterface的getCurrentCalls 接口獲取當(dāng)前活動(dòng)的呼叫列表。這一操作的底層實(shí)現(xiàn)為AT + CLCC(不同的Modem 實(shí)現(xiàn)可能不同),這是從Modem 獲取呼叫狀態(tài)列表的主要接口。回調(diào)通過(guò)ENENT_ POLL _ CALLS-RESULT 完成,回調(diào)函數(shù)為handlePollCalls,這是獲取Modem 中實(shí)際呼叫信息的核心方法,也是Tracker的含義所在。handlePollCalls 完成實(shí)際的追蹤功能,根據(jù)底層上報(bào)的Outgoing、Incomming 以及Active、Hold 等狀態(tài)更新Call列表的信息,每個(gè)呼叫在其生命周期內(nèi)的狀態(tài)轉(zhuǎn)換,在Call-Tracker 中都可得到體現(xiàn),并將這些變化信息及時(shí)通知其關(guān)注者,也就是實(shí)現(xiàn)Phone 的應(yīng)用。

          4 結(jié)果分析

          基于Android 操作系統(tǒng)實(shí)現(xiàn)的雙網(wǎng)雙待功能模塊設(shè)計(jì),利用Android 通用的系統(tǒng)架構(gòu)和設(shè)備無(wú)關(guān)的應(yīng)用程序開(kāi)發(fā)平臺(tái),實(shí)現(xiàn)了雙網(wǎng)雙待單通系統(tǒng)電話(huà)部分的框架設(shè)計(jì)和上層Phone 應(yīng)用程序設(shè)計(jì)。改進(jìn)后的Android 系統(tǒng)平臺(tái)同時(shí)支持GSM 和CDMA兩種網(wǎng)絡(luò)同時(shí)待機(jī),這大大方便了許多擁有兩張手機(jī)卡并且不在同一制式網(wǎng)絡(luò)的用戶(hù)。圖6 為Android 系統(tǒng)平臺(tái)上GSM和CDMA 雙網(wǎng)同時(shí)待機(jī)的狀態(tài)圖。

          圖6 GSM 和CDMA 雙網(wǎng)同時(shí)待機(jī)界面

          5 結(jié)語(yǔ)

          利用Android 原有系統(tǒng)架構(gòu)和本身包含一些Java 核心應(yīng)用程序,通過(guò)添加一套新的支持CDMA 的RIL 來(lái)實(shí)現(xiàn)基于Android平臺(tái)的雙網(wǎng)雙待設(shè)計(jì),使得一部手機(jī)同時(shí)維護(hù)兩套獨(dú)立的RIL,既支持GSM 又支持CDMA,分別對(duì)雙SIM 卡進(jìn)行各自獨(dú)立的處理,極大地方便了廣大Android 手機(jī)用戶(hù)。Android 作為目前被給予厚望的智能手機(jī)操作系統(tǒng),實(shí)現(xiàn)雙網(wǎng)雙待必將為其贏得更廣闊的發(fā)展空間以及更多的擁護(hù)者,也將為未來(lái)的發(fā)展奠定堅(jiān)實(shí)的基礎(chǔ)。盡管本方案的部分設(shè)計(jì)還不完善,許多細(xì)節(jié)的實(shí)現(xiàn)還有待解決。但隨著Google 對(duì)Android 版本的不斷升級(jí)以及Android 應(yīng)用的不斷豐富,基于Android 平臺(tái)的雙網(wǎng)雙待設(shè)計(jì)將會(huì)不斷地完善與發(fā)展。



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();