|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|