av一区二区三区在线观看_久久久久国产一区二区三区_伊人春色在线播放_欧美亚洲国产一区_九九热在线免费视频_久久视频国产

1、實時對講開發說明

1、實時對講

實時對講功能是語音會議的一種特殊形式,默認最大支持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)實時對講只要有一個人,實時對講就不會結束,直到所有人對出實時對講,會議室自動關閉

2、實時對講操作代碼示例

? 創建實時對講—我們假設Tony要和John、Smith建立實時對講,則Tony創建實時會議的代碼如下:

//要邀請的成員數組
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(“創建實時對講失敗”);
} 
					}
				});

                    

? 接收到實時對講通知回調消息—John和Smith收到實時對講的邀請(在通知消息中同時上報了已經加入會議的成員),或者當有人加入實時對講時,sdk都通過onReceiveInterphoneMeetingMsg上報相關信息,其代碼如下:

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)

                    

? 退出實時對講—在實時對講中,Tony、John、Smith三人任何人都可以隨時退出實時對講,代碼如下:

ECDevice.getECMeetingManager().exitMeeting(ECMeetingManager.ECMeetingType.MEETING_INTERCOM);
        
                    

? 實時對講搶麥—搶麥只有在實時對講中才起作用,在語音會議中無效。我們假設Tony在語音會議中搶麥,其示例代碼如下:

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
{
     //搶麥失敗
} 

						}); 
        
                    

? 實時對講放麥—放麥只有在實時對講中才起作用,在語音會議中無效。我們假設Tony在語音會議中放麥,其示例代碼如下:

String meetingNo = “所在的實時對講的會議號 ”;
ECDevice.getECMeetingManager().releaseMicInInterPhoneMeeting (
						meetingNo, new OnReleaseMicInInterPhoneListener () {

							@Override
                        // reason 放麥的回調狀態
							public void onReleaseMicState(ECError reason) {
                         if(reason.errorCode == SdkErrorCode.REQUEST_SUCCESS )
						    {
                         //放麥成功
						    }


    else
    {
     //放麥失敗
    } 
							}
						});
        
                    

2、語音會議開發說明

1、語音會議

語音會議只是多人參加的基于互聯網、或者基于電話或者網絡和電話混合的會議。

1.1、接口邏輯:

調用是采取“請求回調”和“通知回調”的方式和服務端交互。在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。。會議中的成員收到服務端發送過來的消息通過“通知回調”方法onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg msg)來接收并進行處理。

1.2、業務流程

(1)用戶A創建語音會議或者電話會議

(2)會議創建成功之后,邀請其他成員加入會議

(3)其他成員收到邀請,同意或拒絕加入會議

2、語音會議操作代碼示例

? 創建語音會議—我們假設Tony要創建語音會議,其示例代碼如下:

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對象。

        
返回值:無

                    

? 邀請成員加入會議—我們假設Tony創建語音會議成功之后,邀請John和Smith加入語音會議,其代碼如下:

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 + "]");
                    }
                }); 

                    

? 主動加入會議—我們假設Eric要主動加入會議,其示例代碼如下:

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 {
                   //加入會議失敗
                }
                
            }
        });		}

                    

? 通過會議類型解散語音會議—我們假設Tony要解散自己創建的一個語音會議,其示例代碼如下:

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);
功能:退出會議 
參數:無。

                    

? 從語音會議踢出會議成員—只有會議創建者才能踢出成員,我們假設Tony要踢出John,其示例代碼如下:


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 會議號
返回值:無.

                    

? 語音會議通知消息—當對語音會議進行操作(如邀請,主動加入、退出、解散、踢出成員)時,會議室中的相關成員通過語音會議的“通知回調”接口onReceiveVoiceMeetingMsg接收相關信息,并進行處理,其代碼示例如下:

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) 	{
				 // 處理消息發送結果
            }
        });
                    

3、視頻會議開發說明

1、視頻會議

視頻會議只是多人參加的基于互聯網、或者基于電話或者網絡和電話混合的會議。

1.1、接口邏輯:

接口調用是采取“請求回調”和“通知回調”的方式和服務端交互。在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。會議中的成員收到服務端發送過來的消息通過“通知回調”方法onReceiveVideoMeetingMsg(ECVideoMeetingMsg msg)來接收并進行處理。

1.2、業務流程

(1)用戶A創建視頻會議。

(2)會議創建成功之后,邀請其他成員加入會議。

(3)其他成員收到邀請,同意或拒絕加入會議。

(4)在視頻會議中發布自己的視頻會議圖像。

(5)在視頻會議中請求/取消成員的視頻圖像。

(6)管理員對視頻已加入視頻會議成員進行管理(如:移除出會議)。

(7)管理員解散視頻會議/成員退出視頻會議。

2、視頻會議操作代碼示例

? 創建視頻會議—我們假設Tony要創建視頻會議,其示例代碼如下:

// 初始化創建會議所需要的參數
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 + " ]");

            }
        });

                    

? 邀請成員加入會議—我們假設Tony創建視頻會議成功之后,邀請John和Smith加入視頻會議,其代碼如下:

// 封裝需要請請加入會議的成員
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 + " ]");

            }
        });
        
                    

? 主動加入會議—我們假設Eric要主動加入視頻會議,其示例代碼如下。

// 獲取一個會議管理接口對象
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 + " ]");
            }
        });

                    

? 通過會議類型解散視頻會議—我們假設Tony要解散自己創建的一個視頻會議,其示例代碼如下:

// 獲取一個會議管理接口對象
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);

                    

? 視頻會議踢出會議成員—只有會議創建者才能踢出成員,我們假設Tony要踢出John,isMobile標識John是否以落地電話的形式加入或者視頻來電方式加入。其示例代碼如下:

// 獲取一個會議管理接口對象
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 + " ]");

            }
        });

                    

? 視頻會議發布自己的視頻圖像—我們假設Tony要發布自己的視頻圖像,其示例代碼如下:

//  獲取一個會議管理接口對象
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
            + " ]");
   }
});

                    

? 視頻會議取消發布自己的視頻圖像—我們假設Tony要取消發布自己的視頻圖像,其示例代碼如下:

//  獲取一個會議管理接口對象
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
                  + " ]");
         }
      });

                    

? 請求視頻會議成員圖像接口—我們假設Tony要請求成員John的視頻圖像,其代碼如下:

//  獲取一個會議管理接口對象
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 + " ]");

         }
      });

                    

? 取消視頻會議成員圖像接口—我們假設Tony需要取消視頻會議成員John的視頻圖像,其代碼如下:

// 獲取一個會議管理接口對象
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);
}

                    

? 切換/重置當前視頻成員圖像顯示窗口接口—我們假設Tony要將視頻成員[John]的視頻圖像切換到另一個View顯示,則代碼如下:

// 獲取一個會議管理接口對象
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日

主站蜘蛛池模板: 精品亚洲一区二区三区四区五区 | 在线一区 | 精品伊人久久 | 精品国产欧美一区二区 | 黄色一级毛片 | 日本又色又爽又黄的大片 | 久久久综合网 | 免费av毛片| 国产精品爱久久久久久久 | 一区二区三区四区在线播放 | 国产日产精品一区二区三区四区 | 色综合99 | 97日日碰人人模人人澡分享吧 | 国产视频在线观看一区二区三区 | 亚洲精品免费观看 | 亚洲成人网在线观看 | 欧美一二三四成人免费视频 | 请别相信他免费喜剧电影在线观看 | 中文字幕在线观看www | 精品免费av| 成人亚洲在线 | 91在线电影 | 91精品亚洲| 精品亚洲一区二区 | 国产精品一二三区 | 亚洲国内精品 | 在线一级片 | va在线| 九九久久国产 | 国产精品99久久久久 | 国产成人午夜精品影院游乐网 | 日韩一二三 | 精品一二三区 | 精品久久香蕉国产线看观看亚洲 | 男女视频免费 | 三级特黄特色视频 | 中文精品久久 | 久久午夜精品福利一区二区 | 中文字幕在线视频观看 | 亚洲国产情侣自拍 | 国产精品三级 |