实时对讲         

1、实时对讲开发说明     

实时对讲功能是语音会议的一种特殊形式,默认最大支持5方,专有云根据选定套餐进行扩展。发言人必须抢麦才能发言,只能有人放麦以后,其他人才能抢麦。                
注意:5.0以上的SDK集成的客户端,测试点对点音视频,音视频会议,群组等功能,建议先将在我们控制台创建的应用上线,才可测试(控制台提供的测试demo中的应用id和应用token,不能用来测试,需要使用自己在官网控制台创建的应用的id和应用token)。                
1.1、接口逻辑
                
接口调用是采取“请求回调”和“通知回调”的方式和服务端交互。用户发出创建对讲、抢麦等操作时,在对应的sdk的方法参数中有“请求回调”方法,请求的结果直接在参数的回调方法中处理。会议中的成员收到服务端发送过来的消息通过“通知回调”方法onReceiveInterPhoneMeetingMsg(ECInterPhoneMeetingMsg  msg)来接收并进行处理。               
1.2、业务流程                
  • 用户A创建实时对讲,创建的同时选择用户B、用户C加入                
  • 用户A先被加入到实时对讲会议室中              
  • 用户B和用户C收到请求并同意加入,同时用户A收到用户B和用户C加入的通知消息              
  • 通过退出接口可以退出实时对讲              
  • 实时对讲只要有一个人,实时对讲就不会结束,直到所有人对出实时对讲,会议室自动关闭                    

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
  •                    {
  •                  //放麦失败
  •                     }} });