实时对讲功能是语音会议的一种特殊形式,默认最大支持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日