1:修改K歌房

2:修改房间展示每日任务
3:修改页面跳转
4:遗留问题在进入首页的时候出现首页刷新
This commit is contained in:
2025-10-27 20:09:12 +08:00
parent 8631fdbdbf
commit a4032c76ad
106 changed files with 6593 additions and 396 deletions

View File

@@ -35,6 +35,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import io.reactivex.disposables.Disposable;
import org.jetbrains.annotations.NotNull;
/**
* 房间管理器
@@ -102,10 +103,10 @@ public class RoomManager {
if (roomInfo != null) {
// 使用缓存数据直接进入房间
navigateToRoom(context, roomId, password, roomInfo, false);
navigateToRoom(context, roomId, password, roomInfo, false,null);
} else {
// 获取房间数据后进入房间
fetchRoomDataAndEnter(context, roomId, password);
fetchRoomDataAndEnter(context, roomId, password,null);
}
}
@@ -116,19 +117,20 @@ public class RoomManager {
* @param roomId 房间ID
* @param password 房间密码
*/
public void fetchRoomDataAndEnter(Context context, String roomId, String password) {
public void fetchRoomDataAndEnter(Context context, String roomId, String password,String taskId) {
// 显示加载提示
// 这里可以根据需要添加加载对话框
if (CommonAppContext.getInstance().isRoomJoininj){
return;
}
CommonAppContext.getInstance().isRoomJoininj=true;
// 检查是否有有效的缓存数据
RoomInfoResp roomInfo = getCachedRoomData(roomId);
// 检查是否是当前房间且用户在线
// boolean isCurrentRoom = isCurrentRoom(roomId);
if (CommonAppContext.getInstance().playId == null) {
fetchAndJoinRoom(context, roomId, password);
fetchAndJoinRoom(context, roomId, password,taskId);
} else {
if (!CommonAppContext.getInstance().playId.equals(roomId)) {
MessageListenerSingleton.getInstance().joinGroup(roomId);
@@ -137,11 +139,13 @@ public class RoomManager {
CommonAppContext.getInstance().isPlaying = false;
CommonAppContext.getInstance().isRoomJoininj=false;
EventBus.getDefault().post(new RoomOutEvent());
// fetchAndJoinRoom(context, roomId, password);
// return;
} else if (CommonAppContext.getInstance().lable_id.equals("6")) {
upInfo(context, roomId, password, true, roomInfo, true);
upInfo(context, roomId, password, true, roomInfo, true,taskId);
return;
}
isUserOnline(context, roomId, password, roomInfo);
isUserOnline(context, roomId, password, roomInfo,taskId);
}
@@ -195,58 +199,26 @@ public class RoomManager {
// navigateToRoom(context, roomId, password, null);
}
private void upInfo(Context context, String roomId, String password, boolean isOnline, RoomInfoResp roomInfo, boolean isCurrentRoom) {
private void upInfo(Context context, String roomId, String password, boolean isOnline, RoomInfoResp roomInfo, boolean isCurrentRoom,String taskId) {
if (isOnline) {
navigateToRoom(context, roomId, password, roomInfo, isOnline);
RetrofitClient.getInstance().postRoomInfo(roomId, new BaseObserver<RoomInfoResp>() {
@Override
public void onSubscribe(@NotNull Disposable disposable) {
}
@Override
public void onNext(@NotNull RoomInfoResp roomInfoResp) {
navigateToRoom(context, roomId, password, roomInfoResp, false,taskId);
}
});
// navigateToRoom(context, roomId, password, roomInfo, isOnline);
} else {
// CommonAppContext.getInstance().isShow = false;
// CommonAppContext.getInstance().isPlaying = false;
// EventBus.getDefault().post(new RoomOutEvent());
// try {
// Thread.sleep(300);
// } catch (InterruptedException e) {
// Thread.currentThread().interrupt();
// }
fetchAndJoinRoom(context, roomId, password);
fetchAndJoinRoom(context, roomId, password,taskId);
}
// if (isCurrentRoom&& isOnline) {
// if (roomInfo != null) {
// navigateToRoom(context, roomId, password, roomInfo);
// } else {
// // 即使在线,如果没有缓存数据,也需要获取数据
// fetchAndJoinRoom(context, roomId, password);
// }
// return;
// }
// 如果有缓存数据且用户在线,使用缓存数据进入房间
// if (roomInfo != null && isOnline) {
// RetrofitClient.getInstance().postRoomInfo(roomId, new BaseObserver<RoomInfoResp>() {
//
// @Override
// public void onSubscribe(Disposable d) {
//
// }
//
// @Override
// public void onNext(RoomInfoResp roomInfoResp) {
//// cacheRoomData(roomId, roomInfo);
// navigateToRoom(context, roomId, password, roomInfoResp);
// }
// });
// cacheRoomData(roomId, roomInfo);
// navigateToRoom(context, roomId, password, roomInfo);
return;
// }
// 其他情况,获取新的房间数据并加入房间
// fetchAndJoinRoom(context, roomId, password);
}
/**
@@ -256,7 +228,7 @@ public class RoomManager {
* @param roomId 房间ID
* @param password 房间密码
*/
private void fetchAndJoinRoom(Context context, String roomId, String password) {
private void fetchAndJoinRoom(Context context, String roomId, String password,String taskId) {
// 获取房间数据
// 等待一段时间确保退出完成
@@ -266,7 +238,6 @@ public class RoomManager {
// Thread.currentThread().interrupt();
// }
// navigateToRoom(context, roomId, password, null, false);
LogUtils.dTag("RoomActivity", "fetchAndJoinRoom:"+roomId.toString());
RetrofitClient.getInstance().roomGetIn(roomId, password, new BaseObserver<RoomInfoResp>() {
@Override
@@ -292,7 +263,12 @@ public class RoomManager {
AgoraManager.getInstance(context)
.joinRoom(token, roomId, uid, enableMic, enableJs);
cacheRoomData(roomId, resp);
navigateToRoom(context, roomId, password, resp, false);
navigateToRoom(context, roomId, password, resp, false,taskId);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
});
}
@@ -328,8 +304,7 @@ public class RoomManager {
* @param password 房间密码
* @param roomInfo 房间信息
*/
private void navigateToRoom(Context context, String roomId, String password, RoomInfoResp roomInfo, boolean isOnline) {
LogUtils.dTag("RoomActivity", "navigateToRoom"+roomInfo.toString());
private void navigateToRoom(Context context, String roomId, String password, RoomInfoResp roomInfo, boolean isOnline,String taskId) {
try {
// 构建跳转参数
@@ -340,28 +315,23 @@ public class RoomManager {
if (!TextUtils.isEmpty(password)) {
bundle.putString("password", password);
}
if (taskId != null){
bundle.putString("taskId", taskId);
}
if (roomInfo == null){
LogUtils.dTag("RoomActivity", "navigateToRoom:房间信息获取存在问题");
return;
}
if (isOnline){
ARouter.getInstance()
.build(ARouteConstants.ROOM_DETAILS)
.navigation(context);
}else {
// 使用ARouter跳转到房间页面
ARouter.getInstance()
.build(ARouteConstants.ROOM_DETAILS)
.with(bundle)
.navigation(context);
}
} catch (Exception e) {
Logger.e(TAG, "跳转房间页面失败: " + e.getMessage());
}finally {
}
}
@@ -416,7 +386,7 @@ public class RoomManager {
* @param roomId 房间ID
* @return true表示用户在线false表示不在线
*/
private boolean isUserOnline(Context context, String roomId, String password, RoomInfoResp roomInfo) {
private boolean isUserOnline(Context context, String roomId, String password, RoomInfoResp roomInfo,String taskId) {
// 这里应该实现检查用户是否在线的逻辑
// 可以通过检查Agora是否还在房间中或者通过服务端接口查询用户状态等方式实现
// 目前返回false需要根据实际需求实现具体逻辑
@@ -426,6 +396,9 @@ public class RoomManager {
// } catch (InterruptedException e) {
// Thread.currentThread().interrupt();
// }
final boolean[] isOnline = {false};
RetrofitClient.getInstance().getRoomOnline(roomId, "1", "50", new BaseObserver<RoomOnline>() {
@Override
@@ -453,7 +426,8 @@ public class RoomManager {
}
}
}
upInfo(context, roomId, password, isOnline[0], roomInfo, true);
upInfo(context, roomId, password, isOnline[0], roomInfo, true, taskId);
} else {
isOnline[0] = false;
}
@@ -462,11 +436,11 @@ public class RoomManager {
e.printStackTrace();
isOnline[0] = false;
// 即使出现异常也继续执行
upInfo(context, roomId, password, isOnline[0], roomInfo, true);
upInfo(context, roomId, password, isOnline[0], roomInfo, true, taskId);
}
}
});
return isOnline[0];
return false;
}
/**