美文网首页
SRVCC发生后应用层的通话状态变更

SRVCC发生后应用层的通话状态变更

作者: 朱兰婷 | 来源:发表于2020-04-01 17:01 被阅读0次

背景

以下内容基于Android Q。

单通通话

单通通话发生SRVCC时很简单,RIL上报SRVCC状态变更的消息,并会上报CALL状态变更的消息,fw收到后断开ImsCall/ImsPhoneConnection新建DriverCall/GsmCdmaConnection并把它关联到TelephonyConnection。其流程图如下:

srvcc变更流程

整个过程TelephonyConnection、Telecom/Call、InCall/Call不会变。如下:

SRVCC后的Call变更

更多Ims通话相关内容请参考:Android IMS 通话应用设计

会议电话

和单通通话一样,会议电话发生SRVCC后RIL上报SRVCC状态变更的消息,并会上报CALL状态变更的消息,fw收到后断开ImsCall/ImsPhoneConnection新建DriverCall/GsmCdmaConnection,但不同的是新建的GsmCdmaConnection不会延用原来Ims会议电话的host TelephonyConnection,而是断开原来所有的TelephonyConnection、ImsConference、ConferenceParticipantConnection,然后新建对应的TelephonyConnection和TelephonyConference。如下:

会议电话发生SRVCC后的Call变更

可以看到因为断开又新建了TelephonyConference和它的参与者TelephonyConnection,Telecom/Call、InCall/Call也对应断开新建了。

流程图如下:

会议电话srvcc变更流程

1. 和原先ImsPhoneConnection address A相同的GsmCdmaConnection通知ImsConference的host TelephonyConnection更新original connection,ImsConference得知后发现已不是ims通话则断开原先ims会议电话的TelephonyConnection,并为其新建一个与GsmCdmaConnection address A对应的TelephonyConnection。

2. address为B的GsmCdmaConnection直接通知注册的PstnIncomingCallNotifier有新的Unknown Connection(既不是来电也不是已知去电),PstnIncomingCallNotifier从GsmCdmaConnection来出address等消息直接调用TelecomManager#addNewUnknownCall(),之后Telecom新建一个Call并通知新建一个对应的TelephonyConnection。

3. 上面2的Telecom/Call和TelephonyConnection的连接建立完成后会触发TelephonyConferenceController重新评估会议电话的状态,当发现当前所有Connection都是多方通话的参与者时会构建TelephonyConference,并通知Telecom为其新建Call。

4. 将所有TelephonyConnection加入TelephonyConference并通知Telecom它们的父子关系。

会议电话的更多内容请参考:Android 会议电话应用设计 

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

相关文章

  • SRVCC发生后应用层的通话状态变更

    背景 以下内容基于Android Q。 单通通话 单通通话发生SRVCC时很简单,RIL上报SRVCC状态变更的消...

  • 这不是浪漫而是惜命

    昨晚回来洗衣服便跟爸爸电话通话,并且想因姐的生活状态的变更,进而想对他们之前的生活状态和理念支撑有更具体的了解。 ...

  • vuex

    调用和变更状态

  • 一、单一职责原则

    1、定义 应该有且仅有一个原因引起类的变更 2、实现 (1)定义通话连接服务 (2)实现通话连接服务 (3)定义通...

  • Activity - 处理状态变更

    用户触发和系统触发的不同事件会导致 Activity 从一个状态转换到另一个状态. 1. 配置发生了更改 横屏和竖...

  • 4、iOS监听通话状态

    监听通话状态

  • 基于zmap 的应用层扫描器 zgrab (一)

    基于zmap 的应用层扫描器 zgrab (一) [toc] 介绍 zgrab 是基于zmap无状态扫描的应用层扫...

  • iOS开发通话状态

    通过CTCall 的callEventHandler回调block来获得通话状态的改变. 代码如下: sim卡问题...

  • OC 实现状态模式

    状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。 状态模式的优...

  • 税优健康险-索赔注意事项

    1.状态变更 当你的医保、或者其它商业医疗险发生了状态变更的时候,必须要通知保险公司,保险公司会根据新的情况,调整...

网友评论

      本文标题:SRVCC发生后应用层的通话状态变更

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