1:修改当在游戏房间的时候,不能点击其他房间进入,

2:在进入房间后,退出上一个房间的各种调用
This commit is contained in:
2025-12-01 18:41:14 +08:00
parent be60810221
commit 980ec43e6c
7 changed files with 150 additions and 52 deletions

View File

@@ -3198,6 +3198,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
override fun roomInfo(resp: RoomInfoResp) {
if (!isSwitchRoom)
return
getHour()
mRoomInfoResp = resp
isOnline = true
password = ""
@@ -3555,14 +3556,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
is RoomHourBean.RoomListBean -> {
ClickUtils.clearAllClickRecords()
AgoraManager.getInstance().cleanup()
roomId = event.room_id
isSwitchRoom = true
// 重新连接房间相关服务
resumeRoomState()
publicScreenFragment?.onDestroy()
publicScreenFragment = null
if (event.room_id== CommonAppContext.getInstance().playId){
return
}
roomId2=event.room_id
MvpPre?.getRoomIn(event.room_id, "")
}
@@ -3601,6 +3599,19 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
}
}
private var roomId2: String? = null //这是点击小时榜后记录的房间id
private fun getHour(){
ClickUtils.clearAllClickRecords()
AgoraManager.getInstance().cleanup()
roomId = roomId2
isSwitchRoom = true
// 重新连接房间相关服务
resumeRoomState()
publicScreenFragment?.onDestroy()
publicScreenFragment = null
}
private var giftGiveEvent: RoomGiftGiveEvent? = null

View File

@@ -1,7 +1,10 @@
package com.xscm.modulemain.activity.room.presenter;
import static com.liulishuo.okdownload.OkDownloadProvider.context;
import android.content.Context;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.LogUtils;
import com.xscm.modulemain.activity.room.contacts.RoomContacts;
import com.xscm.moduleutil.base.CommonAppContext;
@@ -10,6 +13,7 @@ import com.xscm.moduleutil.bean.RoomCharmRankBean;
import com.xscm.moduleutil.bean.UserOnlineStatusBean;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
import com.xscm.moduleutil.bean.room.RoomOnline;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.http.APIException;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.http.RetrofitClient;
@@ -43,26 +47,31 @@ public class RoomPresenter extends BasePresenter<RoomContacts.View> implements R
@Override
public void onNext(RoomInfoResp resp) {
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId();
String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要
String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID
String rtm_token=resp.getUser_info().getAgora_rtm_token();
SpUtil.setRtmToken(rtm_token);
int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID
boolean enableMic = false; // 是否开启麦克风
boolean enableJs=false; // 是否开启角色
if (resp.getUser_info().getPit_number()!=0){
enableJs=true;
}
LogUtils.e("token",token);
LogUtils.e("roomId:",roomId);
AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs);
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().roomInfo(resp);
if(!resp.getRoom_id().isEmpty()){
queren(resp.getRoom_id(),resp.getMsg());
}else {
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId();
String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要
String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID
String rtm_token = resp.getUser_info().getAgora_rtm_token();
SpUtil.setRtmToken(rtm_token);
int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID
boolean enableMic = false; // 是否开启麦克风
boolean enableJs = false; // 是否开启角色
if (resp.getUser_info().getPit_number() != 0) {
enableJs = true;
}
LogUtils.e("token", token);
LogUtils.e("roomId:", roomId);
AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic, enableJs);
if (MvpRef == null) {
MvpRef = new WeakReference<>(mView);
}
MvpRef.get().roomInfo(resp);
}
}
@Override
public void onError(Throwable e) {
@@ -84,6 +93,21 @@ public class RoomPresenter extends BasePresenter<RoomContacts.View> implements R
});
}
private void queren(String roomId,String msg){
new ConfirmDialog(ActivityUtils.getTopActivity(),
"提示",
msg,
CommonAppContext.getInstance().playId.equals(roomId) ?"":"去上一个房间",
CommonAppContext.getInstance().playId.equals(roomId) ?"取消":"在想想",
v -> {
// 点击“确认”按钮时执行删除操作
getRoomIn(roomId,"");
},
v -> {
// 点击“取消”按钮时什么都不做
}, false, 0).show();
}
// TODO: 2025/6/10 在线列表
@Override
public void getRoomOnline(String roomId, String page, String page_limit) {