Android平台视频通话会议事件流程介绍

本文主要介绍在Android AOSP平台上,芯片厂商如何通过公共接口上报会议通话的事件信息。解析会议状态信息通常在私有APK中完成,并通过ImsConferenceState对象上报,涉及到的关键类包括ImsConferenceState、ImsCallSessionListener、ImsCallSession和ImsCall。尽管Android原生平台不支持获取会议成员的媒体状态,但会创建ConferenceParticipant对象并上报状态信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

范围

通过RFC4575协议解读一文我们了解会议状态信息是通过NOTIFY消息通知到手机终端,通常是以xml的格式,芯片厂商在提供源码时就已实现了该部分功能,本文主要结合Android AOSP平台介绍下会议通话的event上报流程。

内容

因为芯片厂商已经实现了会议电话的状态消息内容解析功能,这部分代码通常包含在私有APK中,这里主要介绍芯片厂商的apk是如何通过Android的公用接口上报该部分信息的。

芯片厂商APK如何上报会议信息

芯片厂商都是在自己的私有apk中实现解析功能,解析完成后通过Android的公共接口上报,在android平台我们关注以下几个类:

  1. ImsConferenceState.java
  2. ImsCallSessionListener.java
  3. ImsCallSession.java
  4. ImsCall.java

芯片厂商的私有apk在解析完会议even内容后封装成ImsConferenceState对象,这里先看下ImsConferenceState.java如何定义的。

public final class ImsConferenceState implements Parcelable {
    /**
     * conference-info : user
     */
    // user (String) : Tel or SIP URI
    public static final String USER = "user";
    // user > display text (String)
    public static final String DISPLAY_TEXT = "display-text";
    // user > endpoint (String) : URI or GRUU or Phone number
    public static final String DISPLAY_TEXT= "endpoint";
    // user > endpoint > status
    public static final String STATUS = "status";

ImsConferenceState中共定义了4个我们需要关注的内容,分别是USER、DISPLAY_TEXT、DISPLAY_TEXT和STATUS,其对应USER节点以及其下的几个子节点内容,从这里看到,其实android原生平台是不支持获取会议成员的·media状态的。
ImsConferenceState对象构建完成后会通知监听对象当前会议状态有更新,可以参考callSessionConferenceStateUpdated方法。最终在ImsCall的notifyConferenceStateUpdated方法中我们可以看到如下内容:

 private void notifyConferenceStateUpdated(ImsConferenceState state) {
   
        if (state == null || state.mParticipants == null) {
   
            return;
        }

        Set<Entry<String, Bundle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值