v6.1.0
6.1.0
获取互动直播信息
发起参数描述:
参数字段 | 描述 |
---|---|
id | 活动ID(9位) , 在网页上创建 |
accessToken | 请求API获取的Token(新控制台创建的直播可以不写) |
nickName | 自己设置的直播昵称(可以为空) |
自己设置的邮箱(可以为空) | |
LoadWebinarInfoCallback | 回调信息 |
代码展示
VhallSDK.initBroadcast(webinarId, param.broToken, param.broName, new WebinarInfoDataSource.LoadWebinarInfoCallback() {
@Override
public void onWebinarInfoLoaded(String jsonStr, WebinarInfo webinarInfo) {
//初始化成功
}
@Override
public void onError(int errorCode, String errorMsg) {
//初始化失败
}
});
初始化互动SDK
InterActive构造函数参数描述
参数字段 | 描述 |
---|---|
context | 上下文 |
mRoomCallback | 房间信息回调 |
mChatCallback | 聊天消息回调 |
mMessageCallback | 自定义消息回调 |
InterActive init函数参数描述
参数字段 | 描述 |
---|---|
context | 上下文 |
mWebinarInfo | 活动信息 |
RequestCallback | 回调接口 |
mInteractive = new InterActive(context, mRoomCallback,mChatCallback,mMessageCallback);
mInteractive.init(mWebinarInfo, new RequestCallback() {
@Override
public void onSuccess() {
//初始化互动SDK成功
}
@Override
public void onError(int errorCode, String errorMsg) {
//初始化互动SDK失败
}
});
进入房间
mInteractive.enterRoom();
发起直播/结束直播
方法签名
public void broadcastRoom(int type, int layout, Callback callback)
InterActive broadcastRoom函数参数描述
参数字段 | 描述 |
---|---|
type | 1发起 2关闭 |
layout | 旁路布局 |
Callback | 回调接口 |
旁路布局参数描述
值 | 描述 |
---|---|
17 | 主次平铺,一行5个位于底部 |
0 | 强制仅一人铺满 |
代码展示
//发起直播
mInteractive.broadCastRoom(1, VHInteractive.CANVAS_LAYOUT_PATTERN_TILED_6_1T5D, callback);
//结束直播
mInteractive.broadCastRoom(2,0,null);
发送消息
方法签名
public void sendMsg(String msg, String type, CallBack callBack)
InterActive sendMsg函数参数描述
参数字段 | 描述 |
---|---|
msg | 字符串消息 |
type | 消息类型 |
Callback | 回调接口 |
代码展示
mInteractive.sendMsg(msg, type, callBack);
主播下麦观众/嘉宾(观众嘉宾收到下麦消息的时候)
方法签名
public void unpublished()
代码展示
RtcConfig.getInterActive().unpublished();
同意申请上麦
方法签名
public void agreeApply(String receive_account_id, RequestCallback callBack)
InterActive agreeApply函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户id |
RequestCallback | 回调接口 |
代码展示
mInteractiveApi.agreeApply(userId, new SimpleRequestCallback());
拒绝申请上麦
方法签名
public void rejectApply(String receive_account_id, RequestCallback callBack)
InterActive rejectApply函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户id |
RequestCallback | 回调接口 |
代码展示
mInteractiveApi.rejectApply(userId, new SimpleRequestCallback());
同意邀请上麦
方法签名
public void agreeInvite(RequestCallback callBack)
InterActive agreeInvite函数参数描述
参数字段 | 描述 |
---|---|
RequestCallback | 回调接口 |
代码展示
mInteractiveApi.agreeInvite(new RequestCallback());
拒绝邀请上麦
方法签名
public void rejectInvite(RequestCallback callBack)
InterActive rejectInvite函数参数描述
参数字段 | 描述 |
---|---|
RequestCallback | 回调接口 |
代码展示
mInteractiveApi.agreeInvite(new RequestCallback());
设置麦克风/摄像头状态
方法签名
public void switchDevice(String receive_account_id, String device, String status, RequestCallback callBack)
InterActive switchDevice函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户ID |
device | 1麦克风 2摄像头 |
status | 0关闭 1 打开 |
RequestCallback | 回调接口 |
代码展示
mInteractive.switchDevice(roomInfo.join_info.third_party_user_id, "1", "0", null);
获取文档列表
方法签名
public void getDocList(int page, int pageSize, String keyword, RequestDataCallbackV2 callBack)
InterActive getDocList函数参数描述
参数字段 | 描述 |
---|---|
page | 页码(从1开始) |
pageSize | 一页的长度 |
keyword | 用户昵称可以为空 |
callBack | 回调接口 |
代码展示
mInterActive.getDocList(page, 10, "", new RequestDataCallbackV2<DocListInfoData>())
设置主讲人
方法签名
public void setMainSpeaker(String receive_account_id, RequestCallback callBack)
InterActive setMainSpeaker函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户ID |
callBack | 回调接口 |
代码展示
mInterActive.setMainSpeaker(info.getAccount_id(), new RequestCallback())
用户主动下麦
方法签名
public void downMic(String receive_account_id, RequestCallback callBack)
InterActive downMic函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户ID |
callBack | 回调接口 |
代码展示
mInterActive.downMic(info.getAccount_id(), new RequestCallback())
邀请用户上麦
方法签名
public void invite(String receive_account_id, RequestCallback callBack)
InterActive invite函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户ID |
callBack | 回调接口 |
代码展示
mInterActive.invite(info.getAccount_id(), new RequestCallback())
获取受限用户列表
方法签名
public void getLimitUserList(int page, int pageSize, RequestDataCallbackV2 callBack)
InterActive invite函数参数描述
参数字段 | 描述 |
---|---|
page | 页码 |
pageSize | 一页的长度 |
callBack | 回调接口 |
代码展示
mInterActive.getLimitUserList(page, 10, new RequestDataCallbackV2<UserStateListData>())
获取在线用户列表
方法签名
public void getOnlineUserList(int page, int limit, RequestDataCallbackV2 callBack)
InterActive invite函数参数描述
参数字段 | 描述 |
---|---|
page | 页码 |
pageSize | 一页的长度 |
callBack | 回调接口 |
代码展示
mInterActive.getOnlineUserList(page, 10, new RequestDataCallbackV2<UserStateListData>())
踢出用户
方法签名
public void setKickOut(String receive_account_id, String status, RequestCallback callBack)
InterActive setKickOut函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户ID |
status | 1踢出 0取消踢出 |
callBack | 回调接口 |
代码展示
mInterActive.setKickOut(info.getAccount_id(), vssType, new RequestCallback()
使用用户禁言
方法签名
public void setBanned(String receive_account_id, String status, RequestCallback callBack)
InterActive setBanned函数参数描述
参数字段 | 描述 |
---|---|
receive_account_id | 用户ID |
status | 1禁言 0 取消禁言 |
callBack | 回调接口 |
代码展示
mInterActive.setBanned(info.getAccount_id(), vssType, new RequestCallback() )
使用户下麦
方法签名
public void setUserNoSpeak(RequestCallback callBack)
InterActive setUserNoSpeak函数参数描述
参数字段 | 描述 |
---|---|
callBack | 回调接口 |
代码展示
mInteractive.setUserNoSpeak( null)
用户取消举手上麦
方法签名
public void cancelApply(RequestCallback callBack)
InterActive cancelApply函数参数描述
参数字段 | 描述 |
---|---|
page | 页码 |
pageSize | 一页的长度 |
callBack | 回调接口 |
代码展示
mInterActive.cancelApply(new RequestCallback())
用户举手申请上麦
方法签名
public void apply(RequestCallback callBack)
InterActive apply函数参数描述
参数字段 | 描述 |
---|---|
callBack | 回调接口 |
代码展示
mInterActive.apply(new RequestCallback())
设置直播间举手状态
方法签名
public void setHandsUp(String status, RequestCallback callBack)
InterActive setHandsUp函数参数描述
参数字段 | 描述 |
---|---|
status | 1允许举手 2禁止举手 |
callBack | 回调接口 |
代码展示
mInteractive.setHandsUp( "1",null);
开启本地摄像头美颜功能
方法签名
public void setEnableBeautify(boolean enable)
InterActive setEnableBeautify函数参数描述
参数字段 | 描述 |
---|---|
enable | true(开启)/false(关闭) |
代码展示
RtcConfig.getInterActive().setEnableBeautify(true);
设置本地摄像头美颜等级
方法签名
public void setBeautifyLevel(int level) {
InterActive setBeautifyLevel函数参数描述
参数字段 | 描述 |
---|---|
level | 数字越大美颜越重【1-4】 |
代码展示
RtcConfig.getInterActive().setBeautifyLevel(3);
房间消息回调 RoomCallbackV2(该回调接口 回调函数均在主线程中)
接口展示
public interface RoomCallbackV2{
//链接房间成功
void onDidConnect(Room var1, JSONObject var2);
//链接房间失败
void onDidError(Room var1, Room.VHRoomErrorStatus var2, String var3);
//发布成功
void onDidPublishStream(Room var1, Stream var2);
//发布失败
void onDidUnPublishStream(Room var1, Stream var2);
//订阅成功
void onDidSubscribeStream(Room var1, Stream var2);
//取消订阅
void onDidUnSubscribeStream(Room var1, Stream var2);
//流属性发生变更
void onDidChangeStatus(Room var1, Room.VHRoomStatus var2);
//有流加入房间
void onDidAddStream(Room var1, Stream var2);
//有流移除房间
void onDidRemoveStream(Room var1, Stream var2);
//远端流更新音视频属性的回调
void onDidUpdateOfStream(Stream var1, JSONObject var2);
//尝试重链
void onReconnect(int var1, int var2);
//混流成功
void onStreamMixed(JSONObject var1);
}
接口回调重要参数说明
参数字段 | 描述 |
---|---|
Room | 房间的概念 |
Stream | 媒体流 |
代码使用展示
class RoomCallback extends SimpleRoomCallbackV2 {
@Override
public void onDidConnect(Room room, JSONObject jsonObject) {
if(mInteractive != null){
mInteractive.publish();
}
}
@Override
public void onDidError(Room room, Room.VHRoomErrorStatus vhRoomErrorStatus, String s) {
for (Stream stream : room.getRemoteStreams()) {
removeStream(stream);
}
}
@Override
public void onDidPublishStream(Room room, Stream stream) {
//流发布成功更新UI
}
@Override
public void onDidUnPublishStream(Room room, Stream stream) {
isPublic = false;
if (updateMainStreamLister != null) {
updateMainStreamLister.setIsPublic(false);
}
streams.remove(new StreamData(stream));
if (TextUtils.equals(stream.userId, mainId)) {
mainStream = null;
}
setViews();
}
@Override
public void onDidSubscribeStream(Room room, Stream stream) {
addStream(stream);
}
@Override
public void onDidUnSubscribeStream(Room room, Stream stream) {
removeStream(stream);
}
@Override
public void onDidChangeStatus(Room room, Room.VHRoomStatus vhRoomStatus) {
switch (vhRoomStatus) {
case VHRoomStatusDisconnected:// 异常退出
//TODO 销毁页面
break;
case VHRoomStatusError:
Log.e("rtc", "VHRoomStatusError");
if (getActivity() != null) {
baseShowToast("当前房间异常");
getActivity().finish();
}
break;
case VHRoomStatusReady:
break;
case VHRoomStatusConnected: // 重连进房间
break;
default:
break;
}
}
@Override
public void onDidRemoveStream(Room room, Stream stream) {
}
@Override
public void onDidUpdateOfStream(Stream stream, JSONObject jsonObject) {
}
@Override
public void onStreamMixed(JSONObject jsonObject) {
//混流成功
}
}
互动消息
使用展示
//自定义消息
class MessageCallback implements MessageServer.Callback,MessageServer.MessageSupportMsgFilterOther{
@Override
public void onEvent(MessageServer.MsgInfo msg) {
switch (msg.event) {
case MessageServer.EVENT_RESTART: {
//直播开始
break;
case MessageServer.EVENT_OVER: {
//直播已结束
}
break;
case MessageServer.EVENT_INTERACTIVE_ALLOW_HAND: {
//broadcastView.showToast(msg.status == 1 ? "允许用户上麦" : "不允许用户上麦");
}
break;
case MessageServer.EVENT_CONNECT_INVITE_REFUSED:{
//拒绝了您的邀请
}
break;
case MessageServer.EVENT_INTERACTIVE_HAND: {
//互动举手消息
}
break;
case MessageServer.EVENT_KICKOUT: {
//您已被踢出
}
break;
case EVENT_VRTC_CONNECT_REFUSED:{
//主持人拒绝了您的上麦申请
}
break;
case MessageServer.EVENT_DISABLE_CHAT: {
//您已被禁言
}
break;
case MessageServer.EVENT_PERMIT_CHAT: {
//您被取消禁言
}
break;
case MessageServer.EVENT_INVITED_MIC: {
//被邀请上麦
}
break;
case MessageServer.EVENT_SWITCH_DEVICE:
//切换设备
break;
case MessageServer.EVENT_INTERACTIVE_ALLOW_MIC:
//接收上麦消息
break;
case MessageServer.EVENT_VRTC_CONNECT_SUCCESS:
//用户上麦成功
break;
case MessageServer.EVENT_INTERACTIVE_DOWN_MIC:
//接收下麦消息
break;
case EVENT_VRTC_SPEAKER_SWITCH:
//互动设置为主讲人
break;
}
}
@Override
public void onMsgServerConnected() {
//链接成功
}
@Override
public void onConnectFailed() {
//链接失败
}
@Override
public void onMsgServerClosed() {
//链接关闭
}
@Override
public boolean isFilterOther() {
//是否过滤他人消息
return false;
}
}
嘉宾加入房间(since v6.1.0)
方法签名
public static void joinWebinar(String webinarId, String password, String nickname, String type, WebinarInfoDataSource.LoadWebinarInfoCallback callBack)
重要参数说明
参数字段 | 描述 |
---|---|
webinarId | 活动ID(9位) , 在网页上创建 |
password | 嘉宾访问密码 控制台获取 |
nickName | 自己设置的直播昵称(可以为空) |
type | 2嘉宾 3助理 |
callBack | 回调接口 |
代码展示
//嘉宾加入
VhallSDK.joinWebinar(param.watchId, param.guestPwd, VhallSDK.getUserName(), "2", new WebinarInfoDataSource.LoadWebinarInfoCallback() {
@Override
public void onWebinarInfoLoaded(String jsonStr, WebinarInfo webinarInfo) {
RtcActivity.startActivity(MainActivity.this, true, webinarInfo);
hideLoading();
}
@Override
public void onError(int errorCode, String errorMsg) {
ToastUtil.showToast(errorMsg);
hideLoading();
}
});