参会者通过呼入同一个会议室进行音视频通话,对于有密码的会议室需同时输入会议室密码进入会议。可以通过事件回调获取当前呼叫状态,根据呼叫状态进行相应的处理。
呼叫成功后,参会者进入会议,云平台将自动发送音视频流。音视频通话过程中参会人员信息状态变更以事件回调方式进行通知,收到回调消息后可根据业务场景进行后续处理。
针对用户希望入会前设置摄像头和麦克风状态的需求,SDK在呼叫接口中增加设置麦克风和摄像头状态的参数,开发者调用呼叫接口时传入摄像头和麦克风状态即可实现入会前关闭摄像头和静音功能。
您可以通过makeCall方法进行呼叫,方法中MeetingNumber是即将呼叫的会议室号码,MeetingPassword是会议室密码,如果没有设置会议密码传入null值即可。 并且可以在MakeCallResponse回调方法中获取到呼叫结果。如果收到了onCallFail回调,可以结合error错误码查看具体的失败原因。当收到onCallSuccess回调时就可以进入到呼叫中状态,接下来我们通过setNemoSDKListener方法来设置会议中状态的回调 (参考demo中的XyCallPresenter) 。入会后首先需要监听以下几点回调:
在收到Roster参会者信息回调时,就证明我们已经入会成功了,但是我们的画面上还是空的,所以接下来就需要进行后续的拉流以及布局操作了。
JoinMeetingActivity.java
//准备呼叫
NemoSDK.getInstance().makeCall(MeetingNumber, MeetingPassword, new MakeCallResponse() {
@Override
public void onCallSuccess() {
//进入呼叫中界面
Intent callIntent = new Intent(JoinMeetingActivity.this, XyCallActivity.class);
startActivity(callIntent);
}
@Override
public void onCallFail(int error, String msg) {
//呼叫失败
}
});
XyCallPresenter.java
NemoSDK.getInstance().setNemoSDKListener(new SimpleNemoSDkListener() {
@Override
public void onCallStateChange(CallState state, String reason) {
switch (state) {
case CONNECTING:
//显示拨号界面
break;
case DISCONNECTED:
//提示呼叫失败信息,退出呼叫界面
break;
case CONNECTED:
//呼叫建立连接,切换会议界面
break;
default:
break;
}
}
@Override
public void onRosterChange(RosterWrapper roster) {
//进行请流操作
}
@Override
public void onKickOut(int code, int reason) {
super.onKickOut(code, reason);
//本终端被踢下线,释放资源并退出呼叫界面
}
});
参考流程图:
呼叫中设置媒体状态: 呼叫时设置媒体状态: