Browse Source

增加老师端连麦逻辑

Pq 3 years ago
parent
commit
eed0170eba

+ 57 - 2
rong_im/live/src/main/java/com/rong/io/live/helper/LiveRoomMicMemberHelper.java

@@ -14,11 +14,11 @@ import java.util.HashMap;
  */
 public class LiveRoomMicMemberHelper {
     private ArrayList<User> onApplyMicUsers;
-    private HashMap<String, User> onMicUser;
+    private ArrayList<User> onMicUser;
 
     public LiveRoomMicMemberHelper() {
         onApplyMicUsers = new ArrayList<>();
-        onMicUser = new HashMap<>();
+        onMicUser = new ArrayList<>();
     }
 
     /**
@@ -26,6 +26,38 @@ public class LiveRoomMicMemberHelper {
      *
      * @param user
      */
+    public void addOnMicUser(User user) {
+        int i = checkOnMicExist(user);
+        if (i == -1) {
+            onMicUser.add(user);
+        }
+    }
+
+    /**
+     * 删除单个连麦用户
+     *
+     * @param user
+     */
+    public void delOnMicUser(User user) {
+        int i = checkOnMicExist(user);
+        if (i != -1) {
+            onMicUser.remove(i);
+        }
+    }
+
+    /**
+     * 删除全部申请连麦用户
+     */
+    public void delAllOnMicUser() {
+        onMicUser.clear();
+    }
+
+
+    /**
+     * 添加连麦用户
+     *
+     * @param user
+     */
     public void addApplyUser(User user) {
         int i = checkApplyExist(user);
         if (i == -1) {
@@ -53,6 +85,25 @@ public class LiveRoomMicMemberHelper {
     }
 
     /**
+     * 检查用户是否已存在
+     *
+     * @param targetUser
+     * @return
+     */
+    private int checkOnMicExist(User targetUser) {
+        if (targetUser == null) {
+            return -1;
+        }
+        for (int i = 0; i < onMicUser.size(); i++) {
+            User user1 = onMicUser.get(i);
+            if (TextUtils.equals(user1.getUserId(), targetUser.getUserId())) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
      * 检查目标连麦用户是否已存在
      *
      * @param targetUser
@@ -80,4 +131,8 @@ public class LiveRoomMicMemberHelper {
     public ArrayList<User> getOnApplyMicUsers() {
         return onApplyMicUsers;
     }
+
+    public ArrayList<User> getOnMicUsers() {
+        return onMicUser;
+    }
 }

+ 5 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/LiveRoomContract.java

@@ -110,6 +110,11 @@ public interface LiveRoomContract {
          */
         void onSeatApplyMessage(RCUserSeatApplyMessage seatApplyMessage);
 
+        /**
+         * 远端有用户推流
+         * @param remoteUserId
+         */
+        void onRemoteUserPublishResource(String remoteUserId);
     }
 
     interface Presenter {

+ 79 - 9
teacher/src/main/java/com/cooleshow/teacher/presenter/live/LiveRoomPresenter.java

@@ -43,6 +43,7 @@ import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
 import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
 import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
 import cn.rongcloud.rtc.api.stream.RCRTCAudioInputStream;
+import cn.rongcloud.rtc.api.stream.RCRTCAudioOutputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCCameraOutputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCLiveInfo;
@@ -85,7 +86,7 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
         @Override
         public void onRemoteUserPublishResource(RCRTCRemoteUser rcrtcRemoteUser, List<RCRTCInputStream> list) {
             Log.i("pq", "onRemoteUserPublishResource");
-//            subscribeAVStream();
+            subscribeTargetStream(rcrtcRemoteUser.getUserId(), list, null);
         }
 
         @Override
@@ -112,9 +113,6 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
         public void onUserJoined(RCRTCRemoteUser rcrtcRemoteUser) {
             //当房间中用户使用RCRTCLocalUser#switchToBroadcaster 方法上麦成功时
             // ,房间中观众会收到IRCRTCRoomEventsListener#onUserJoined 回调。
-            if (null != getView()) {
-//                getView().onUserJoinRoom(rcrtcRemoteUser);
-            }
         }
 
         @Override
@@ -123,21 +121,21 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
             //当房间内的用户使用 RCRTCLocalUser#switchToBroadcaster 或 RCRTCLocalUser#switchToAudience 方法上下麦时
             // ,同房间内的其他主播会收到 IRCRTCRoomEventsListener#onSwitchRole 回调。
             if (getView() != null) {
-//                getView().onSwitchRole(userId, role);
+                getView().onSwitchRole(userId, role);
             }
         }
 
         @Override
         public void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser) {
             if (getView() != null) {
-//                getView().onUserLeftRoomMic(rcrtcRemoteUser);
+                getView().onUserLeftRoomMic(rcrtcRemoteUser);
             }
         }
 
         @Override
         public void onUserOffline(RCRTCRemoteUser rcrtcRemoteUser) {
             if (getView() != null) {
-//                getView().onUserOfflineRoomMic(rcrtcRemoteUser);
+                getView().onUserOfflineRoomMic(rcrtcRemoteUser);
             }
         }
 
@@ -339,6 +337,21 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
             }
             return;
         }
+        if (action == LiveRoomMsgConstants.MIC_ACTION_CANCEL_SEAT_BY_CREATE) {
+            //主讲人将观众抱下麦
+            Object param = params[0];
+            if (param instanceof User) {
+                User user = (User) param;
+                RCUserSeatApplyMessage seatApplyMessage = new RCUserSeatApplyMessage();
+                seatApplyMessage.setTeacherId(UserHelper.getUserId());
+                seatApplyMessage.setTeacherName(UserHelper.getUserName());
+                seatApplyMessage.setAudienceId(user.getUserId());
+                seatApplyMessage.setAudienceName(user.getUserName());
+                seatApplyMessage.setType(LiveRoomMsgConstants.MIC_ACTION_CANCEL_SEAT_BY_CREATE);
+                sendMessage(seatApplyMessage, false);
+            }
+            return;
+        }
 
         if (action == LiveRoomMsgConstants.ACTION_SEND_ADD_LIKE_COUNT) {
             //发送点赞数量总数
@@ -489,9 +502,9 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
 
 
     /**
-     * 获得当前视频流
+     * 获得当前房间所有的视频流和音频流
      */
-    public void getVideoStream(List<RCRTCVideoOutputStream> outputStreams, List<RCRTCVideoInputStream> inputStreams, List<RCRTCAudioInputStream> audioinputstream) {
+    public void getAllStreams(List<RCRTCVideoOutputStream> outputStreams, List<RCRTCVideoInputStream> inputStreams, List<RCRTCAudioInputStream> audioinputstream, List<RCRTCAudioOutputStream> audioOutputStreams) {
         RCRTCRoom mRtcRoom = LiveEventHelper.getInstance().getRtcRoom();
         if (mRtcRoom == null) {
             return;
@@ -515,6 +528,40 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
             if (o.getMediaType() == RCRTCMediaType.VIDEO) {
                 outputStreams.add((RCRTCVideoOutputStream) o);
             }
+            if (o.getMediaType() == RCRTCMediaType.AUDIO) {
+                audioOutputStreams.add((RCRTCAudioOutputStream) o);
+            }
+        }
+    }
+
+    /**
+     * 获取房间所有的音频流
+     *
+     * @param audioinputstream
+     * @param audioOutputStreams
+     */
+    public void getAudioStreams(List<RCRTCAudioInputStream> audioinputstream, List<RCRTCAudioOutputStream> audioOutputStreams) {
+        RCRTCRoom mRtcRoom = LiveEventHelper.getInstance().getRtcRoom();
+        if (mRtcRoom == null) {
+            return;
+        }
+
+        for (final RCRTCRemoteUser remoteUser : mRtcRoom.getRemoteUsers()) {
+            if (remoteUser.getStreams().size() == 0) {
+                continue;
+            }
+            List<RCRTCInputStream> userStreams = remoteUser.getStreams();
+            for (RCRTCInputStream i : userStreams) {
+                if (i.getMediaType() == RCRTCMediaType.AUDIO) {
+                    audioinputstream.add((RCRTCAudioInputStream) i);
+                }
+            }
+        }
+
+        for (RCRTCOutputStream o : mRtcRoom.getLocalUser().getStreams()) {
+            if (o.getMediaType() == RCRTCMediaType.AUDIO) {
+                audioOutputStreams.add((RCRTCAudioOutputStream) o);
+            }
         }
     }
 
@@ -784,6 +831,29 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
         });
     }
 
+    public void subscribeTargetStream(final String userId, List<RCRTCInputStream> list, final ResultCallback<String> callback) {
+        RCRTCRoom rcrtcRoom = LiveEventHelper.getInstance().getRtcRoom();
+        if (rcrtcRoom == null) {
+            Log.i("pq", "unSubscribeStream failed , rcrtcRoom is null");
+            if (callback != null) {
+                callback.onFail(ErrorCode.RTC_ERROR.getCode(), null);
+            }
+            return;
+        }
+        rcrtcRoom.getLocalUser().subscribeStreams(list, new IRCRTCResultCallback() {
+            @Override
+            public void onSuccess() {
+                if (getView() != null) {
+                    getView().onRemoteUserPublishResource(userId);
+                }
+            }
+
+            @Override
+            public void onFailed(RTCErrorCode errorCode) {
+            }
+        });
+    }
+
     /**
      * 取消订阅指定的流
      *

+ 27 - 29
teacher/src/main/java/com/cooleshow/teacher/ui/live/LiveApplyMicFragment.java

@@ -8,16 +8,20 @@ import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 import com.cooleshow.base.ui.fragment.BaseFragment;
+import com.cooleshow.base.utils.LogUtils;
 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 java.util.ArrayList;
+import java.util.List;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -41,15 +45,26 @@ public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayou
 
     @Override
     protected void initView(View rootView) {
-
+        recyclerView = mViewBinding.recyclerView;
     }
 
     @Override
     protected void initData() {
         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
         recyclerView.setLayoutManager(linearLayoutManager);
-        mAdapter = new Adapter(R.layout.item_live_mic_manager_layout);
+        mAdapter = new Adapter(R.layout.item_live_mic_manager_layout,mList);
         recyclerView.setAdapter(mAdapter);
+        mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
+            @Override
+            public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (mAdapter != null && position < mAdapter.getData().size()) {
+                    User user = mAdapter.getData().get(position);
+                    if (user != null && mEventListener != null) {
+                        mEventListener.onAgreeApply(user);
+                    }
+                }
+            }
+        });
     }
 
     public void onClick(View view) {
@@ -85,40 +100,23 @@ public class LiveApplyMicFragment extends BaseFragment<FragmentLiveApplyMicLayou
         this.mEventListener = listener;
     }
 
-    private class Adapter extends BaseQuickAdapter<User,Adapter.ViewHolder> {
+    private class Adapter extends BaseQuickAdapter<User, BaseViewHolder> {
 
-        public Adapter(int layoutResId) {
-            super(layoutResId);
-        }
 
-        @Override
-        public int getItemCount() {
-            return mList != null ? mList.size() : 0;
+        public Adapter(int layoutResId, @Nullable List<User> data) {
+            super(layoutResId, data);
+            addChildClickViewIds(R.id.tv_handle);
         }
 
         @Override
-        protected void convert(@NonNull ViewHolder viewHolder, User user) {
+        protected void convert(@NonNull BaseViewHolder helper, User user) {
             //创建人头像
-            Glide.with(getContext()).load(user.getPortraitUrl()).placeholder(R.drawable.icon_teacher_default_head).error(R.drawable.icon_teacher_default_head).into(viewHolder.ivAvatar);
+            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);
             //名称
-            viewHolder.tvName.setText(user.getUserName());
-            viewHolder.tvTip.setText("申请连麦中");
-            viewHolder.tvHandle.setText("上麦");
-        }
-
-        public class ViewHolder extends BaseViewHolder {
-            ImageView ivAvatar;
-            TextView tvName;
-            TextView tvTip;
-            TextView tvHandle;
-
-            public ViewHolder(View itemView) {
-                super(itemView);
-                ivAvatar = itemView.findViewById(R.id.iv_avatar);
-                tvName = itemView.findViewById(R.id.tv_name);
-                tvTip = itemView.findViewById(R.id.tv_tip);
-                tvHandle = itemView.findViewById(R.id.tv_handle);
-            }
+            helper.setText(R.id.tv_name, user.getUserName());
+            helper.setText(R.id.tv_tip, "申请连麦中");
+            helper.setText(R.id.tv_handle, "上麦");
         }
     }
 

+ 25 - 19
teacher/src/main/java/com/cooleshow/teacher/ui/live/LiveOnMicFragment.java

@@ -8,16 +8,20 @@ import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 import com.cooleshow.base.ui.fragment.BaseFragment;
+import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.databinding.FragmentLiveOnMicLayoutBinding;
 import com.cooleshow.teacher.widgets.dialog.LiveMicManagerDialog;
 import com.rong.io.live.bean.User;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -29,7 +33,6 @@ public class LiveOnMicFragment extends BaseFragment<FragmentLiveOnMicLayoutBindi
     RecyclerView recyclerView;
     private LiveMicManagerDialog.OnEventListener mEventListener;
     private ArrayList<User> mList = new ArrayList<>();
-    ;
     private Adapter mAdapter;
 
 
@@ -40,27 +43,29 @@ public class LiveOnMicFragment extends BaseFragment<FragmentLiveOnMicLayoutBindi
 
     @Override
     protected void initView(View rootView) {
-
+        recyclerView = mViewBinding.recyclerView;
     }
 
     @Override
     protected void initData() {
         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
         recyclerView.setLayoutManager(linearLayoutManager);
-
-        mAdapter = new Adapter(R.layout.item_live_mic_manager_layout);
-//        mAdapter.setOnSubViewClickListener(new BaseRecyclerAdapter.OnSubViewClickListener() {
-//            @Override
-//            public void onSubViewClick(View v, int position) {
-//                if (v.getId() == R.id.tv_handle) {
-//                    //下麦操作
-//                    User user = mList.get(position);
-//                    if (mEventListener != null) {
-//                        mEventListener.onAgreeApply(user);
-//                    }
-//                }
-//            }
-//        });
+        mAdapter = new Adapter(R.layout.item_live_mic_manager_layout, mList);
+        mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
+            @Override
+            public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                int id = view.getId();
+                if(id == R.id.tv_handle){
+                    //下麦操作
+                    if(mAdapter!=null && position<mAdapter.getData().size()){
+                        User user = mAdapter.getData().get(position);
+                        if (mEventListener != null) {
+                            mEventListener.onUnderMic(user);
+                        }
+                    }
+                }
+            }
+        });
         recyclerView.setAdapter(mAdapter);
     }
 
@@ -89,10 +94,11 @@ public class LiveOnMicFragment extends BaseFragment<FragmentLiveOnMicLayoutBindi
         this.mEventListener = listener;
     }
 
-    private class Adapter extends BaseQuickAdapter<User,Adapter.ViewHolder> {
+    private class Adapter extends BaseQuickAdapter<User, Adapter.ViewHolder> {
 
-        public Adapter(int layoutResId) {
-            super(layoutResId);
+        public Adapter(int layoutResId, @Nullable List<User> data) {
+            super(layoutResId, data);
+            addChildClickViewIds(R.id.tv_handle);
         }
 
         @Override

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

@@ -83,6 +83,7 @@ import cn.rongcloud.rtc.api.callback.IRCRTCStatusReportListener;
 import cn.rongcloud.rtc.api.report.StatusBean;
 import cn.rongcloud.rtc.api.report.StatusReport;
 import cn.rongcloud.rtc.api.stream.RCRTCAudioInputStream;
+import cn.rongcloud.rtc.api.stream.RCRTCAudioOutputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCVideoInputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCVideoOutputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCVideoView;
@@ -684,7 +685,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 
         if (id == R.id.iv_mic) {
             //连麦管理
-//            showMicManagerDialog();
+            showMicManagerDialog();
             return;
         }
 
@@ -983,6 +984,9 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
             //role转换为观众,主播取消订阅该用户的流
             if (presenter != null) {
                 //取消订阅该成员消息
+                User user = new User();
+                user.setUserId(userId);
+                mRoomMicMemberHelper.delOnMicUser(user);
                 presenter.unSubscribeStream(userId, null);
             }
         }
@@ -1004,16 +1008,28 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
             user.setUserId(seatApplyMessage.getAudienceId());
             user.setPortrait(seatApplyMessage.getAudienceAvatar());
             mRoomMicMemberHelper.addApplyUser(user);
-//            updateMicManagerData();
+            updateMicManagerData();
         }
         if (seatApplyMessage.getType() == LiveRoomMsgConstants.MIC_ACTION_CANCEL_SEAT_BY_USER) {
             //观众取消
+            User user = new User();
+            user.setUserName(seatApplyMessage.getAudienceName());
+            user.setUserId(seatApplyMessage.getAudienceId());
+            user.setPortrait(seatApplyMessage.getAudienceAvatar());
+            mRoomMicMemberHelper.delApplyUser(user);
+            updateMicManagerData();
         }
     }
 
+    @Override
+    public void onRemoteUserPublishResource(String remoteUserId) {
+        refreshAudio(null, null);
+    }
+
     private void updateMicManagerData() {
         if (mLiveMicManagerDialog != null) {
             mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
+            mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
         }
         if (mTvOnMicNumTip != null) {
             ArrayList<User> onApplyMicUsers = mRoomMicMemberHelper.getOnApplyMicUsers();
@@ -1037,11 +1053,47 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
     }
 
     private void refresh() {
+        //video流信息
         List<RCRTCVideoOutputStream> outputStreams = new ArrayList<>();
-        List<RCRTCVideoInputStream> input = new ArrayList<>();
+        List<RCRTCVideoInputStream> videoInputStreams = new ArrayList<>();
+        //音频流信息
         List<RCRTCAudioInputStream> audioinputstream = new ArrayList<>();
-        presenter.getVideoStream(outputStreams, input, audioinputstream);
-        updateVideoView(outputStreams, input, audioinputstream);
+        List<RCRTCAudioOutputStream> audioOutputStreams = new ArrayList<>();
+        presenter.getAllStreams(outputStreams, videoInputStreams, audioinputstream, audioOutputStreams);
+        updateVideoView(outputStreams, videoInputStreams, audioinputstream);
+        refreshAudio(audioinputstream, audioOutputStreams);
+    }
+
+
+    private void refreshAudio(List<RCRTCAudioInputStream> audioInputStreams, List<RCRTCAudioOutputStream> audioOutputStreams) {
+        if (audioInputStreams == null || audioOutputStreams == null) {
+            //参数为空,先获取房间里的全部音频流信息
+            audioInputStreams = new ArrayList<>();
+            audioOutputStreams = new ArrayList<>();
+            presenter.getAudioStreams(audioInputStreams, audioOutputStreams);
+        }
+        mRoomMicMemberHelper.delAllOnMicUser();
+        //远端用户的音频流信息
+        for (int i = 0; i < audioInputStreams.size(); i++) {
+            RCRTCAudioInputStream rcrtcAudioInputStream = audioInputStreams.get(i);
+            if (rcrtcAudioInputStream.getMediaType() == RCRTCMediaType.AUDIO) {
+                //音频流判断显示上麦用户
+                String userId = rcrtcAudioInputStream.getUserId();
+                if (mRoomInfoBean != null) {
+                    if (!TextUtils.equals(mRoomInfoBean.speakerId, userId)) {
+                        User user = new User();
+                        user.setUserId(userId);
+                        mRoomMicMemberHelper.addOnMicUser(user);
+                    }
+                }
+            }
+        }
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                updateMicManagerData();
+            }
+        });
     }
 
     public void updateVideoView(List<RCRTCVideoOutputStream> outputStreams, List<RCRTCVideoInputStream> inputStreams, List<RCRTCAudioInputStream> audioInputStreams) {
@@ -1179,6 +1231,16 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
                 }
 
                 @Override
+                public void onUnderMic(User user) {
+                    //下麦
+                    presenter.handleAction(LiveRoomMsgConstants.MIC_ACTION_CANCEL_SEAT_BY_CREATE, user);
+                    if (mRoomMicMemberHelper != null) {
+                        mRoomMicMemberHelper.delOnMicUser(user);
+                    }
+                    updateMicManagerData();
+                }
+
+                @Override
                 public void onRefuseAllMicApply() {
                     if (mRoomMicMemberHelper != null) {
                         mRoomMicMemberHelper.delAllApplyUser();
@@ -1196,6 +1258,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
             mLiveMicManagerDialog.show();
         }
         mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
+        mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers()
     }
 
     private void showBeautyOptionsDialog() {

+ 9 - 3
teacher/src/main/java/com/cooleshow/teacher/widgets/dialog/LiveMicManagerDialog.java

@@ -2,6 +2,7 @@ package com.cooleshow.teacher.widgets.dialog;
 
 import android.app.Dialog;
 import android.content.Context;
+import android.graphics.Typeface;
 import android.os.Bundle;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -10,6 +11,7 @@ import android.view.Window;
 import android.view.WindowManager;
 import android.widget.TextView;
 
+import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.LiveBeautyPagerAdapter;
 import com.cooleshow.teacher.ui.live.LiveApplyMicFragment;
@@ -71,10 +73,10 @@ public class LiveMicManagerDialog extends Dialog implements View.OnClickListener
         TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(mTabLayout, mViewPager, new TabLayoutMediator.TabConfigurationStrategy() {
             @Override
             public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
-//                createTab(tab, titles[position]);
-//                tab.setText(titles[position]);
+                createTab(tab, titles[position]);
             }
         });
+        initListener();
         LiveBeautyPagerAdapter beautyPagerAdapter = new LiveBeautyPagerAdapter(mFragmentActivity);
         onMicFragment = new LiveOnMicFragment();
         mApplyMicFragment = new LiveApplyMicFragment();
@@ -87,8 +89,8 @@ public class LiveMicManagerDialog extends Dialog implements View.OnClickListener
         fragments.add(mApplyMicFragment);
         beautyPagerAdapter.setData(fragments);
         mViewPager.setAdapter(beautyPagerAdapter);
+        mViewPager.setOffscreenPageLimit(2);
         tabLayoutMediator.attach();
-        initListener();
     }
 
     private void initListener() {
@@ -99,6 +101,7 @@ public class LiveMicManagerDialog extends Dialog implements View.OnClickListener
                     View customView = tab.getCustomView();
                     TextView tv_text = customView.findViewById(R.id.tv_text);
                     tv_text.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_333333));
+                    tv_text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
                 }
             }
 
@@ -108,6 +111,7 @@ public class LiveMicManagerDialog extends Dialog implements View.OnClickListener
                     View customView = tab.getCustomView();
                     TextView tv_text = customView.findViewById(R.id.tv_text);
                     tv_text.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_666666));
+                    tv_text.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
                 }
             }
 
@@ -156,6 +160,8 @@ public class LiveMicManagerDialog extends Dialog implements View.OnClickListener
     public interface OnEventListener {
         //同意连麦申请
         void onAgreeApply(User user);
+        //下麦操作
+        void onUnderMic(User user);
 
         //拒绝全部连麦申请
         void onRefuseAllMicApply();

+ 0 - 12
teacher/src/main/res/layout/dialog_live_mic_manager_layout.xml

@@ -22,18 +22,6 @@
         app:tabRippleColor="@color/transparent"
         app:tabSelectedTextColor="@color/color_333333"
         app:tabTextColor="@color/color_666666">
-
-        <com.google.android.material.tabs.TabItem
-            android:id="@+id/tabItem1"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:text="B" />
-
-        <com.google.android.material.tabs.TabItem
-            android:id="@+id/tabItem2"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:text="B" />
     </com.google.android.material.tabs.TabLayout>
 
     <androidx.viewpager2.widget.ViewPager2

+ 1 - 1
teacher/src/main/res/layout/view_live_room_main_layout.xml

@@ -243,7 +243,7 @@
         android:layout_height="wrap_content"
         android:layout_marginEnd="11dp"
         android:src="@drawable/icon_mic_contro"
-        android:visibility="gone"
+        android:visibility="visible"
         app:layout_constraintBottom_toBottomOf="@+id/icon_finish_live"
         app:layout_constraintRight_toLeftOf="@+id/icon_finish_live"
         app:layout_constraintTop_toTopOf="@+id/icon_finish_live" />