|
@@ -151,6 +151,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
private InputBarDialog mInputBarDialog;
|
|
|
private int currentLiveMode = LiveConfig.LIVE_MODE_PREVIEW;//默认是预览模式
|
|
|
private int currentLiveStatus = LiveConfig.LIVE_STATUS_NORMAL;
|
|
|
+ private boolean isAutoScrollToLast = true;
|
|
|
private RongIMClient.ConnectionStatusListener connectStatusListener = new RongIMClient.ConnectionStatusListener() {
|
|
|
@Override
|
|
|
public void onChanged(ConnectionStatus status) {
|
|
@@ -382,6 +383,21 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
private void initListener() {
|
|
|
IMCenter.getInstance().addConnectionStatusListener(connectStatusListener);
|
|
|
SoftKeyboardUtil.registerSoftInputChangedListener(getWindow(), this);
|
|
|
+ recyclerMsg.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
|
|
+ @Override
|
|
|
+ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
|
|
|
+ super.onScrollStateChanged(recyclerView, newState);
|
|
|
+ if (mLinearLayoutManager == null || mMessageAdapter == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int lastCompletelyVisibleItemPosition = mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
|
|
|
+ if (lastCompletelyVisibleItemPosition == mMessageAdapter.getMessageSize() - 1) {
|
|
|
+ isAutoScrollToLast = true;
|
|
|
+ } else {
|
|
|
+ isAutoScrollToLast = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
private void bindLiveStatusReport() {
|
|
@@ -690,7 +706,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
|
|
|
if (id == R.id.iv_mic) {
|
|
|
//连麦管理
|
|
|
-// showMicManagerDialog();
|
|
|
+ showMicManagerDialog();
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -745,6 +761,14 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
if (joinRoomMessage == null) {
|
|
|
return;
|
|
|
}
|
|
|
+ //加入房间之前把申请列表删除
|
|
|
+ String userId = joinRoomMessage.getUserId();
|
|
|
+ if (TextUtils.isEmpty(userId) && joinRoomMessage.getUserInfo() != null) {
|
|
|
+ userId = joinRoomMessage.getUserInfo().getUserId();
|
|
|
+ }
|
|
|
+ if (!TextUtils.isEmpty(userId)) {
|
|
|
+ delApplyUser(userId);
|
|
|
+ }
|
|
|
if (isCanShowBarrage()) {
|
|
|
mTvJoinBarrage.setText(getString(R.string.enter_live_tip_str, LiveMemberHelper.getMessageName(joinRoomMessage)));
|
|
|
showBarrageViewAnim(mFlJoinBarrage);
|
|
@@ -864,8 +888,12 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
recyclerMsg.post(new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- if (recyclerMsg != null) {
|
|
|
- recyclerMsg.scrollToPosition(mMessageAdapter.getItemCount() - 1);
|
|
|
+ if (isAutoScrollToLast) {
|
|
|
+ if (recyclerMsg != null) {
|
|
|
+ recyclerMsg.scrollToPosition(mMessageAdapter.getItemCount() - 1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.i("pq", "收到消息,不触发滚动");
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -1000,6 +1028,16 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private void delApplyUser(String targetUserId) {
|
|
|
+ runOnUiThread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ mRoomMicMemberHelper.delApplyUser(targetUserId);
|
|
|
+ updateMicManagerData();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void onSwitchRole(String userId, RCRTCLiveRole role) {
|
|
|
Log.i("pq", "receive onSwitchRole:" + role.getType());
|
|
@@ -1021,24 +1059,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, false);
|
|
|
-// 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
|
|
@@ -1064,10 +1102,18 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void updateMicManagerData() {
|
|
|
- if (llMicContainer != null) {
|
|
|
- return;
|
|
|
+ @Override
|
|
|
+ public void onUserLeaveRoom(String targetUserId) {
|
|
|
+ //用户离开直播间消息
|
|
|
+ if (presenter != null && mRoomMicMemberHelper != null) {
|
|
|
+ //删除连麦申请
|
|
|
+ if(!TextUtils.isEmpty(targetUserId)){
|
|
|
+ delApplyUser(targetUserId);
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateMicManagerData() {
|
|
|
if (mLiveMicManagerDialog != null) {
|
|
|
mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
|
|
|
mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
|