主頁 > 服務(wù)與支持 > 開發(fā)平臺(tái) > 客戶端SDK參考 > Android Native SDK > 會(huì)議 會(huì)議控制
更新時(shí)間:2019-11-20
描述
普通與會(huì)者和主席均可在會(huì)議中主動(dòng)退出會(huì)議,主席可以結(jié)束會(huì)議。
若主席退出會(huì)議,則會(huì)議中無主席。預(yù)約會(huì)議時(shí),原主席可以通過主席接入信息重新加入會(huì)議獲取主席。當(dāng)會(huì)議中無任何與會(huì)者時(shí),會(huì)議也會(huì)自動(dòng)結(jié)束。
前提條件
與會(huì)者已在會(huì)議中。
業(yè)務(wù)流程
在主動(dòng)退出會(huì)議過程中,SDK層會(huì)主動(dòng)掛斷通話,然后才離開會(huì)議。
//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; } |
//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); } |
詳細(xì)流程參見會(huì)議信息及會(huì)議狀態(tài)更新描述。
應(yīng)用程序界面在關(guān)閉會(huì)議時(shí)應(yīng)為主席提供“退出會(huì)議”和“結(jié)束會(huì)議”的選擇入口。
//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; } |
//Java code public void handleConfEndInd(TsdkConference conference) { Log.i(TAG, "handleConfEndInd" + conference.getHandle()); currentConference = null; } |
注意事項(xiàng)
無。
描述
在會(huì)議中進(jìn)行基礎(chǔ)的會(huì)議控制操作。
前提條件
無。
業(yè)務(wù)流程
閉音會(huì)場(chǎng):只閉音與會(huì)者。
會(huì)控類型 |
接口 |
權(quán)限 |
說明 |
---|---|---|---|
閉音會(huì)場(chǎng) |
主席 |
設(shè)置會(huì)議閉音后,除主席外,其他所有與會(huì)者均不可說(只可聽)。 |
|
添加與會(huì)者 |
主席 |
支持邀請(qǐng)一個(gè)或多個(gè)與會(huì)者。 |
|
重播與會(huì)者 |
主席 |
重新呼叫之前掛斷的與會(huì)者。 |
|
掛斷與會(huì)者 |
主席 |
掛斷在會(huì)議中的與會(huì)者。 |
|
刪除與會(huì)者 |
主席 |
踢出與會(huì)者(正在會(huì)議中的)、移除已離會(huì)的與會(huì)者和取消正在邀請(qǐng)的與會(huì)者。 |
|
閉音與會(huì)者 |
|
設(shè)置閉音后,該與會(huì)者不可說(只聽)。 會(huì)議主席在會(huì)議中設(shè)置或取消其他與會(huì)者閉音,普通與會(huì)者設(shè)置或取消自己閉音。 |
|
舉手 |
|
會(huì)議主席在會(huì)議中取消其他與會(huì)者舉手,所有與會(huì)者設(shè)置或取消自己舉手。 |
|
設(shè)置會(huì)議視頻模式 |
主席 |
支持的視頻會(huì)議模式有“廣播與會(huì)者模式”、“聲控模式”和“自由討論模式”。 |
|
觀看與會(huì)者 |
|
AVC 會(huì)議:只需要指定待選看的與會(huì)者號(hào)碼,每次指定選看一個(gè)與會(huì)者。 SVC會(huì)議:
|
|
廣播與會(huì)者 |
主席 |
會(huì)議視頻模式為“廣播與會(huì)者模式”時(shí)主席可以指定廣播與會(huì)者。 |
|
申請(qǐng)主席 |
普通與會(huì)者 |
通過主席密碼申請(qǐng)主席權(quán)限成為主席。 |
|
釋放主席 |
主席 |
釋放主席權(quán)限后成為普通與會(huì)者。 |
|
設(shè)置會(huì)議錄播 |
主席 |
設(shè)置開始和結(jié)束錄播。 |
|
設(shè)置會(huì)議直播 |
主席 |
設(shè)置開始和結(jié)束直播。 |
//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; } |
//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; } } |
詳細(xì)流程參見會(huì)議信息及會(huì)議狀態(tài)更新”描述。
注意事項(xiàng)
無。
描述
會(huì)議過程中,會(huì)議狀態(tài)或與會(huì)者成員狀態(tài)發(fā)生變化時(shí),服務(wù)器會(huì)推送變更通知,應(yīng)用程序界面應(yīng)刷新相應(yīng)的狀態(tài)以提示用戶。
前提條件
主席和與會(huì)者均已在會(huì)議中。
業(yè)務(wù)流程
事件返回的消息內(nèi)容為TsdkConference對(duì)象,其中:
離會(huì),刪除與會(huì)者,退出會(huì)議等情景中,如遇不知如何判斷是否還在會(huì)議中時(shí),Android平臺(tái)下都可以通過刷新事件判斷自己是否在列表中來判斷自己的狀態(tài)。
//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); } |
注意事項(xiàng)
無。
描述
會(huì)議過程中,應(yīng)用程序顯示服務(wù)器推送的當(dāng)前發(fā)言人信息。
前提條件
與會(huì)者均已在會(huì)議中。
業(yè)務(wù)流程
當(dāng)存在多個(gè)發(fā)言人時(shí),建議應(yīng)用程序界面按音量大小,顯示第一發(fā)言人和第二發(fā)言人。
注意事項(xiàng)
無。