<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > Android平臺的手機雙網(wǎng)雙待的設計

Android平臺的手機雙網(wǎng)雙待的設計

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

0 引言

本文引用地址:http://dyxdggzs.com/article/260166.htm

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

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

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

  1 Android 操作系統介紹

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

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

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

  2 Android 平臺雙網(wǎng)雙待框架設計

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

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

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

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

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

  3 Android 平臺雙網(wǎng)雙待軟件設計

  Android 平臺雙網(wǎng)雙待功能設計主要涉及到Android 軟件平臺的四大功能模塊,分別是Linux 內核層、本機庫/運行時(shí)、應用程序框架層以及應用程序層。其中在應用程序層利用Android的各種組件API 實(shí)現PhoneApp 并在Linux 內核層提供相應的底層驅動(dòng)。Android 系統架構如圖2 所示。

圖2 Android 系統架構
1) Linux 內核。

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

 ?。?) 本機庫/Android 運行時(shí)。

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

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

 ?。?) 應用程序框架層。

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

 ?。?) 應用程序層。

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

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

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

圖3 Android 雙網(wǎng)雙待電話(huà)部分結構

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

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

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

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

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

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

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

 ?。?) 由于本方案維護兩個(gè)RIL 實(shí)例,因此RIL 實(shí)例管理者( RIL instance Manager) 需要各自負責與android telephony 通過(guò)socket 進(jìn)行連接。每個(gè)RIL 實(shí)例針對各自的SIM 卡提供專(zhuān)用的通信通道來(lái)進(jìn)行modem 側的通信服務(wù)。
(2) 無(wú)線(xiàn)電仲裁管理者( Radio Service Arbitration Manager),這是實(shí)現雙網(wǎng)雙待方案中新增加的模塊,主要用來(lái)為每個(gè)RIL 實(shí)例進(jìn)行語(yǔ)音和短消息業(yè)務(wù)的仲裁,數據服務(wù)的仲裁由MODEM 來(lái)進(jìn)行。

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

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

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

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

圖4 RIL 與modem 的工作原理

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

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

圖5 android 雙網(wǎng)雙待呼叫部分結構

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

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

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

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

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

  5 結語(yǔ)

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



評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>