互动直播

9.1 获取XHLiveManager实例,添加直播事件监听

XHLiveManager liveManager = XHClient.getInstance().getLiveManager(this);
liveManager.addListener(new IXHLiveManagerListener() {
@Override
public void onActorJoined(String liveID, String actorID) {
//有主播加入
}

@Override
public void onActorLeft(String liveID, String actorID) {
//有主播离开
}

@Override
public void onApplyBroadcast(String liveID, String applyUserID) {
//房主,收到观众的连麦申请
}

@Override
public void onApplyResponsed(String liveID, XHConstants.XHLiveJoinResult result) {
//观众,发起连麦申请后,收到房主的答复
}

@Override
public void onInviteBroadcast(String liveID, String applyUserID) {
//观众,收到房主的连麦邀请
}

@Override
public void onInviteResponsed(String liveID, XHConstants.XHLiveJoinResult result) {
//房主,发出连麦邀请后,收到观众的答复
}

@Override
public void onLiveError(String liveID, String error) {
//直播出错
}

@Override
public void onMembersUpdated(int membersNumber) {
//直播观看人数变化,当前观看直播的人数
}

@Override
public void onSelfKicked() {
//自己被踢出直播
}

@Override
public void onSelfMuted(int seconds) {
//自己被禁言
}

@Override
public void onCommandToStopPlay(String liveID) {
//连麦者, 被房主通知停止连麦
}

@Override
public void onReceivedMessage(XHIMMessage message) {
//收到直播间内的文本消息
}

@Override
public void onReceivePrivateMessage(XHIMMessage message) {
//收到直播间内的私信文本消息
}

@Override
public void onReceiveRealtimeData(byte[] data, String upId) {
//接收到实时白板数据
}
});

9.2 XHLiveManager API 说明

/**
* 添加直播事件监听
* @param liveManagerListener IXHLiveManagerListener 接收直播相关事件
*/
void addListener(IXHLiveManagerListener liveManagerListener);

/**
* 设置媒体类型,音频和视频可以都打开,也可以单独打开一个。
* @param mediaTypeEnum 参考XHConstants.XHRtcMediaTypeEnum
*/
void setRtcMediaType(XHConstants.XHRtcMediaTypeEnum mediaTypeEnum);

/**
* 创建直播
* @param liveItem XHLiveItem 用于指定直播的名字和类型
* @param callback 结果回调
*/
void createLive(XHLiveItem liveItem,IXHResultCallback callback);

/**
* 主播开始直播
* @param liveID 直播ID
* @param callback 结果回调,成功时将返回sessionID,用于服务端录像记录查询
*/
void startLive(String liveID,IXHResultCallback callback);

/**
* 观众观看直播
* @param liveID 直播ID
* @param callback 结果回调
*/
void watchLive(String liveID,IXHResultCallback callback);

/**
* 给主播指定显示画面的View
* @param userID 主播用户ID
* @param player 用于显示主播图像的StarPlayer
* @param isBig 设置是否显示主播的大图
*/
void attachPlayerView(String userID,StarPlayer player,Boolean isBig);

/**
* 观众申请连麦
* @param toID 主播的ID
*/
void applyToBroadcaster(String toID);

/**
* 房主同意连麦
* @param toID 申请连麦者的ID
*/
void agreeApplyToBroadcaster(String toID);

/**
* 房主拒绝连麦
* @param toID 申请连麦者的ID
*/
void refuseApplyToBroadcaster(String toID);

/**
* 主播邀請连麦
* @param toID 被邀请人的ID
*/
void inviteToBroadcaster(String toID);

/**
* 观众同意连麦
* @param toID 主播的ID
*/
void agreeInviteToBroadcaster(String toID);

/**
* 观众拒绝连麦
* @param toID 主播的ID
*/
void refuseInviteToBroadcaster(String toID);

/**
* 命令连麦者下麦
* @param toID 连麦者ID
*/
void commandToAudience (String toID);

/**
* 从连麦者切换到观众
*/
void changeToAudience(IXHResultCallback callback);

/**
* 从观众切换到连麦者
* @param callback 结果回调,成功时将返回sessionID,用于服务端录像记录查询
*/
void changeToBroadcaster(IXHResultCallback callback);

/**
* 离开直播
* @param callback 结果回调
*/
void leaveLive(IXHResultCallback callback);

/**
* 切换摄像头方向
*/
void switchCamera();

/**
* 切换摄像头
* @param cameraId 指定切换到某个摄像头
*/
void switchCamera(int cameraId);

/**
* 切换成大图
* @param userID 切换成大图的主播ID
*/
void changeToBig(String userID);

/**
* 切换成小图
* @param userID 切换成小图的主播ID
*/
void changeToSmall(String userID);

/**
* 动态开关音频,直播过程中可随时开关音频,直播结束后状态自动重置。
*/
void setAudioEnable(Boolean enable);

/**
* 动态开关视频,直播过程中可随时开关视频,直播结束后状态自动重置。
*/
void setVideoEnable(Boolean enable);

/**
* 发送直播内消息
* @param message 发送的消息内容
* @param callback 结果回调
* @return 返回发送的消息对象
*/
XHIMMessage sendMessage(String message, IXHResultCallback callback);

/**
* 发送直播内私密消息
* 私密消息只有目标用户可以收到
* @param toID 目标用户ID
* @param message 发送的消息内容
* @param callback 结果回调
* @return 返回发送的消息对象
*/
XHIMMessage sendPrivateMessage(String toID, String message, IXHResultCallback callback);

/**
* 禁言直播内的用户
* @param memberID 被禁言的用户ID
* @param muteSeconds 禁言时长(单位:秒)
* @param callback 结果回调
*/
void muteMember(String memberID, int muteSeconds, IXHResultCallback callback);

/**
* 解除禁言
* @param memberID 解除禁言的用户ID
* @param callback 结果回调
*/
void unMuteMember(String memberID,IXHResultCallback callback);

/**
* 从直播踢出用户
* @param memberID 被踢的用户ID
* @param callback 结果回调
*/
void kickMember(String memberID, IXHResultCallback callback);

/**
* 推送RTMP流
* @param rtmpurl 推送地址
* @param callback 结果回调
*/
void pushRtmp(String rtmpurl,IXHResultCallback callback);

/**
* 停止推送RTMP流
* @param callback 结果回调
*/
void stopPushRtmp(IXHResultCallback callback);


/**
* 设置recorder
* @param recorder
*/
void setRecorder(IXHRecorder recorder);

/**
* 切换recorder
* @param recorder
*/
void resetRecorder(IXHRecorder recorder);

/**
* 发送实时数据,用于教学白板的数据传输
* @param data 数据
*/
void sendRealtimeData(byte[] data);