日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Telephony控制通话消息下发流程

發(fā)布時間:2023/12/20 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Telephony控制通话消息下发流程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?Telephony控制通話消息下發(fā)流程

通話相關代碼名稱統(tǒng)一約定及運行進程匯總
路徑統(tǒng)稱進程
packages/app/DialerDialercom.android.dialer
packages/service/telecommtelecomsystem_service
packages/service/telephonyTeleServicecom.android.phone
framework/base/telecommframework無進程只是提供調用framwork
framework/opt/Telephonytelephonysystem_service或com.android.phone

首先撥號流程和來電流程分析在前幾篇中寫道過來電流程,撥號流程。

我們在通話界面若想更改當前通話狀態(tài),比如掛斷/接聽當前接收來電,掛斷/保持當前通話等操作,可以理解為是控制消息下發(fā)的過程,從Dialer——>Telecom——>TeleService——>RIL——>Modem,通話控制消息一層一層的下發(fā),最終交給Modem處理具體的通話控制。通話狀態(tài)更改完成后,在將通話狀態(tài)變更的消息一層一層的上報,最后交給Dialer應用對通話界面進行更新和顯示。

這里需要關注幾個重點

三個應用的控制消息傳遞

? ? ? Dialer應用展示的通話界面或來電界面均有控制通話狀態(tài)請求的界面控制,通過滑動或是點擊相關的控件,將觸發(fā)通話轉態(tài)控制,調用android.telecom.Call對象的hold方法,如步驟1,在步驟3的Dialer應用中,調用IInCallAdapter的holdCall服務接口完成第一次的跨進程服務接口調用,進入Telecom應用。Telecom應用首先更新Call狀態(tài),此處的Call對象為Telecom應用內部定義的類com.android.service.telecom.Call,步驟8調用IConnectionService的hold服務接口,完成第二次的款進程服務接口調用,進入到TeleService應用。TeleService應用中經(jīng)過層層方法調用,由GsmCdmaCallTracker對象進行Call的hold操作,并將請求發(fā)給RIL對象,發(fā)出對應的RIL請求

IInCallAdapter接口匯總

IICallAdapter的Stub接口實現(xiàn)在Telecom應用的InCallAdapter類中,他主要由answerCall,rejectCall,playDtmfTone,mergeConference等接口構成;InCallAdapter對象則在InCallController對象綁定,IInCallService成功后創(chuàng)建。

IConnectionService接口匯總

IConnectionService的Stub接口實現(xiàn)在framework/base下的ConnectionService抽象類的匿名內部類中,mBinder為其對象,他主要由addConnectionServiceAdapter,createConnection等創(chuàng)建TelephonyConnection接口,以及answer,reject,hold,playDtmfTone等控制通話狀態(tài)的接口構成。而在TeleService應用中,TelephonyConnectionService繼承了抽象類TelephonyConnection。

Android通話模型,Dialer,telecom和TeleService三個系統(tǒng)應用主要負責的業(yè)務及運行進程空間,結合這四個通話的核心流程,可以抽象出模型,可以站在更高的層次去認識和理解Android Telephony通話功能。

流程圖:

系統(tǒng)的分層?

? ? ? ?Dialer,Telecom和TeleService三大應用可以理解為:Dialer應用是普通的Android? App應用,其運行進程的用戶信息和進程信息,也能說明此問題;Telecom應用運行在system_service進程上,其進程用戶名為system系統(tǒng)用戶,說明他在運行在Android Framework框架層;TeleService應用運行的進程名是com.android.phone,用戶名是radio,承載著Telephony Call協(xié)議棧,同樣可以認為他運行在Android Framewrok框架層;最后RIL他運行在HAL(硬件抽象層)。

交互方式

? ? ? Dialer,Telecom,TeleService和RIL都是通過服務進行交互的,在圖中,他們之間有箭頭連接的都是通過Service跨進程的接口調用實現(xiàn)的。Dialer與TeleService之間沒有直接的消息傳遞,要通過Telecom進行消息中轉,Telecom與RIL直接同樣沒有直接的消息傳遞,要通過TeleService進行消息中轉。

? ? ? ?通過服務進行跨進程接口調用實現(xiàn)消息的傳遞,服務接口調用本身就是同步的接口調用,在Service端的實現(xiàn)將轉換為異步方式處理,待消息處理完成后,在使用回調的接口傳遞消息處理的結果

分解通話相關流程

根據(jù)消息的傳遞方向,可分成兩大類

? ? ? ? 第一類 控制通話消息下發(fā)流程 : 應用層通過框架層向RIL發(fā)起通話管理和控制相關RIL請求,RIL轉換成對應的消息發(fā)發(fā)送給Modem執(zhí)行,其中包括撥號,接聽電話,拒接電話,保持,恢復通話等。

? ? ? ?第二類 為通話狀態(tài)更新消息上報流程 :RIL收到的Modem的通話狀態(tài)變化通知,通過框架層向應用層發(fā)起通話狀態(tài)變化通知,包括來電,電話接通,進入通話中等。

總結

以上是生活随笔為你收集整理的Android Telephony控制通话消息下发流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。