智慧服务,成就美好体验 项目咨询

主页 > 服务与支持 > 开发平台 > 客户端SDK参考 > Android Native SDK > 会议 会议控制

入门使用

会议控制

更新时间:2019-11-20

退出和结束会议

描述

普通与会者和主席均可在会议中主动退出会议,主席可以结束会议。

说明: 

若主席退出会议,则会议中无主席。预约会议时,原主席可以通过主席接入信息重新加入会议获取主席。当会议中无任何与会者时,会议也会自动结束。

前提条件

与会者已在会议中。

业务流程

  • 退出会议
    图1 退出会议流程 
  1. 普通与会者或主席侧UI调用TsdkConference对象中的leaveConference()方法退出会议。

     

    说明: 

    在主动退出会议过程中,SDK层会主动挂断通话,然后才离开会议。

    代码示例:
    //Java code
    public int leaveConf()
    {
        if (null == currentConference)
        {
            Log.i(TAG,  "leave conf, currentConference is null ");
            return 0;
        }
    
        int result = currentConference.leaveConference();
        if (result == 0) {
            currentConference = null;
        }
    
        return result;
    }
    
     

     

  2. 普通与会者或主席侧SDK在收到“退出会议”请求的响应后,通过TsdkNotify对象中的onEvtCallDestroy()方法向UI上报呼叫ID销毁事件。

     

    代码示例:
    //Java code
    public void onEvtCallDestroy(TsdkCall call){
        Log.i(TAG, "onCallDestroy");
        if (null == call)
        {
            Log.e(TAG, "call obj is null");
            return;
        }
        Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
        if (callSession == null)
        {
            Log.e(TAG, "call session obj is null");
            return;
        }
        removeCallSessionFromMap(callSession);
    }
    
     

     

  3. 其他与会者侧SDK收到会议成员列表刷新通知,通过TsdkNotify对象中的onEvtInfoAndStatusUpdate()方法向UI上报会议信息及状态更新事件,UI刷新会议状态和成员列表。

     

    说明: 

    详细流程参见会议信息及会议状态更新描述。

     

  • 结束会议
    图2 结束会议流程 
  1. 主席侧UI调用TsdkConference对象中的endConference()方法结束会议。

     

    说明: 

    应用程序界面在关闭会议时应为主席提供“退出会议”和“结束会议”的选择入口。

    代码示例:
    //Java code
    public int endConf()
    {
        if (null == currentConference)
        {
            Log.i(TAG,  "end conf, currentConference is null ");
            return 0;
        }
    
        int result =  currentConference.endConference();
        if (result == 0) {
            currentConference = null;
        }
    
        return result;
    }
    
     

     

  2. 其他与会者侧SDK收到会议结束通知,通过TsdkNotify对象中的onEvtConfEndInd()方法向UI上报会议结束通知,UI提示用户会议结束。

     

    代码示例:
    //Java code
    public void handleConfEndInd(TsdkConference conference)
    {
        Log.i(TAG, "handleConfEndInd" + conference.getHandle());
        currentConference = null;
    }
    
     

     

注意事项

无。

基础会控操作

描述

在会议中进行基础的会议控制操作。

前提条件

无。

业务流程

图3 基础会控操作流程 
  1. UI调用TsdkConference对象中的会议基础控制方法(如表1),实现会议控制相关操作。

     

    说明: 

    闭音会场:只闭音与会者。

    表1 参数说明

    会控类型

    接口

    权限

    说明

    闭音会场

    muteConference

    主席

    设置会议闭音后,除主席外,其他所有与会者均不可说(只可听)。

    添加与会者

    addAttendee

    主席

    支持邀请一个或多个与会者。

    重播与会者

    redialAttendee

    主席

    重新呼叫之前挂断的与会者。

    挂断与会者

    handupAttendee

    主席

    挂断在会议中的与会者。

    删除与会者

    removeAttendee

    主席

    踢出与会者(正在会议中的)、移除已离会的与会者和取消正在邀请的与会者。

    闭音与会者

    muteAttendee

    • 主席
    • 普通与会者

    设置闭音后,该与会者不可说(只听)。

    会议主席在会议中设置或取消其他与会者闭音,普通与会者设置或取消自己闭音。

    举手

    setHandup

    • 主席
    • 普通与会者

    会议主席在会议中取消其他与会者举手,所有与会者设置或取消自己举手。

    设置会议视频模式

    setVideoMode

    主席

    支持的视频会议模式有“广播与会者模式”、“声控模式”和“自由讨论模式”。

    观看与会者

    watchAttendee

    • 主席
    • 普通与会者

    AVC 会议:只需要指定待选看的与会者号码,每次指定选看一个与会者。

    SVC会议:

    1. 除指定待选看的与会者号码外,还应该指定"SVC Label",以及待选看的分辨率(宽和高),且“SVC Label”与“分辨率”必须与“绑定SVC视频窗口”时填写的参数相对应。
    2. 更新选看时,需要全量指定所有选看信息(一大多少)。
    3. 若指定的待选看与会者号码为空(仅支持大窗口),则所选看的与会者由系统自动推送。

    广播与会者

    broadcastAttendee

    主席

    会议视频模式为“广播与会者模式”时主席可以指定广播与会者。

    申请主席

    requestChairman

    普通与会者

    通过主席密码申请主席权限成为主席。

    释放主席

    releaseChairman

    主席

    释放主席权限后成为普通与会者。

    设置会议录播

    setRecordBroadcast

    主席

    设置开始和结束录播。

    设置会议直播

    setLiveBroadcast

    主席

    设置开始和结束直播。

    代码示例:
    //Java code
    public int muteConf(boolean isMute)
    {
        if (null == currentConference)
        {
            Log.e(TAG,  "mute conf failed, currentConference is null ");
            return -1;
        }
    
        int result =  currentConference.muteConference(isMute);
    
        return result;
    }
    
     

     

  2. SDK在收到会控请求的响应后,通过TsdkNotify对象中的onEvtConfctrlOperationResult()方法向UI上报会控操作结果事件。

     

    代码示例:
    //Java code
    public void handleConfctrlOperationResult(TsdkConference conference, TsdkConfOperationResult result)
    {
        Log.i(TAG, "handleConfctrlOperationResult");
        int ret = result.getReasonCode();
        if (null == conference || null == result)
        {
            return;
        }
        if (ret != 0)
        {
            Log.e(TAG, "conf ctrl operation failed: " + result.getDescription());
            return;
        }
        int confOperationType = result.getOperationType();
        switch (confOperationType)
        {
            case 2:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.MUTE_CONF_RESULT, ret);
                break;
            case 3:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.UN_MUTE_CONF_RESULT, ret);
                break;
            case 4:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.LOCK_CONF_RESULT, ret);
                break;
            case 5:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.UN_LOCK_CONF_RESULT, ret);
                break;
            case 6:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.ADD_ATTENDEE_RESULT, ret);
                break;
            case 7:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.DEL_ATTENDEE_RESULT, ret);
                break;
            case 10:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.MUTE_ATTENDEE_RESULT, ret);
                break;
            case 11:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.UN_MUTE_ATTENDEE_RESULT, ret);
                break;
            case 12:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.HAND_UP_RESULT, ret);
                break;
            case 13:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.CANCEL_HAND_UP_RESULT, ret);
                break
            case 18:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.REQUEST_CHAIRMAN_RESULT, ret);
                break;
            case 19:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.RELEASE_CHAIRMAN_RESULT, ret);
                break;
            default:
                break;
        }
    }
    
     

     

  1. 所有会议成员侧SDK收到会议成员列表刷新通知,通过TsdkNotify对象中的onEvtInfoAndStatusUpdate()方法向UI上报会议信息及状态更新事件,UI刷新会议状态和成员列表。

     

    说明: 

    详细流程参见会议信息及会议状态更新”描述。

     

注意事项

无。

会议信息及会议状态更新

描述

会议过程中,会议状态或与会者成员状态发生变化时,服务器会推送变更通知,应用程序界面应刷新相应的状态以提示用户。

说明: 
  • 会议状态当前包括锁定状态、闭音状态和是否录播状态。
  • 会议成员状态当前包括与会者加入、退出、挂断、闭音、举手和角色变更。

前提条件

主席和与会者均已在会议中。

业务流程

图4 更新会议状态信息和与会者列表流程 
  1. SDK在收到服务器返回的会议状态信息和与会者列表更新通知后,通过TsdkNotify对象中onEvtInfoAndStatusUpdate()方法向UI上报会议信息及会议状态更新事件。

     

    说明: 

    事件返回的消息内容为TsdkConference对象,其中:

    • 会场录音状态(record),为true时,应用程序界面应提示与会者当前处于录音状态。
    • 会场静音状态(allMute),为true时,应用程序界面应提示与会者当前处于会场闭音状态,除主席外,均可听不可说。
    • 会议主题(subject),不为空时,应用程序界面应显示此主题,在会议创建时已确定,首次获取后,不会再有变更。
    • 成员更新方式(confAttendeeUpdateType)参考TsdkConfAttendeeUpdateType,支持无更新、全量更新、增量增加、增量修改和增量删除,目前以全量同步的方式进行更新。
    • 是否高清视频会议(hdConf),为true时,会议视频为高清视频。
    • 会议媒体类型(confMediaType),参考TsdkConfMediaType枚举类。
    • 会议状态(confState),参考TsdkConfState枚举类。
    • 与会者个数,当前会议中的与会者个数可通过getAttendeeList().size()获取。
    • 与会者的详细信息(attendeeList),包括用户标识、名称、号码、闭音状态、静音状态、举手状态、用户状态、角色和支持的媒体类型,应用程序界面需要根据相应字段显示与会者的信息和状态。
    • 是否支持直播(supportLiveBroadcast),为true时,支持直播。
    • 是否直播状态(liveBroadcast),为true时,直播状态。
    • 是否支持录播(supportRecordBroadcast),为true时,支持录播。

    离会,删除与会者,退出会议等情景中,如遇不知如何判断是否还在会议中时,Android平台下都可以通过刷新事件判断自己是否在列表中来判断自己的状态。

    代码示例:
    //Java code
    public void handleInfoAndStatusUpdate(TsdkConference conference){
        Log.i(TAG, "onConfStatusUpdateInd");
        if ((currentConference == null) || (conference == null))
        {
            return;
        }
        if (currentConference.getHandle() != conference.getHandle())
        {
            return;
        }
        String handle = conference.getHandle()+"";
        this.updateConfInfo(conference);
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.STATE_UPDATE, handle);
    }
    
     

     

注意事项

无。

显示发言人

描述

会议过程中,应用程序显示服务器推送的当前发言人信息。

前提条件

与会者均已在会议中。

业务流程

图5 显示发言人流程 
SDK在收到服务器返回的发言人通知后,通过TsdkNotify对象中onEvtSpeakerInd()方法向UI上报发言人通知事件,携带当前发言方信息以及会议信息。
说明: 

当存在多个发言人时,建议应用程序界面按音量大小,显示第一发言人和第二发言人。

注意事项

无。