美文网首页
Android IMS 语音通话 vs 视频通话 vs 视频彩铃

Android IMS 语音通话 vs 视频通话 vs 视频彩铃

作者: 朱兰婷 | 来源:发表于2019-11-04 20:55 被阅读0次

    背景

    以下内容基于Android P code。

    主要差异

    视频通话比语音通话主要是多了判断是否为视频通话,及视频的显示和传输。如下:

    video call 视频界面显示控制

    界面通过IVideoProvider控制camera的显示并设置TextureView等,Ims service通过IVideoCallback来通知一些media的更新。如下

    视频通话进程交互

    判断是否为视频通话

    视频通话同ims语音通话逻辑几乎相同,不一样的地方在于他们的video state不同,因为应用通过video state来判断是否为视频通话。

    设置video state及通过video state更新界面的流程如下:

    video state

    1. 拨号时,拨号盘调用TelecomManager#placeCall()的参数中带有video state,Telecom将这个video state传给Telephony,并放入Phone的参数中,CallTracker在拨号时会把这个video state转换成ImsCallProfile中的call type,Ims service 拨号时从profile中拿出这个call type再判断是否拨打视频电话。

    2. 来电时,IImsCallSession中有包含call type的ImsCallProfile,并从中拿到video state更新ImsPhoneConnection。之后通知Telephony应用来电,Telephony通话Telecom来电,在Telecom和Telephony建立连接后,从ImsPhoneConnection中拿出video state放入telecom/Connection中,并返回该Connection给Telecom/Call,Telecom/Call更新VideoState。

    3. Telecom在和InCallUI建立连接后,会把Telecom/Call的信息更新到telecom/Call中,telecom/Call判断为视频电话后会建立VideoCall,并通知InCallUI/Call更新,以此触发界面更新。

    视频显示及传输

    视频显示其实就是在通话界面加两块TextureView,一块用来显示本机camera拍下的视频画面即preview TextureView,一块用来显示对端camera拍下来并传输过来的视频画面即remote TextureView。其具体显示流程如下:

    视频显示及传输流程

    视频与语音通话互切

    语音通话切视频通话

    如图:

    发起方 被动方

    视频彩铃

    视频彩铃和视频通话的不同点在于:

    1. 视频彩铃仅在alerting状态显示,而视频通话各个状态都可以。

    2. 视频彩铃显示网络端在本端投放的视频,而视频通话显示本端和对端相机拍摄的画面。

    因此,判断视频彩铃的依据为:

    1. call state为alerting。

    2. video state仅有RX,没有TX。

    原创内容欢迎转载,但请注明出处,谢谢!

    相关文章

      网友评论

          本文标题:Android IMS 语音通话 vs 视频通话 vs 视频彩铃

          本文链接:https://www.haomeiwen.com/subject/dvbdbctx.html