<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è) > 專(zhuān)題 > 基于A(yíng)ndroid平臺的雙網(wǎng)雙待的設計方法

基于A(yíng)ndroid平臺的雙網(wǎng)雙待的設計方法

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

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

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

   系統電話(huà)服務(wù)的實(shí)現基礎是RIL.在 單模狀態(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 獲取的Phone /CDMAPhone 來(lái)訪(fǎng)問(wèn)RIL,提供諸如撥號、接通、掛斷、保持通話(huà)等服務(wù)功能。Android 雙網(wǎng)雙待呼叫部分的結構如圖5 所示。

  

 

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

  Android 系統雙網(wǎng)雙待呼叫部分的實(shí)現,從Phone /CDMAPhone到對應RIL 的路徑中間主要涉及幾個(gè)關(guān)鍵數據結構,即Call /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 的應用。



關(guān)鍵詞: Android GSM

評論


相關(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>