Android排麦组件化

优质
小牛编辑
132浏览
2023-12-01

排麦组件的核心类是CCBarLeyManager,获取核心类的实例:CCBarLeyManager mBarLeyManager = CCBarLeyManager.getInstance();

1.1 举手连麦

学生可点击连麦申请连麦,需老师确认才可连麦

老师可以邀请学生连麦,需学生同意才可连麦

学生可以点击下麦,老师也可以踢学生下麦

1.2 自由连麦

学生可自由连麦,无需老师确认

学生可以点击下麦,老师也可以踢学生下麦

1.3 自动连麦

学生进入房间后自动连麦

学生不可以点击下麦,老师可以踢学生下麦

学生可以发起举手消息,这个举手跟连麦没有关系

2.0 请求排麦/举手

点击自由连麦、举手,以及自动连麦都必须要调用该接口

应用模式:举手连麦,自由连麦,自动连麦。

public void handsup(final CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
onSuccessCCBarLeyCallBack成功回调可选
onFailureCCBarLeyCallBack失败回调可选

2.1 学生举手(自动连麦才可以设置)

举手状态由互动者端发起,通知老师端。

应用模式:自动连麦。

  public void Studenthandup(boolean flag, final CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
flagboolean布尔类型true:举手;false:取消举手必选
onSuccessCCBarLeyCallBack成功回调可选
onFailureCCBarLeyCallBack失败回调可选

2.2 取消排麦

取消排麦由学生端发起。

应用模式:举手连麦,自由连麦,自动连麦。

public void handsUpCancel(final CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
onSuccessCCBarLeyCallBack成功回调可选
onFailureCCBarLeyCallBack失败回调可选

2.3 取消邀请

取消邀请由老师端发起

应用模式:举手连麦,自由连麦,自动连麦。

public void cancleInviteUserSpeak(String userId, CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
userIdstring被被取消邀请的用户id必选
onSuccessCCBarLeyCallBack成功回调可选
onFailureCCBarLeyCallBack失败回调可选

2.4 拒绝老师连麦邀请

拒绝老师连麦邀请由学生端发起

应用模式:举手连麦,自由连麦,自动连麦。

public void refuseTeacherInvite(CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
onSuccessCCBarLeyCallBack成功回调(含参数)可选
onFailureCCBarLeyCallBack失败回调(含参数)可选

2.5 踢人下麦

老师端发起踢人下麦

应用模式:举手连麦,自由连麦,自动连麦。

 public void kickUserFromSpeak(@NonNull String userId, CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
userIdstring被踢下麦用户id必选
onSuccessCCBarLeyCallBack成功回调可选
onFailureCCBarLeyCallBack失败回调可选

2.6 主动下麦

互动者端发起主动下麦。

应用模式:举手连麦,自由连麦。

 public void handsDown(CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
onSuccessCCBarLeyCallBack成功回调(含参数)可选
onFailureCCBarLeyCallBack失败回调(含参数)可选

2.7 同意举手

老师端同意学生上麦请求。

应用模式:举手连麦

public void certainHandup(String userId, final CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
userIdstring同意上麦用户id必选
onSuccessCCBarLeyCallBack成功回调(含参数)可选
onFailureCCBarLeyCallBack失败回调(含参数)可选

2.8 接受老师邀请

学生端接受老师的上麦邀请,同意上麦。

应用模式:举手连麦

 public void acceptTeacherInvite(final CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
onSuccessCCBarLeyCallBack成功回调(含参数)可选
onFailureCCBarLeyCallBack失败回调(含参数)可选

2.9 邀请学生上麦

老师端发送邀请,接收端是互动者。

应用模式:举手连麦

 public void inviteUserSpeak(String userId, final CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
userIdstring被邀请互动者的用户id必选
onSuccessCCBarLeyCallBack成功回调(含参数)可选
onFailureCCBarLeyCallBack失败回调(含参数)可选

3.0 学员取消举手通知(举手连麦模式)

首先获取到排麦组件的取消举手事件监听:

 //学员取消举手连麦
barLeyManager.setOnCancelHandUpListener(onCancelHandUpListener);

客户自己设置自己的socket事件: ccAtlasClient.sendPublishMessage(data);

使用例子:(demo里有实现的代码逻辑,可供参考)

//学员取消举手
    CCBarLeyManager.OnCancelHandUpListener onCancelHandUpListener = new CCBarLeyManager.OnCancelHandUpListener() {
        @Override
        public void OnCancelHandUp(String userId, String userName) {
            Log.i("wdh", "onSuccess: " + userName);
            JSONObject data = new JSONObject();
            try {
                data.put("userid",userId);
                data.put("username",userName);
                ccAtlasClient.sendPublishMessage(data);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

获取自己定义的socket监听事件:

 //用户自己定义的socket事件
 ccAtlasClient.setOnPublishMessageListener(mPublishMessage);

使用例子:(demo里有实现的代码逻辑,可供参考)

     //用户监听自己设置的socket事件
    private CCAtlasClient.OnPublishMessageListener mPublishMessage = new CCAtlasClient.OnPublishMessageListener() {
        @Override
        public void onPublishMessage(JSONObject object) {
            try {
                message(object.getString("username") + "取消举手");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

3.1 设置连麦模式(可设置举手连麦,自由连麦,自动连麦,仅只有老师端)

老师端设置连麦模式

应用模式:举手连麦,自由连麦,自动连麦。

public boolean setSpeakMode(@CCAtlasClient.LianmaiMode int lianmaiMode, CCBarLeyCallBack<Void> callBack) {

object 参数说明:

参数名称参数类型说明是否必须
lianmaiModeint连麦模式的值必选
onSuccessCCBarLeyCallBack成功回调(含参数)可选
onFailureCCBarLeyCallBack失败回调(含参数)可选

3.1 监听流服务事件

首先获取到排麦组件的流服务监听事件:

mBarLeyManager.setOnNotifyStreamListener(mClientObserver);

使用例子:(demo里有实现的代码逻辑,可供参考)

 private CCAtlasClient.OnNotifyStreamListener mClientObserver = new CCAtlasClient.OnNotifyStreamListener() {

        @Override
        public void onStreamAllowSub(CCStream stream) {
           //这块监听是监听到有流可订阅,逻辑可以根据需要设置。
        }

        @Override
        public void onStreamRemoved(CCStream stream) {
            //这块监听是监听到流移除事件,逻辑可以根据需要设置
        }

        @Override
        public void onStreamError() {
            //这块监听是流错误事件,可以根据自己需要设置
        }
    };

3.2 学生排麦状态通知(上麦和下麦的回调通知)

首先获取到排麦组件的排麦状态监听事件: mBarLeyManager.setOnNotifyMaiStatusLisnter(mMaiStatusLisnter);

使用例子:(demo里有实现的代码逻辑,可供参考)

 private BarLeyManager.OnNotifyMaiStatusLisnter mMaiStatusLisnter = new BarLeyManager.OnNotifyMaiStatusLisnter() {

        @Override
        public void onUpMai(int oldStatus) {
              //这块监听是监听上麦状态事件,逻辑可以根据需要设置
        }

        @Override
        public void onDownMai() {
            //这块监听是监听下麦状态事件,逻辑可以根据需要设置
        }
    };

3.3 学生收到老师上麦邀请回调通知(老师端邀请学生上麦)

首先获取到排麦组件的上麦邀请状态监听事件: mBarLeyManager.setOnNotifyInviteListener(mInviteListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

 private BarLeyManager.OnNotifyInviteListener mInviteListener = new BarLeyManager.OnNotifyInviteListener() {


        @Override
        public void onInvite() {
//这块监听是监听邀请状态事件,逻辑可以根据需要设置
        }

        @Override
        public void onCancel() {
//这块监听是监听取消邀请状态事件,逻辑可以根据需要设置
        }
    };

3.4 学生排麦麦序更新回调(0:表示空闲;1:表示排麦;2:表示上麦;3:表示连麦;4:邀请)

首先获取到排麦组件的排麦麦序更新监听事件: mBarLeyManager.setOnQueueMaiUpdateListener(mMaiUpdataListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

 private BarLeyManager.OnQueueMaiUpdateListener mMaiUpdataListener = new BarLeyManager.OnQueueMaiUpdateListener() {

        @Override
        public void onUpdateBarLeyStatus(ArrayList<CCUser> users) {

        }
    };

3.5 连麦模式更新回调(举手连麦、自由连麦、自动连麦)

首先获取到排麦组件的连麦模式更新监听事件: mBarLeyManager.setOnSpeakModeUpdateListener(mLianmaiModeUpdateListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

 private BarLeyManager.OnSpeakModeUpdateListener mSpeakModeUpdateListener = new BarLey Manager.OnSpeakModeUpdateListener() {
        @Override
        public void onBarLeyMode(int mode) {

        }
    };

3.6 学生被老师提出房间回调(举手连麦、自由连麦、自动连麦)

首先获取到排麦组件的踢出房间监听事件: mBarLeyManager.setOnKickOutListener(mKickOutListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

private BarLeyManager.OnKickOutListener mKickOutListener= new BarLeyManager.OnKickOutListener() {
       @Override
       public void onKickOut() {

       }
    };

3.7 监听举手状态(只有老师能接受)

首先获取到排麦组件的举手监听事件: mBarLeyManager.setOnHandupListener(mOnHandupListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

  private BarLeyManager.OnHandupListener mOnHandupListener = new BarLeyManager.OnHandupListener() {

        @Override
        public void onHandupStatus(String userid, boolean isHandup) {

        }
    };

3.8 学生被老师提出房间回调通知事件

首先获取到排麦组件的踢出房间监听事件: mBarLeyManager.setOnKickOutListener(mOnKichOutListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

  private BarLeyManager.OnKickOutListener mOnKichOutListener = new BarLeyManager.OnKickOutListener() {

        @Override
        public void onKickOut() {

        }
    };

3.9 设置用户列表更新回调通知

首先获取到排麦组件的踢出房间监听事件: mBarLeyManager.setOnUserListUpdateListener(mUserListUpdateListener);

使用例子:(demo里有实现的代码逻辑,可供参考)

 private BarLeyManager.OnUserListUpdateListener mUserListUpdateListener = new BarLeyManager.OnUserListUpdateListener() {


        @Override
        public void onUpdateUserList(ArrayList<CCUser> users) {

        }
    };