天天看點

Android 9.0 視訊通話流程

Android 9.0 視訊通話流程

被更新方收到視訊邀請流程:

1、RILD 接收到,+EIMSCMODE 指令(用來定義視訊通話和語音通話之間的切換)

2、ImsRILAdapter.java vendor\proprietary\packages\services\Ims\src\com\mediatek\ims\ril

給ImsRILAdapter發送RIL_UNSOL_VIDEO_CAPABILITY_INDICATOR 資訊,進行處理

CommandsInterface接口的實作者,與RIL.java設計類似,有ImsRILSender和ImsRILReceiver在各自線程中執行收發,和rild-ims互動;

3、ImsCallSessionProxy.java vendor\proprietary\packages\services\Ims\src\com\mediatek\ims

負責執行通話相關操作,直接與ImsRILAdapter互動,并通過ImsCommandsInterface回調上報狀态,負責通話的建立和狀态跟蹤,通過listener來同步消息;

4、ImsVTProvider.java vendor\proprietary\packages\services\Ims\src\com\mediatek\ims\internal

通過定義ImsVTProvider的onReceivePauseState監聽事件

5、ImsVideoCallProvider.java frameworks\base\telephony\java\android\telephony\ims

Connection.VideoProvider

6、ImsVideoCallProviderWrapper.java frameworks\opt\net\ims\src\java\com\android\ims\internal

它與IMS服務中的視訊調用提供程式的實際實作進行中介和通信;本質上,它是IMS視訊調用提供程式實作的包裝器。

該類維護一個綁定器,通過該綁定器,ImsVideoCallProvider的實作可以傳達其調用回調的意圖。在這個類中,處理跨此活頁夾的消息,并使用超類的方法執行回調。

7、Connection frameworks\base\telecomm\java\android\telecom

表示到攜帶語音和/或視訊的遠端端點的電話呼叫或連接配接

8、VideoCallImpl frameworks\base\telecomm\java\android\telecom

實作一個視訊調用,它允許InCallUi将指令與底層通信

9、InCallVideoCallCallbacks vendor\proprietary\packages\apps\Dialer\InCallUI\src\com\android\incallui

onSessionModifyRequestReceived 處理傳入的會話修改請求。

10、InCallVideoCallCallbacksNotifier vendor\proprietary\packages\apps\Dialer\InCallUI\src\com\android\incallui

upgradeToVideoRequest 通知聽衆電話更新到視訊請求。

11、VideoSessionController vendor\proprietary\packages\apps\Dialer\InCallUI\src\com\mediatek\incallui\videocall

onUpgradeToVideoRequest

被更新端收到邀請後彈框提示

packages\apps\Dialer\InCallUI\src\com\android\incallui

12、Call

setRequestedVideoState

處理傳入的會話修改請求。存儲待處理的視訊請求,并将會話修改狀态設定為{@link SessionModificationState#RECEIVED_UPGRADE_TO_VIDEO_REQUEST},以便跟蹤事實上,請求已經收到。隻有更新請求需要使用者确認,并且将由此方法處理。遠端使用者可以在沒有攝像頭的情況下關閉自己的相機确認。

13、CallList

14、InCallPresenter

15、StatusBarNotifier

16、VideoCallFragment