• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 專(zhuān)題 > 基于Android平臺(tái)的雙網(wǎng)雙待的設(shè)計(jì)方法

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

    ——
    作者: 時(shí)間:2012-11-30 來(lái)源:電子產(chǎn)品世界 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/139563.htm

       系統(tǒng)電話服務(wù)的實(shí)現(xiàn)基礎(chǔ)是RIL.在 單模狀態(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ú)線通信。比如,UI上層向RIL 層發(fā)送RIL_REQUEST_DIAL 請(qǐng)求,RIL 層在接收到該請(qǐng)求的時(shí)候,通過(guò)串口向modem 發(fā)送“AT***”命令,發(fā)起呼叫,當(dāng)然,最終真正實(shí)現(xiàn)通話的是modem 側(cè)的功能,此時(shí),與Android 就無(wú)關(guān)了。Android 平臺(tái)RIL 與modem 的工作原理如圖4 所示。

      

     

      圖4 RIL 與modem 的工作原理

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

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

      

     

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

      Android 系統(tǒng)雙網(wǎng)雙待呼叫部分的實(shí)現(xiàn),從Phone /CDMAPhone到對(duì)應(yīng)RIL 的路徑中間主要涉及幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu),即Call /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)的接口,如通話、掛斷等。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)用。



    關(guān)鍵詞: Android GSM

    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 攀枝花市| 乐都县| 小金县| 堆龙德庆县| 丹江口市| 天全县| 石景山区| 琼中| 镇巴县| 聂拉木县| 商洛市| 疏勒县| 苗栗县| 抚松县| 西和县| 保山市| 富民县| 缙云县| 绵竹市| 文登市| 凤冈县| 喀喇沁旗| 广河县| 平塘县| 大石桥市| 平潭县| 无为县| 南阳市| 十堰市| 桦甸市| 读书| 正宁县| 新蔡县| 乌拉特前旗| 股票| 南华县| 木兰县| 海门市| 和林格尔县| 凌云县| 吉水县|