實時對講功能是語音會議的一種特殊形式,默認最大支持5方,專有云根據選定套餐進行擴展。發言人必須搶麥才能發言,只能有人放麥以后,其他人才能搶麥。
注意:5.0以上的SDK集成的客戶端,測試音視頻功能,音視頻,會議,群組等操作需要,先將在我們控制臺創建的應用上線,才可測試(控制臺提供的測試demo中的應用id和應用token,不能用來測試,需要使用自己在官網控制臺創建的應用的id和應用token)
1.1、接口邏輯:
接口調用是采取“請求回調”和“通知回調”的方式和服務端交互。用戶發出創建對講、搶麥等操作時,在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。會議中的成員收到服務端發送過來的消息通過“通知回調”方法onReceiveInterPhoneMeetingMsg(ECInterPhoneMeetingMsg msg)來接收并進行處理。
1.2、業務流程
(1)用戶A創建實時對講,創建的同時選擇用戶B、用戶C加入
(2)用戶A先被加入到實時對講會議室中
(3)用戶B和用戶C收到請求并同意加入,同時用戶A收到用戶B和用戶C加入的通知消息
(4)通過退出接口可以退出實時對講
(5)實時對講只要有一個人,實時對講就不會結束,直到所有人對出實時對講,會議室自動關閉
//要邀請的成員數組 String members[]= [”John的賬號”,”Smith的賬號”]; ECDevice.getECMeetingManager().createInterphoneMeeting( members, new OnCreateOrJoinMeetingListener () { @Override //reason創建實時對講回調狀態碼 //meetingNo 創建實時對講回調的會議號 public void onCreateOrJoinMeeting (ECError reason, String meetingNo) { if(reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { log(“創建實時對講成功,跳轉到實時對講界面”); } else { log(“創建實時對講失敗”); } } });
public void onReceiveInterPhoneMeetingMsg(ECInterPhoneMeetingMsg msg){ ECInterPhoneMeetingMsgType type = msg.getMsgType(); if (type==INVITE) { //如果同意加入需要調用加入實時對講接口。不加入就忽略此邀請 Log(@"被邀請加入實時對講"); } else if(type==OVER) { Log(@實時對講會議被解散"); }else if(type== JOIN){ Log(@有人加入實時對講"); } else if(type== CONTROL_MIC){ Log(@有人控麥"); } else if(type== RELEASE_MIC){ Log(@有人放麥"); } else if(type== EXIT){ Log(@有人退出實時對講"); } }
void joinMeetingByType(java.lang.String meetingNo, java.lang.String meetingPwd, ECMeetingManager.ECMeetingType meetingType, ECMeetingManager.OnCreateOrJoinMeetingListener listener)
ECDevice.getECMeetingManager().exitMeeting(ECMeetingManager.ECMeetingType.MEETING_INTERCOM);
String meetingNo = “所在的實時對講的會議號 ”; ECDevice.getECMeetingManager().controlMicInInterPhoneMeeting ( meetingNo, new OnControlMicInInterPhoneListener () { @Override // reason搶麥的狀態碼 // speaker當前在麥 public void onControlMicState(ECError reason, String speaker) { if(reason.errorCode == SdkErrorCode.REQUEST_SUCCESS ) { //搶麥成功 } else { //搶麥失敗 } });
String meetingNo = “所在的實時對講的會議號 ”; ECDevice.getECMeetingManager().releaseMicInInterPhoneMeeting ( meetingNo, new OnReleaseMicInInterPhoneListener () { @Override // reason 放麥的回調狀態 public void onReleaseMicState(ECError reason) { if(reason.errorCode == SdkErrorCode.REQUEST_SUCCESS ) { //放麥成功 } else { //放麥失敗 } } });
語音會議只是多人參加的基于互聯網、或者基于電話或者網絡和電話混合的會議。
1.1、接口邏輯:
調用是采取“請求回調”和“通知回調”的方式和服務端交互。在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。。會議中的成員收到服務端發送過來的消息通過“通知回調”方法onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg msg)來接收并進行處理。
1.2、業務流程
(1)用戶A創建語音會議或者電話會議
(2)會議創建成功之后,邀請其他成員加入會議
(3)其他成員收到邀請,同意或拒絕加入會議
ECMeetingManager.ECCreateMeetingParams.Builder builder = new ECMeetingManager.ECCreateMeetingParams.Builder(); // 設置語音會議房間名稱 builder.setMeetingName(mNameEditView.getText().toString().trim()) // 設置語音會議房間加入密碼 .setMeetingPwd(mPasswordEditView.getText().toString().trim()) // 設置語音會議創建者退出是否自動解散會議 .setIsAutoClose(mCloseCheckedView.isChecked()) // 設置語音會議創建成功是否自動加入 .setIsAutoJoin(mJoinCheckedView.isChecked()) // 設置語音會議背景音模式 .setVoiceMod( ECMeetingManager.ECCreateMeetingParams.ToneMode.values()[mToneTypeView.getChoiceItemPosition()]) // 設置語音會議所有成員退出后是否自動刪除會議 .setIsAutoDelete(mDelCheckedView.isChecked()); ECDevice.getECMeetingManager().createMultiMeetingByType(params, ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, new ECMeetingManager.OnCreateOrJoinMeetingListener() { @Override public void onCreateOrJoinMeeting(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { //創建語音會議成功 }else { //創建語音會議失敗 } } }); 功能:創建語音 參數:params 創建語音會議的參數對象 參考ECCreateMeetingParams對象。 返回值:無
String members[]=[”John的賬號”,”Smith的賬號”]; String mMeetingNo =”會議號”; Boolean isLandingCall:代表想邀請的時候想以手機形式或者app形式進行呼叫 //注釋 ECDevice.getECMeetingManager().inviteMembersJoinToVoiceMeeting (mMeetingNo, members , isLandingCall, new ECMeetingManager.OnInviteMembersJoinToVoiceMeetingListener() { @Override public void onInviteMembersJoinToChatroom(ECError reason, String meetingNo) { if(SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) { // 邀請加入會議成功 } ToastUtil.showMessage("邀請加入會議失敗["+ reason.errorCode + "]"); } });
String meetingNo=”會議號”; String password=”會議的密碼”; ECDevice.getECMeetingManager().joinMeetingByType (meetingNo, password, ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, new ECMeetingManager.OnCreateOrJoinMeetingListener() { @Override public void onCreateOrJoinMeeting(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { //加入會議成功 }else { //加入會議失敗 } } }); }
meetingNo;//想要刪除的會議號 ECDevice.getECMeetingManager().deleteMultiMeetingByType ( ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, meetingNo, new ECMeetingManager.OnDeleteMeetingListener() { @Override public void onMeetingDismiss(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { //解散會議成功 }else { //解散會議失敗 } } });
ECDevice.getECMeetingManager().exitMeeting(ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE); 功能:退出會議 參數:無。
String member= “被踢出成員號”; meetingNo=”會議號”; boolean isMobile //當前被移除的是否是電話號碼 ECDevice.getECMeetingManager().removeMemberFromMultiMeetingByType ( ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, meetingNo ,member , isMobile ,new ECMeetingManager.OnRemoveMemberFromMeetingListener() { @Override public void onRemoveMemberFromMeeting(ECError reason, String member) { if(SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) { // 移除會議成員成功 } } } return ; } ToastUtil.showMessage("移除會議成員失敗[" + reason.errorCode+ "]"); } }); 功能:從語音會議移除成員 參數: meetingNo 會議號 返回值:無.
public void void onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg msg){ ECVoiceMeetingMsgType msgType= msg. getMsgType(); if(msgType==JOIN) { Log(@"有人加入"); } else if(msgType==EXIT) { Log(@"有人退出"); } else if(msgType==DELETE) { Log(@"房間被刪除退出"); } else if(msgType== REMOVE_MEMBER) { Log(@"有人被移除"); } }
ECDevice.getECMeetingManager().listAllMultiMeetingsByType ("", ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, new ECMeetingManager.OnListAllMeetingsListener<ECMeeting>() { @Override public void onListAllMeetings(ECError reason, List<ECMeeting> list) { if(reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { //查詢語音會議列表成功 }else { //查詢語音會議列表失敗 } } }); }
String meetingNo=”語音會議房間號”; ECDevice.getECMeetingManager().queryMeetingMembersByType (meetingNo, ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, new ECMeetingManager.OnQueryMeetingMembersListener<ECVoiceMeetingMember>() { @Override public void onQueryMeetingMembers(ECError reason, List<ECVoiceMeetingMember> members) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { //查詢成員成功 }else { //查詢成員失敗 } } });
ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); if(meetingManager==null){ return; } meetingManager.setMemberSpeakListen(account, type, meetingNum, meetingType, new ECMeetingManager.OnSetMemberSpeakListenListener() { @Override public void onSetMemberSpeakListenResult(ECError error, String meetingNum) { if(error.errorCode==SdkErrorCode.REQUEST_SUCCESS){ Log.d(TAG,"設置成功"); }else { Log.d(TAG,"設置失敗"); } } });
/** * ECMeetingManager類 * 獲取會議列表時、支持分頁功能 * @param keywords 查詢關鍵詞 * @param meetingType 查詢的會議類型 * @param match 分頁參數 * @param listener 執行結果回調 */ ECMeetingPageMatch match = new ECMeetingPageMatch(); match.setPage(1); match.setPageSize(10); ECDevice.getECMeetingManager().listPageMultiMeetingsByType("keywords", ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, match, new ECMeetingManager.OnListPageMeetingsListener(){ @Override public void onListAllMeetings(ECError ecError, ECMeetingPageMatchResult ecMeetingPageMatchResult, List list) { // 處理消息發送結果 } });
視頻會議只是多人參加的基于互聯網、或者基于電話或者網絡和電話混合的會議。
1.1、接口邏輯:
接口調用是采取“請求回調”和“通知回調”的方式和服務端交互。在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。會議中的成員收到服務端發送過來的消息通過“通知回調”方法onReceiveVideoMeetingMsg(ECVideoMeetingMsg msg)來接收并進行處理。
1.2、業務流程
(1)用戶A創建視頻會議。
(2)會議創建成功之后,邀請其他成員加入會議。
(3)其他成員收到邀請,同意或拒絕加入會議。
(4)在視頻會議中發布自己的視頻會議圖像。
(5)在視頻會議中請求/取消成員的視頻圖像。
(6)管理員對視頻已加入視頻會議成員進行管理(如:移除出會議)。
(7)管理員解散視頻會議/成員退出視頻會議。
// 初始化創建會議所需要的參數 ECMeetingManager.ECCreateMeetingParams.Builder builder = new ECMeetingManager.ECCreateMeetingParams.Builder(); // 設置語音會議房間名稱 builder.setMeetingName("meetingName) // 設置視頻會議創建者退出是否自動解散會議 .setIsAutoClose("IsAutoClose") // 設置視頻會議創建成功是否自動加入 .setIsAutoJoin("IsAutoJoin") // 設置視頻會議背景音模式 .setVoiceMod("VoiceMod") // 設置視頻會議所有成員退出后是否自動刪除會議 .setIsAutoDelete("IsAutoDelete"); ECMeetingManager.ECCreateMeetingParams params = builder.create(); // 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); meetingManager.createMultiMeetingByType(params, ECMeetingManager.ECMeetingType. MEETING_MULTI_VIDEO new ECMeetingManager.OnCreateOrJoinMeetingListener() { @Override public void onCreateOrJoinMeeting(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { //創建會議成功 return ; } Log.e("ECSDK_Demo" , "create video meeting error[" + error.errorCode + " ]"); } });
// 封裝需要請請加入會議的成員 String members[]={"John的賬號","Smith的賬號"}; // isLandingCall:表示是否以落地電話形式或者來電方式 // 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起邀請加入會議請求 meetingManager.inviteMembersJoinToMeeting("meetingNo", members, "isLandingCall", new ECMeetingManager.OnInviteMembersJoinToMeetingListener() { @Override public void onInviteMembersJoinToMeeting(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 邀請加入會議成功 return ; } Log.e("ECSDK_Demo" , "invite member error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起加入會議請求[如果會議需要驗證密碼則需要輸入會議密碼] meetingManager.joinMeetingByType("meetingNo", "password", ECMeetingManager.ECMeetingType.MEETING_MULTI_VIDEO, new ECMeetingManager.OnCreateOrJoinMeetingListener() { @Override public void onCreateOrJoinMeeting(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 加入會議成功 return; } Log.e("ECSDK_Demo", "join meeting error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起解散會議請求 meetingManager.deleteMultiMeetingByType (ECMeetingType.MEETING_MULTI_VIDEO, "meetingNo", new ECMeetingManager.OnDeleteMeetingListener() { @Override public void onMeetingDismiss(ECError reason, String meetingNo) { if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 解散會議成功 return; } Log.e("ECSDK_Demo", "del meeting error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起退出視頻會議請求 meetingManager.exitMeeting(ECMeetingManager.ECMeetingType.MEETING_MULTI_VIDEO);
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起視頻會議移除成員請求 meetingManager.removeMemberFromMultiMeetingByType( ECMeetingManager.ECMeetingType.MEETING_MULTI_VIDEO, "meetingNo", "john", "isMobile", new ECMeetingManager.OnRemoveMemberFromMeetingListener() { @Override public void onRemoveMemberFromMeeting(ECError reason, String member) { if (SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) { // 移除會議成員成功 return ; } Log.e("ECSDK_Demo", "del meeting member error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起查詢視頻會議請求 meetingManager.listAllMultiMeetingsByType("keyword", ECMeetingManager.ECMeetingType.MEETING_MULTI_VIDEO, new ECMeetingManager.OnListAllMeetingsListener<ECMeeting>() { @Override public void onListAllMeetings(ECError reason, List<ECMeeting> list) { if (SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) { // 查詢會議成功 return; } Log.e("ECSDK_Demo", "query meetings error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 發起查詢視頻會議成員請求 meetingManager.queryMeetingMembersByType("meetingNo", ECMeetingManager.ECMeetingType.MEETING_MULTI_VIDEO, new ECMeetingManager.OnQueryMeetingMembersListener<ECVideoMeetingMember>() { @Override public void onQueryMeetingMembers(ECError reason, List<ECVideoMeetingMember> members) { if (SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) { // 查詢視頻會議成員成功 return; } Log.e("ECSDK_Demo", "query meeting member error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 調用發布視頻會議圖像接口 meetingManager.publishSelfVideoFrameInVideoMeeting("Tony所在會議的會議號", new OnSelfVideoFrameChangedListener() { @Override public void onSelfVideoFrameChanged(boolean isPublish, ECError error) { if(error.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 發布視頻會議圖像成功 // isPublish 表示當前是否是發布視頻會議請求 // isPublish = true表示請求發布視頻會議圖像接口回調 return ; } Log.e("ECSDK_Demo" , "publish sel video error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 調用取消發布視頻會議圖像接口 meetingManager.cancelPublishSelfVideoFrameInVideoMeeting("Tony所在會議的會議號", new OnSelfVideoFrameChangedListener() { @Override public void onSelfVideoFrameChanged(boolean isPublish, ECError error) { if(error.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 取消視頻會議圖像成功 // isPublish 表示當前是否是發布視頻會議請求 // isPublish = false表示取消發布視頻會議圖像接口回調 return ; } Log.e("ECSDK_Demo" , "cancel publish sel video error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 調用請求視頻會議成員圖像接口 // meetingNo :所在的會議號 // meetingPwd :所在的會議密碼 // account :需要請求視頻的成員賬號,比如需要請求John的視頻圖像則 account 為John賬號 // displayView :視頻圖像顯示View // ip和port :成員視頻圖像所在的IP地址和端口可以參考ECVideoMeetingMember.java和ECVideoMeetingJoinMsg.java 參數 meetingManager.requestMemberVideoInVideoMeeting("meetingNo", "meetingPwd", "account", "displayView ", "ip", 'port', new OnMemberVideoFrameChangedListener() { @Override public void onMemberVideoFrameChangedFailed(ECError error, boolean isRequest, String meetingNo, String account) { if(error.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 請求成員視頻圖像成功 // isRequest 表示當前是否是對應請求視頻圖像請求 // isRequest = true表示對應請求視頻圖像回調 // meetingNo 當前視頻成員所在的視頻會議號 // account 所請求的視頻成員賬號 return ; } Log.e("ECSDK_Demo" , "request member video error[" + error.errorCode + " ]"); } });
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 調用取消視頻會議成員圖像接口 // meetingNo :所在的會議號 // meetingPwd :所在的會議密碼 // account :需要取消視頻的成員賬號,比如需要請求John的視頻圖像則 account 為John賬號 meetingManager.cancelRequestMemberVideoInVideoMeeting("meetingNo", "meetingPwd", "account", new OnMemberVideoFrameChangedListener() { // v5.1.8r版本 @Override public void onMemberVideoFrameChangedFailed(ECError error, boolean isRequest, String meetingNo, String account) { if(error.errorCode == SdkErrorCode.REQUEST_SUCCESS) { // 取消成員視頻圖像成功 // isRequest 表示當前是否是對應請求/取消視頻圖像請求 // isRequest = false表示對應取消視頻圖像回調 // meetingNo 當前視頻成員所在的視頻會議號 // account 所請求的視頻成員賬號 return ; } Log.e("ECSDK_Demo" , "cancel member video error[" + error.errorCode + " ]"); } }); 備注:從v5.1.9r版本開始,將回調方法修改為: /** * 在視頻會議中獲取或者取消實時獲取某一成員視頻圖像請求失敗回調接口 */ interface OnMemberVideoFrameChangedListener{ /** * 當調用接口{@link #requestMemberVideoInVideoMeeting(String, String, String, View, String, int, * OnMemberVideoFrameChangedListener)} 實時獲取,某一成員 * 視頻圖象以及{@link #cancelRequestMemberVideoInVideoMeeting(String, String, String, * OnMemberVideoFrameChangedListener)} 取消實時獲取某一成員 * 視頻圖像時,SDK會通過該回調方法通知應用接口調用結果。 * @param isRequest 是否是獲取或者是取消獲取視頻圖像請求 * @param reason 接口執行失敗錯誤碼 * @param meetingNo 視頻會議號 * @param account 執行該操作對應的成員賬號 */ void onMemberVideoFrameChanged(boolean isRequest, ECError reason, String meetingNo, String account); }
// 獲取一個會議管理接口對象 ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); // 調用切換/重置當前視頻成員圖像顯示窗口接口 // account :John的賬號 // displayView :新的視頻圖像顯示窗口 int ret = meetingManager.resetVideoMeetingWindow("account", "displayView"); if(ret == 0) { // 切換請求執行成功 return ; } // 失敗[ -1(不支持視頻) 170012(賬號號為NULL) -3(displayView為NULL) -4(找不到該賬號相關的資料)] Log.e("ECSDK_Demo" , "reset member video window error[" + ret + " ]");
@Override public void onReceiveVideoMeetingMsg(ECVideoMeetingMsg msg) { switch (msg.getMsgType()) { case JOIN: // 視頻會議消息類型-有人加入 ECVideoMeetingJoinMsg joinMsg = (ECVideoMeetingJoinMsg) msg; break; case EXIT: // 視頻會議消息類型-有人退出 ECVideoMeetingExitMsg exitMsg = (ECVideoMeetingExitMsg) msg; break; case DELETE: // 視頻會議消息類型-會議結束 ECVideoMeetingDeleteMsg delMsg = (ECVideoMeetingDeleteMsg) msg; break; case REMOVE_MEMBER: // 視頻會議消息類型-成員被移除 ECVideoMeetingRemoveMemberMsg rMsg = (ECVideoMeetingRemoveMemberMsg) msg; break; case SWITCH: // 視頻會議消息類型-主屏切換 ECVideoMeetingSwitchMsg sMsg = (ECVideoMeetingSwitchMsg) msg; break; case VIDEO_FRAME_ACTION: // 視頻會議消息類型-成員圖象發布或者取消發布 ECVideoMeetingVideoFrameActionMsg actionMsg = (ECVideoMeetingVideoFrameActionMsg) msg; break; case REJECT: // 視頻會議消息類型-成員拒絕邀請加入會議請求 ECVideoMeetingRejectMsg rejectMsg = (ECVideoMeetingRejectMsg) msg; break; default: Log.e("ECSDK_Demo" , "can't handle notice msg " + msg.getMsgType() ); break; }
// 標識對方視頻圖像到達,本地可以做一些操作,比如顯示對方的視頻控件等等 @Override public void onVideoRatioChanged(VideoRatio videoRatio) { // 視頻通話/視頻會議中,對方視頻圖像分辨率發生改變,回調該接口通知 // 當前視頻分辨率發生改變所屬的通話Id或者視頻會議號 String callId = videoRatio.getCallId(); // 視頻圖像分辨率改變后的寬 int width = videoRatio.getWidth(); // 視頻圖像分辨率改變后的高 int height = videoRatio.getHeight(); // 當前是否是視頻會議 boolean meeting = videoRatio.isMeeting(); // 如果當前是視頻會議則表示發生改變的視頻會議成員賬號 // 如果是視頻通話,則當前字段為null String account = videoRatio.getAccount(); }
ECMeetingManager meetingManager = ECDevice.getECMeetingManager(); if(meetingManager==null){ return; } meetingManager.setMemberSpeakListen(account, type, meetingNum, meetingType, new ECMeetingManager.OnSetMemberSpeakListenListener() { @Override public void onSetMemberSpeakListenResult(ECError error, String meetingNum) { if(error.errorCode==SdkErrorCode.REQUEST_SUCCESS){ Log.d(TAG,"設置成功"); }else { Log.d(TAG,"設置失敗"); } } });
/** * ECMeetingManager類 * 獲取會議列表時、支持分頁功能 * @param keywords 查詢關鍵詞 * @param meetingType 查詢的會議類型 * @param match 分頁參數 * @param listener 執行結果回調 */ ECMeetingPageMatch match = new ECMeetingPageMatch(); match.setPage(1); match.setPageSize(10); ECDevice.getECMeetingManager().listPageMultiMeetingsByType("keywords", ECMeetingManager.ECMeetingType.MEETING_MULTI_VIDEO, match, new ECMeetingManager.OnListPageMeetingsListener(){ @Override public void onListAllMeetings(ECError ecError, ECMeetingPageMatchResult ecMeetingPageMatchResult, List list) { // 處理消息發送結果 } });
文檔更新時間:2017年12月4日