|  | @@ -20,6 +20,7 @@ import android.widget.TextView;
 | 
	
		
			
				|  |  |  import com.alibaba.android.arouter.facade.annotation.Route;
 | 
	
		
			
				|  |  |  import com.alibaba.android.arouter.launcher.ARouter;
 | 
	
		
			
				|  |  |  import com.bumptech.glide.Glide;
 | 
	
		
			
				|  |  | +import com.common.im.bean.RongIMUserInfo;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.common.BaseApplication;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.data.net.ApiException;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.router.RouterPath;
 | 
	
	
		
			
				|  | @@ -108,7 +109,7 @@ import io.rong.message.TextMessage;
 | 
	
		
			
				|  |  |   * 老师端直播间页面
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  @Route(path = RouterPath.LiveCenter.ACTIVITY_LIVE_ROOM_TEACHER)
 | 
	
		
			
				|  |  | -public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLiveRoomLayoutBinding, LiveRoomPresenter> implements LiveRoomContract.LiveRoomView, View.OnClickListener, SoftKeyboardUtil.OnSoftInputChangedListener {
 | 
	
		
			
				|  |  | +public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLiveRoomLayoutBinding, LiveRoomPresenter> implements LiveRoomContract.LiveRoomView, View.OnClickListener, SoftKeyboardUtil.OnSoftInputChangedListener, LiveRoomMicMemberHelper.OnEventListener {
 | 
	
		
			
				|  |  |      public static final String ROOMID_KEY = "roomid_key";
 | 
	
		
			
				|  |  |      public static final String DEFAULT_TIME_TEXT = "00:00:00";
 | 
	
		
			
				|  |  |      public static final int SYNC_ADD_LIKE_TIME = 10000;//同步点赞数时长(兼心跳功能)
 | 
	
	
		
			
				|  | @@ -318,6 +319,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          mRoomMicMemberHelper = new LiveRoomMicMemberHelper();
 | 
	
		
			
				|  |  | +        mRoomMicMemberHelper.setOnEventListener(this);
 | 
	
		
			
				|  |  |          mMessageAdapter = new LiveRoomMessageAdapter(this);
 | 
	
		
			
				|  |  |          mLinearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
 | 
	
		
			
				|  |  |          recyclerMsg.setLayoutManager(mLinearLayoutManager);
 | 
	
	
		
			
				|  | @@ -688,7 +690,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (id == R.id.iv_mic) {
 | 
	
		
			
				|  |  |              //连麦管理
 | 
	
		
			
				|  |  | -//            showMicManagerDialog();
 | 
	
		
			
				|  |  | +            showMicManagerDialog();
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -969,17 +971,35 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void onUserLeftRoomMic(RCRTCRemoteUser rcrtcRemoteUser) {
 | 
	
		
			
				|  |  |          if (presenter != null && rcrtcRemoteUser != null) {
 | 
	
		
			
				|  |  | -            presenter.unSubscribeStream(rcrtcRemoteUser.getUserId(), null);
 | 
	
		
			
				|  |  | +            delOnMicUser(rcrtcRemoteUser.getUserId());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void onUserOfflineRoomMic(RCRTCRemoteUser rcrtcRemoteUser) {
 | 
	
		
			
				|  |  |          if (presenter != null && rcrtcRemoteUser != null) {
 | 
	
		
			
				|  |  | -            presenter.unSubscribeStream(rcrtcRemoteUser.getUserId(), null);
 | 
	
		
			
				|  |  | +            delOnMicUser(rcrtcRemoteUser.getUserId());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 删除麦上用户
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param userId
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private void delOnMicUser(String userId) {
 | 
	
		
			
				|  |  | +        runOnUiThread(new Runnable() {
 | 
	
		
			
				|  |  | +            @Override
 | 
	
		
			
				|  |  | +            public void run() {
 | 
	
		
			
				|  |  | +                if (mRoomMicMemberHelper != null) {
 | 
	
		
			
				|  |  | +                    presenter.unSubscribeStream(userId, null);
 | 
	
		
			
				|  |  | +                    mRoomMicMemberHelper.delOnMicUser(userId);
 | 
	
		
			
				|  |  | +                    updateMicManagerData();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void onSwitchRole(String userId, RCRTCLiveRole role) {
 | 
	
		
			
				|  |  |          Log.i("pq", "receive onSwitchRole:" + role.getType());
 | 
	
	
		
			
				|  | @@ -987,10 +1007,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |              //role转换为观众,主播取消订阅该用户的流
 | 
	
		
			
				|  |  |              if (presenter != null) {
 | 
	
		
			
				|  |  |                  //取消订阅该成员消息
 | 
	
		
			
				|  |  | -                User user = new User();
 | 
	
		
			
				|  |  | -                user.setUserId(userId);
 | 
	
		
			
				|  |  | -                mRoomMicMemberHelper.delOnMicUser(user);
 | 
	
		
			
				|  |  | -                presenter.unSubscribeStream(userId, null);
 | 
	
		
			
				|  |  | +                delOnMicUser(userId);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1004,24 +1021,24 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |          if (!isOwn(seatApplyMessage.getTeacherId())) {
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -//        if (seatApplyMessage.getType() == LiveRoomMsgConstants.MIC_ACTION_SEAT_BY_USER) {
 | 
	
		
			
				|  |  | -//            //观众申请
 | 
	
		
			
				|  |  | -//            User user = new User();
 | 
	
		
			
				|  |  | -//            user.setUserName(seatApplyMessage.getAudienceName());
 | 
	
		
			
				|  |  | -//            user.setUserId(seatApplyMessage.getAudienceId());
 | 
	
		
			
				|  |  | -//            user.setPortrait(seatApplyMessage.getAudienceAvatar());
 | 
	
		
			
				|  |  | -//            mRoomMicMemberHelper.addApplyUser(user);
 | 
	
		
			
				|  |  | -//            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();
 | 
	
		
			
				|  |  | -//        }
 | 
	
		
			
				|  |  | +        if (seatApplyMessage.getType() == LiveRoomMsgConstants.MIC_ACTION_SEAT_BY_USER) {
 | 
	
		
			
				|  |  | +            //观众申请
 | 
	
		
			
				|  |  | +            User user = new User();
 | 
	
		
			
				|  |  | +            user.setUserName(seatApplyMessage.getAudienceName());
 | 
	
		
			
				|  |  | +            user.setUserId(seatApplyMessage.getAudienceId());
 | 
	
		
			
				|  |  | +            user.setPortrait(seatApplyMessage.getAudienceAvatar());
 | 
	
		
			
				|  |  | +            mRoomMicMemberHelper.addApplyUser(user);
 | 
	
		
			
				|  |  | +            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, false);
 | 
	
		
			
				|  |  | +            updateMicManagerData();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -1029,23 +1046,41 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |          refreshAudio(null, null);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void getFriendInfoSuccess(RongIMUserInfo data) {
 | 
	
		
			
				|  |  | +        if (isFinishing() || isDestroyed()) {
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        User user = new User();
 | 
	
		
			
				|  |  | +        user.setUserId(data.getFriendId());
 | 
	
		
			
				|  |  | +        user.setUserName(data.getFriendNickname());
 | 
	
		
			
				|  |  | +        user.setPortrait(data.getFriendAvatar());
 | 
	
		
			
				|  |  | +        mRoomMicMemberHelper.refreshUserInfo(user);
 | 
	
		
			
				|  |  | +        if (mLiveMicManagerDialog != null) {
 | 
	
		
			
				|  |  | +            mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (llMicContainer != null) {
 | 
	
		
			
				|  |  | +            llMicContainer.refreshUIByUser(mRoomMicMemberHelper.getOnMicUsers());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private void updateMicManagerData() {
 | 
	
		
			
				|  |  | -//        if (mLiveMicManagerDialog != null) {
 | 
	
		
			
				|  |  | -//            mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
 | 
	
		
			
				|  |  | -//            mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
 | 
	
		
			
				|  |  | -//        }
 | 
	
		
			
				|  |  | -//        if (llMicContainer != null) {
 | 
	
		
			
				|  |  | -//            llMicContainer.refreshUIByUser(mRoomMicMemberHelper.getOnMicUsers());
 | 
	
		
			
				|  |  | -//        }
 | 
	
		
			
				|  |  | -//        if (mTvOnMicNumTip != null) {
 | 
	
		
			
				|  |  | -//            ArrayList<User> onApplyMicUsers = mRoomMicMemberHelper.getOnApplyMicUsers();
 | 
	
		
			
				|  |  | -//            if (onApplyMicUsers != null && onApplyMicUsers.size() > 0) {
 | 
	
		
			
				|  |  | -//                mTvOnMicNumTip.setVisibility(View.GONE);
 | 
	
		
			
				|  |  | -//                mTvOnMicNumTip.setText(String.valueOf(onApplyMicUsers.size()));
 | 
	
		
			
				|  |  | -//            } else {
 | 
	
		
			
				|  |  | -//                mTvOnMicNumTip.setVisibility(View.GONE);
 | 
	
		
			
				|  |  | -//            }
 | 
	
		
			
				|  |  | -//        }
 | 
	
		
			
				|  |  | +        if (mLiveMicManagerDialog != null) {
 | 
	
		
			
				|  |  | +            mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
 | 
	
		
			
				|  |  | +            mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (llMicContainer != null) {
 | 
	
		
			
				|  |  | +            llMicContainer.refreshUIByUser(mRoomMicMemberHelper.getOnMicUsers());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (mTvOnMicNumTip != null) {
 | 
	
		
			
				|  |  | +            ArrayList<User> onApplyMicUsers = mRoomMicMemberHelper.getOnApplyMicUsers();
 | 
	
		
			
				|  |  | +            if (onApplyMicUsers != null && onApplyMicUsers.size() > 0) {
 | 
	
		
			
				|  |  | +                mTvOnMicNumTip.setVisibility(View.VISIBLE);
 | 
	
		
			
				|  |  | +                mTvOnMicNumTip.setText(String.valueOf(onApplyMicUsers.size()));
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                mTvOnMicNumTip.setVisibility(View.GONE);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -1087,8 +1122,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |                  String userId = rcrtcAudioInputStream.getUserId();
 | 
	
		
			
				|  |  |                  if (mRoomInfoBean != null) {
 | 
	
		
			
				|  |  |                      if (!TextUtils.equals(mRoomInfoBean.speakerId, userId)) {
 | 
	
		
			
				|  |  | -                        User user = new User();
 | 
	
		
			
				|  |  | -                        user.setUserId(userId);
 | 
	
		
			
				|  |  | +                        User user = mRoomMicMemberHelper.createUser(userId);
 | 
	
		
			
				|  |  |                          mRoomMicMemberHelper.addOnMicUser(user);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -1231,7 +1265,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |                      //同意连麦申请
 | 
	
		
			
				|  |  |                      presenter.handleAction(LiveRoomMsgConstants.ACTION_AGREE_MIC_APPLY, user);
 | 
	
		
			
				|  |  |                      if (mRoomMicMemberHelper != null) {
 | 
	
		
			
				|  |  | -                        mRoomMicMemberHelper.delApplyUser(user);
 | 
	
		
			
				|  |  | +                        mRoomMicMemberHelper.delApplyUser(user, true);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      updateMicManagerData();
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -1274,6 +1308,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |                  public void onUnderAllMic() {
 | 
	
		
			
				|  |  |                      if (mRoomMicMemberHelper != null) {
 | 
	
		
			
				|  |  |                          mRoomMicMemberHelper.delAllOnMicUser();
 | 
	
		
			
				|  |  | +                        mRoomMicMemberHelper.delAllUserCache();
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      updateMicManagerData();
 | 
	
		
			
				|  |  |                      if (presenter != null) {
 | 
	
	
		
			
				|  | @@ -1497,4 +1532,11 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 | 
	
		
			
				|  |  |      public void onPointerCaptureChanged(boolean hasCapture) {
 | 
	
		
			
				|  |  |          super.onPointerCaptureChanged(hasCapture);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void getMicUserInfo(String userId) {
 | 
	
		
			
				|  |  | +        if (presenter != null) {
 | 
	
		
			
				|  |  | +            presenter.getUserInfoByUserId(userId);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |