فهرست منبع

新增连麦模式控制

Pq 3 سال پیش
والد
کامیت
8f0b0f116d

+ 2 - 0
rong_im/live/src/main/java/com/rong/io/live/LiveRoomMsgConstants.java

@@ -16,6 +16,8 @@ public class LiveRoomMsgConstants {
 
     public static final int ACTION_AGREE_MIC_APPLY = -109;//主播同意观众连麦
     public static final int ACTION_SEND_PAUSE_LIVE = -110;//暂停直播
+    public static final int ACTION_CANCEL_ON_MIC_BY_TEACHER = -111;//主播将观众下麦
+    public static final int ACTION_SWITCH_MIC_MODE = -112;//主播切换连麦模式
 
     public static final int MIC_ACTION_INVITE_SEAT_BY_CREATE = 1;//连麦-主讲人邀请
     public static final int MIC_ACTION_CANCEL_INVITE_SEAT_BY_CREATE = 2;//连麦-主讲人取消邀请

+ 1 - 0
rong_im/live/src/main/java/com/rong/io/live/config/LiveConfig.java

@@ -9,6 +9,7 @@ public class LiveConfig {
     public static final int LIVE_MODE_LIVE_START = 2;//直播模式
     public static final int LIVE_STATUS_NORMAL = 1;//正常直播状态(包括预览或者直播中)
     public static final int LIVE_STATUS_PAUSE = 2;//暂停直播状态
+    public static int MODE_LIVE_IS_ENABLE_MIC = 0;//0是允许连麦 1是禁止连麦
 
     public static final int LIVE_DELAY_NORMAL = 100;//直播正常延迟
     public static final int LIVE_DELAY_MIDDLE = 200;//直播一般延迟

+ 1 - 1
teacher/build.gradle

@@ -118,7 +118,7 @@ dependencies {
     implementation "com.alibaba:arouter-api:$rootProject.ext.android.arouter_api_version"
     kapt "com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version"
     //融云美颜库 //cn.rongcloud.sdk:rtc_lib:5.2.1
-    implementation('cn.rongcloud.sdk:face_beautifier:5.2.1') {
+    implementation('cn.rongcloud.sdk:face_beautifier:5.2.4') {
         exclude(group: 'cn.rongcloud.sdk', module: 'rtc_lib')
     }
 

+ 13 - 1
teacher/src/main/java/com/cooleshow/teacher/presenter/live/LiveRoomPresenter.java

@@ -32,6 +32,7 @@ import com.rong.io.live.message.RCPauseLiveMessage;
 import com.rong.io.live.message.RCUserAddLikeMessage;
 import com.rong.io.live.message.RCUserSeatApplyMessage;
 import com.rong.io.live.message.RCUserSeatResponseMessage;
+import com.rong.io.live.message.RCUserSeatsCtrlMessage;
 import com.rong.io.live.message.RCUserSyncAddLikeCountMessage;
 
 import java.util.ArrayList;
@@ -350,7 +351,7 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
             }
             return;
         }
-        if (action == LiveRoomMsgConstants.MIC_ACTION_CANCEL_SEAT_BY_CREATE) {
+        if (action == LiveRoomMsgConstants.ACTION_CANCEL_ON_MIC_BY_TEACHER) {
             //主讲人将观众抱下麦
             Object param = params[0];
             if (param instanceof User) {
@@ -366,6 +367,17 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
             return;
         }
 
+        if (action == LiveRoomMsgConstants.ACTION_SWITCH_MIC_MODE) {
+            //切换连麦模式
+            boolean isEnable = (boolean) params[0];
+            RCUserSeatsCtrlMessage rcUserSeatsCtrlMessage = new RCUserSeatsCtrlMessage();
+            rcUserSeatsCtrlMessage.setUserId(UserHelper.getUserId());
+            rcUserSeatsCtrlMessage.setUserName(UserHelper.getUserName());
+            rcUserSeatsCtrlMessage.setSeatBan(isEnable);
+            sendMessage(rcUserSeatsCtrlMessage, false);
+            return;
+        }
+
         if (action == LiveRoomMsgConstants.ACTION_SEND_ADD_LIKE_COUNT) {
             //发送点赞数量总数
             int count = (int) params[0];

+ 22 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/live/LiveApplyMicFragment.java

@@ -16,6 +16,7 @@ import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.databinding.FragmentLiveApplyMicLayoutBinding;
 import com.cooleshow.teacher.widgets.dialog.LiveMicManagerDialog;
 import com.rong.io.live.bean.User;
+import com.rong.io.live.config.LiveConfig;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -29,7 +30,7 @@ import androidx.recyclerview.widget.RecyclerView;
  * Author by pq, Date on 2022/6/13.
  * 直播间申请连麦列表页面
  */
-public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayoutBinding> {
+public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayoutBinding> implements View.OnClickListener {
     RecyclerView recyclerView;
 
     private LiveMicManagerDialog.OnEventListener mEventListener;
@@ -52,7 +53,9 @@ public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayou
     protected void initData() {
         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
         recyclerView.setLayoutManager(linearLayoutManager);
-        mAdapter = new Adapter(R.layout.item_live_mic_manager_layout,mList);
+        mViewBinding.tvEnableMic.setOnClickListener(this);
+        mViewBinding.tvRefuseAll.setOnClickListener(this);
+        mAdapter = new Adapter(R.layout.item_live_mic_manager_layout, mList);
         recyclerView.setAdapter(mAdapter);
         mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
             @Override
@@ -67,6 +70,7 @@ public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayou
         });
     }
 
+    @Override
     public void onClick(View view) {
         int id = view.getId();
         if (id == R.id.tv_refuse_all) {
@@ -79,6 +83,21 @@ public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayou
 
         if (id == R.id.tv_enable_mic) {
             //禁止连麦
+            if (LiveConfig.MODE_LIVE_IS_ENABLE_MIC == 0) {
+                //当前允许连麦,触发禁止连麦
+                if (mEventListener != null) {
+                    LiveConfig.MODE_LIVE_IS_ENABLE_MIC = 1;
+                    mViewBinding.tvEnableMic.setText("开启连麦");
+                    mEventListener.onSwitchMicMode(true);
+                }
+            } else {
+                //当前禁止连麦,触发允许连麦
+                if (mEventListener != null) {
+                    LiveConfig.MODE_LIVE_IS_ENABLE_MIC = 0;
+                    mViewBinding.tvEnableMic.setText("禁止连麦");
+                    mEventListener.onSwitchMicMode(false);
+                }
+            }
             return;
         }
     }
@@ -111,7 +130,7 @@ public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayou
         @Override
         protected void convert(@NonNull BaseViewHolder helper, User user) {
             //创建人头像
-            ImageView iv_avatar =helper.getView(R.id.iv_avatar);
+            ImageView iv_avatar = helper.getView(R.id.iv_avatar);
             Glide.with(getContext()).load(user.getPortraitUrl()).placeholder(R.drawable.icon_teacher_default_head).error(R.drawable.icon_teacher_default_head).into(iv_avatar);
             //名称
             helper.setText(R.id.tv_name, user.getUserName());

+ 5 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/live/TeacherLiveRoomActivity.java

@@ -1233,7 +1233,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
                 @Override
                 public void onUnderMic(User user) {
                     //下麦
-                    presenter.handleAction(LiveRoomMsgConstants.MIC_ACTION_CANCEL_SEAT_BY_CREATE, user);
+                    presenter.handleAction(LiveRoomMsgConstants.ACTION_CANCEL_ON_MIC_BY_TEACHER, user);
                     if (mRoomMicMemberHelper != null) {
                         mRoomMicMemberHelper.delOnMicUser(user);
                     }
@@ -1250,7 +1250,9 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 
                 @Override
                 public void onSwitchMicMode(boolean isEnable) {
-
+                    if (presenter != null) {
+                        presenter.handleAction(LiveRoomMsgConstants.ACTION_SWITCH_MIC_MODE, isEnable);
+                    }
                 }
             });
         }
@@ -1258,7 +1260,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
             mLiveMicManagerDialog.show();
         }
         mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
-        mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers()
+        mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
     }
 
     private void showBeautyOptionsDialog() {