新聞中心

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

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

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

0 引言

本文引用地址:http://m.butianyuan.cn/article/260166.htm

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

圖2 Android 系統(tǒng)架構(gòu)
1) Linux 內(nèi)核。

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

  (2) 本機庫/Android 運行時。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. 2 Android RIL 層的改進

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

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

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

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

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

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

圖4 RIL 與modem 的工作原理

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

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

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

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

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

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

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

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

  5 結(jié)語

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



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉