互联网多人语音

语音会议             

1、互联网多人语音说明

 语音会议是多人参加的基于互联网、或者基于电话或者网络和电话混合的会议。                 
1.1、接口逻辑               
调用是采取“请求回调”和“通知回调”的方式和服务端交互。在对应的sdk的方法参数中有“请求回调”方法,请求的结果直接在参数的回调方法中处理。。会议中的成员收到服务端发送过来的消息通过“通知回调”方法onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg  msg)来接收并进行处理。                         
1.2、业务流程                
(1)用户A创建语音会议或者电话会议              
(2)会议创建成功之后,邀请其他成员加入会议                
(3)其他成员收到邀请,同意或拒绝加入会议
                    

2、互联网多人视频操作代码示例                         

创建语音会议

我们假设Tony要创建语音会议,其示例代码如下:                                        
  1. ECMeetingManager.ECCreateMeetingParams.Builder builder = new ECMeetingManager.ECCreateMeetingParams.Builder();
  2.         // 设置语音会议房间名称
  3.         builder.setMeetingName(mNameEditView.getText().toString().trim())
  4.         // 设置语音会议房间加入密码
  5.         .setMeetingPwd(mPasswordEditView.getText().toString().trim())
  6.         // 设置语音会议创建者退出是否自动解散会议
  7.         .setIsAutoClose(mCloseCheckedView.isChecked())
  8.         // 设置语音会议创建成功是否自动加入
  9.         .setIsAutoJoin(mJoinCheckedView.isChecked())
  10.         // 设置语音会议背景音模式
  11.         .setVoiceMod(
  12.         ECMeetingManager.ECCreateMeetingParams.ToneMode.values()[mToneTypeView.getChoiceItemPosition()])
  13.         // 设置语音会议所有成员退出后是否自动删除会议
  14.         .setIsAutoDelete(mDelCheckedView.isChecked());                        
  15.         ECDevice.getECMeetingManager().createMultiMeetingByType(params, 
  16.         ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE,
  17.                 new ECMeetingManager.OnCreateOrJoinMeetingListener() {
  18.                     @Override
  19.                     public void onCreateOrJoinMeeting(ECError reason, String meetingNo) {
  20.                         if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
  21.                             //创建语音会议成功
  22.                         }else {
  23.                             //创建语音会议失败
  24.                         }                        
  25.                     }
  26.                 }); 
  27.                 
  28. 功能:创建语音会议
  29. 参数:params 创建语音会议的参数对象 参考ECCreateMeetingParams对象。
  30. 返回值:无

邀请成员加入会议

我们假设Tony创建语音会议成功之后,邀请John和Smith加入语音会议,其代码如下:             
                        
  1. String members[]=[”John的账号”,”Smith的账号”];
  2. String mMeetingNo =”会议号”;
  3. Boolean isLandingCall:代表邀请的时候以手机形式或者app形式进行呼叫
  4. ECDevice.getECMeetingManager().inviteMembersJoinToVoiceMeeting (mMeetingNo, members , isLandingCall,
  5.                 new ECMeetingManager.OnInviteMembersJoinToVoiceMeetingListener() {
  6.                     @Override
  7.                     public void onInviteMembersJoinToChatroom(ECError reason, String meetingNo) {
  8.                        
  9.                         if(SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) {
  10.                             // 邀请加入会议成功                          
  11.                         }
  12.                         ToastUtil.showMessage("邀请加入会议失败["+ reason.errorCode + "]");
  13.                     }
  14.                 }); 

主动加入会议

我们假设Eric要主动加入会议,其示例代码如下:
                                        
  1. String meetingNo=”会议号”;
  2. String password=”会议的密码”;
  3. ECDevice.getECMeetingManager().joinMeetingByType (meetingNo, password, ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, new ECMeetingManager.OnCreateOrJoinMeetingListener() {
  4.             @Override
  5.             public void onCreateOrJoinMeeting(ECError reason, String meetingNo) {
  6.                 if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
  7.                     //加入会议成功
  8.                 }else {
  9.                    //加入会议失败
  10.                 }                
  11.             }
  12.         });  }                                  

通过会议类型解散语音会议

我们假设Tony要解散自己创建的一个语音会议,其示例代码如下:                                        
  1. meetingNo;//想要删除的会议号
  2. ECDevice.getECMeetingManager().deleteMultiMeetingByType (ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, meetingNo,
  3.                 new ECMeetingManager.OnDeleteMeetingListener() {
  4.                     @Override
  5.                     public void onMeetingDismiss(ECError reason, String meetingNo) {
  6.                         if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
  7.                            //解散会议成功
  8.                         }else {
  9.                            //解散会议失败
  10.                         }                       
  11.                     }
  12.                 });                                 

退出语音会议

退出会议,其示例代码如下:                                      
  1. ECDevice.getECMeetingManager().exitMeeting(ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE);
  2.  
  3. 功能:退出会议 参数:无。                                                                  

从语音会议踢出会议成员

只有会议创建者才能踢出成员,我们假设Tony要踢出John,其示例代码如下:                                        
  1. String member= “被踢出成员号”;
  2. meetingNo=”会议号”;
  3. boolean isMobile //当前被移除的是否是电话号码
  4. ECDevice.getECMeetingManager().removeMemberFromMultiMeetingByType (ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE,
  5.            meetingNo ,member , isMobile ,new ECMeetingManager.OnRemoveMemberFromMeetingListener() {
  6.                         @Override
  7.                         public void onRemoveMemberFromMeeting(ECError reason, String member) {
  8.                           
  9.                             if(SdkErrorCode.REQUEST_SUCCESS == reason.errorCode) {    
  10.                                 // 移除会议成员成功                                                
  11.                                         }
  12.                                     }
  13.                                 }
  14.                                 return ;
  15.                             }
  16.                             ToastUtil.showMessage("移除会议成员失败[" + reason.errorCode+ "]");
  17.                         }
  18.                     });
  19.                     
  20. 功能:从语音会议移除成员
  21. 参数:meetingNo 会议号
  22. 返回值:无      
                                

语音会议通知消息

当对语音会议进行操作(如邀请、主动加入、退出、解散、踢出成员)时,会议室中的相关成员通过语音会议的“通知回调”接口onReceiveVoiceMeetingMsg接收相关信息,并进行处理,其代码示例如下:                                       
  1. public void void onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg msg){
  2.  ECVoiceMeetingMsgType msgType= msg. getMsgType();
  3.     if(msgType==JOIN)
  4.     {
  5.         Log(@"有人加入");
  6.     }
  7.     else if(msgType==EXIT)
  8.     {
  9.         Log(@"有人退出"); 
  10.     }
  11.     else if(msgType==DELETE)
  12.     {
  13.         Log(@"房间被删除退出");
  14.     }
  15.     else if(msgType== REMOVE_MEMBER){
  16.    Log(@"有人被移除");
  17.     }
  18. }                    

获取语音会议列表

通过“获取语音会议列表”接口,可以获得应用下的所有语音会议列表,其示例代码如下:                                     
  1. ECDevice.getECMeetingManager().listAllMultiMeetingsByType ("",ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, 
  2.                                         new ECMeetingManager.OnListAllMeetingsListener<ECMeeting>() {
  3.             @Override
  4.             public void onListAllMeetings(ECError reason, List<ECMeeting> list) {
  5.                
  6.                 if(reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
  7.                     
  8.                     //查询语音会议列表成功
  9.                 }else {
  10.                     //查询语音会议列表失败
  11.                 }
  12.                 
  13.             }
  14.         });  }                                

查询当前语音会议成员

用户加入会议后,需要获取当前语音会议中的所有成员,其示例代码如下:                                     
  1. String meetingNo=”语音会议房间号”;
  2. ECDevice.getECMeetingManager().queryMeetingMembersByType (meetingNo, ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE,new ECMeetingManager.OnQueryMeetingMembersListener<ECVoiceMeetingMember>() {
  3.                     @Override
  4.                     public void onQueryMeetingMembers(ECError reason, List<ECVoiceMeetingMember> members) {
  5.                         if (reason.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
  6.                            //查询成员成功
  7.                         }else {
  8.                   //查询成员失败
  9.                 }}
  10.                 });                               

设置语音会议成员禁言、禁听状态                                     

  1. ECMeetingManager meetingManager = ECDevice.getECMeetingManager();
  2.             if(meetingManager==null){
  3.                 return;
  4.             }
  5.            meetingManager.setMemberSpeakListen(account, type, meetingNum, meetingType, new 
  6.            ECMeetingManager.OnSetMemberSpeakListenListener() {
  7.             @Override
  8.             public void onSetMemberSpeakListenResult(ECError error, String meetingNum) {
  9.                 
  10.                 if(error.errorCode==SdkErrorCode.REQUEST_SUCCESS){
  11.                     
  12.                     Log.d(TAG,"设置成功");
  13.                 }else {
  14.                     Log.d(TAG,"设置失败");
  15.                 }
  16.             }
  17.         });                        

分页获取语音会议列表                                          

  1. /**
  2.      * ECMeetingManager类
  3.      * 获取会议列表时、支持分页功能
  4.      * @param keywords    查询关键词
  5.      * @param meetingType  查询的会议类型
  6.      * @param match        分页参数
  7.      * @param listener     执行结果回调
  8. */
  9. ECMeetingPageMatch match = new ECMeetingPageMatch();
  10. match.setPage(1);
  11. match.setPageSize(10);
  12. ECDevice.getECMeetingManager().listPageMultiMeetingsByType("keywords", 
  13.      ECMeetingManager.ECMeetingType.MEETING_MULTI_VOICE, match, 
  14.           new ECMeetingManager.OnListPageMeetingsListener(){
  15.  
  16.     @Override
  17.     public void onListAllMeetings(ECError ecError, ECMeetingPageMatchResult ecMeetingPageMatchResult,
  18.                 List list)         {
  19.                                  // 处理消息发送结果
  20.             }
  21.         });