Android 9.0 视频通话流程

时间:2024-04-09 22:28:02

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