管理一对一视频通话 编辑文档

本篇文档介绍如何建立一对一视频通话。在主叫的一方,这个过程包括发起通话请求,收到回应,关闭通话;在被叫的一方,这个过程包括收到一对一视频通话请求,接受/拒绝通话请求,关闭通话。

发起通话请求

使用 call(String remoteUid, LocalStream localStream, WilddogVideoCallOption option) 来发起通话请求,该方法需要传递三个参数:

  • remoteUid: 通话接收方的 uiduid 是 WilddogAuth 为认证用户分配的唯一身份标识;
  • localStream: 通话发起方的本地媒体流;
  • option: 包括视频通话用户自定义信息、是否强制relay。

调用该方法返回 Conversation 实例,用于控制本次一对一视频通话。

WilddogVideoCallOption option = new WilddogVideoCallOption.Builder()
.iceTransportsPolicy(WilddogVideoCallOption.IceTransportsPolicy.ALL)
.data("conversationDemo")
.build();
mConversation = video.call(remoteUid,localStream,option);

注:每个客户端同一时间只能存在一个通话。发起电话请求时,默人会挂断前一次通话。

收到通话请求

其他用户发来通话请求时,用户可以从 WilddogVideoCall 的listener得到通知,并获得 Conversation 实例:

public void onCalled(Conversation conversation, String s) {
mConversation = conversation;
Log.d("log",s);
}
}

设置通话代理

设置 Conversation 的代理Conversation.Listener用于监听通话状态。

conversation.setConversationListener(new Conversation.Listener() {
@Override
public void onCallResponse(CallStatus callStatus) {
}
@Override
public void onStreamReceived(RemoteStream remoteStream) {
}
@Override
public void onClosed() {
}
@Override
public void onError(WilddogVideoError wilddogVideoError) {
}
});

Conversation.Listener 包含四个方法:

方法名 说明
onCallResponse(CallStatus callStatus) 发起通话请求后,通话状态发生变化会触发该方法。通话状态包含接收、拒绝、繁忙和请求超时。
onStreamReceived(RemoteStream remoteStream) 收到远端媒体流时,触发该方法。
onError(WilddogVideoError wilddogVideoError) 通话发生错误时,触发该方法。
onClosed() 通话被关闭时,触发该方法。

接受/拒绝通话请求

使用 accept(final LocalStream localStream) 来接受通话请求,该方法需要传入本地媒体流,本地流的创建请参考 创建媒体流

mConversation.accept(localStream);

使用 reject() 来拒绝通话请求:

mConversation.reject();

接受/拒绝对方的通话请求后,对方会通过 onCallResponse(CallStatus callStatus) 收到 ACCEPT / REJECT 状态的通知:

public void onCallResponse(CallStatus callStatus) {
switch (callStatus){
case ACCEPTED:
Log.d("log","通话被接受");
break;
case REJECTED:
Log.d("log","通话被拒绝");
break;
case BUSY:
Log.d("log","正忙");
break;
case TIMEOUT:
Log.d("log","超时");
break;
default:
Log.d("log","状态未识别");
break;
}
}

关闭一对一视频通话

使用 close() 来取消呼叫或者结束通话。

mConversation.close();
mConversation=null;

通话被关闭后,对方会通过 onClosed() 收到通话结束的通知:

public void onClosed() {
mConversation.close();
mConversation=null;
}
野狗新手?
立即注册,为你提供安全可靠的实时通信云服务。
没找到需要的文档?
你可以提交工单反馈 或 阅读常见问题