1:修改BUG

This commit is contained in:
2025-09-23 14:39:49 +08:00
parent f12ed5ef84
commit 1c54f0c072
120 changed files with 3821 additions and 869 deletions

View File

@@ -22,6 +22,7 @@ import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexWrap;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.base.RoomManager;
import com.xscm.moduleutil.bean.RecordSection;
import com.xscm.moduleutil.bean.RoomSearchResp;
import com.xscm.moduleutil.bean.UserResultResp;
@@ -151,7 +152,9 @@ public class SearchActivity extends BaseMvpActivity<SearchPresenter, ActivitySea
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
RoomSearchResp item = mSearchRoomResultAdapter.getItem(position);
if (item != null) {
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "搜索界面").withString("roomId", item.getId()).navigation();
RoomManager.getInstance().fetchRoomDataAndEnter(getApplicationContext(), item.getId() ,"");
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "搜索界面").withString("roomId", item.getId()).navigation();
}
}
});

View File

@@ -384,13 +384,19 @@ public class PlaceholderFragment extends BaseMvpFragment<PlaceholderPresenter, F
imUser1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).withString("userId", data.getUser_id()).navigation();
// ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).withString("userId", data.getUser_id()).navigation();
}
});
} else if (type.equals("1") || type.equals("2")) {
tvUsername1.setText(data.getNickname());
ImageUtils.loadHeadCC(data.getAvatar(), imUser1);
tvId1.setText(data.getUser_code() != null ? "ID:" + data.getUser_code() : "");
imUser1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).withString("userId", data.getUser_id()).navigation();
}
});
}
// else if (type.equals("3")) {
// tvUsername1.setText(data.getGuild_name());

View File

@@ -24,36 +24,28 @@ public class HotAdapter extends BaseMultiItemQuickAdapter<TopRoom, BaseViewHolde
super(data);
// addItemType(1, R.layout.index_rv_item_room_hot1);
addItemType(1, R.layout.index_rv_item_room_hot0);
}
// 定义点击事件监听器接口
public interface OnRoomClickListener {
void onRoomClick(TopRoom room, int position);
}
// 声明监听器实例
private OnRoomClickListener mOnRoomClickListener;
@Override
protected void convert(BaseViewHolder helper, TopRoom item) {
ImageUtils.loadHeadCC(item.getRoom_cover(), helper.getView(R.id.iv_follow_bg));
// if (item.getLabel_id().equals("23")){
// helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.diang_c);
// }else if (item.getLabel_id().equals("108")){
// helper.setImageResource(R.id.iv_type, R.mipmap.jiaoyou);
// }else if (item.getLabel_id().equals("101")){
// helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.youxi);
// }else if (item.getLabel_id().equals("120")){//女神
// helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.nvshen);
// }else if (item.getLabel_id().equals("121")){//男神
// helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.nans);
// }
TextView tv_name = helper.getView(R.id.tv_name);
tv_name.setText(item.getRoom_name());
tv_name.setSelected(true);
// helper.setText(R.id.tv_name, item.getRoom_name());
ImageView iv = helper.getView(R.id.iv_play);
if (item.getUser_list()!=null && item.getUser_list().size() > 0) {
iv.setVisibility(View.VISIBLE);
// ImageUtils.loadRes(com.xscm.moduleutil.R.drawable.voice_play, iv);
}else {
iv.setVisibility(GONE);
}
@@ -64,8 +56,11 @@ public class HotAdapter extends BaseMultiItemQuickAdapter<TopRoom, BaseViewHolde
@Override
public void onClick(View v) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getId()).navigation();
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页热门列表").withString("roomId", item.getRoom_id()).navigation();
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页热门列表").withString("roomId", item.getRoom_id()).navigation();
// 如果外部设置了监听器,则触发外部监听器
if (mOnRoomClickListener != null) {
mOnRoomClickListener.onRoomClick(item, helper.getAdapterPosition());
}
}
});
@@ -79,7 +74,10 @@ public class HotAdapter extends BaseMultiItemQuickAdapter<TopRoom, BaseViewHolde
return String.valueOf(hotValue);
}
}
// 提供设置监听器的方法
public void setOnRoomClickListener(OnRoomClickListener listener) {
this.mOnRoomClickListener = listener;
}
@Override
public void onViewRecycled(@NonNull BaseViewHolder holder) {
Logger.e("onViewRecycled", "onViewRecycled");

View File

@@ -1,5 +1,6 @@
package com.example.modulevoice.adapter;
import static android.app.PendingIntent.getActivity;
import static android.view.View.GONE;
import android.view.View;
@@ -9,6 +10,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
import com.xscm.moduleutil.base.RoomManager;
import com.xscm.moduleutil.bean.RoomSearchResp;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ImageUtils;
@@ -40,8 +42,10 @@ public class SearchRoomResultAdapter extends BaseQuickAdapter<RoomSearchResp, Ba
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RoomManager.getInstance().fetchRoomDataAndEnter(mContext.getApplicationContext(), item.getId() ,"");
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getId()).navigation();
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页热门列表").withString("roomId", item.getId()).navigation();
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页热门列表").withString("roomId", item.getId()).navigation();
}
});

View File

@@ -7,6 +7,7 @@ import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.HomeBean;
import com.xscm.moduleutil.bean.TopRoom;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
import java.util.List;
@@ -19,6 +20,12 @@ public class HotListContacts {
void finishRefreshLoadMore();
void getMoreRoomList(List<HomeBean> data);
void roomInfo(RoomInfoResp resp);
void showPasswordDialog();
void enterFail();
}
public interface IHotListPre extends IPresenter {
@@ -27,5 +34,7 @@ public class HotListContacts {
void getMoreRoomList(String userId);
void getRoomListTow();
void getRoomIn(String roomId, String password);
}
}

View File

@@ -14,11 +14,15 @@ import com.example.modulevoice.contacts.HotListContacts;
import com.example.modulevoice.databinding.FragmentHotListBinding;
import com.example.modulevoice.presenter.HotListPresenter;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.base.RoomManager;
import com.xscm.moduleutil.bean.HomeBean;
import com.xscm.moduleutil.bean.TopRoom;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import com.xscm.moduleutil.utils.ClickUtils;
import java.util.ArrayList;
import java.util.List;
@@ -104,13 +108,32 @@ public class HotListFragment extends BaseMvpFragment<HotListPresenter, FragmentH
MvpPre.getRoomList(2, page+"", "20", "1", label_id);
}
});
mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
mAdapter.setOnRoomClickListener(new HotAdapter.OnRoomClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
public void onRoomClick(TopRoom room, int position) {
if ( ClickUtils.isFastDoubleClick()){
return;
}
// 添加索引有效性检查
if (position < 0 || position >= mAdapter.getData().size()) {
return;
}
TopRoom item = mAdapter.getItem(position);
if (item != null) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getId()).navigation();
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页热门列表").withString("roomId", item.getRoom_id()).navigation();
if (item != null ) {
// MessageListenerSingleton.getInstance().joinGroup(item.getRoom_id());
// RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), item.getRoom_id() +"","");
MessageListenerSingleton.getInstance().joinGroup(item.getRoom_id());
// 等待一段时间确保退出完成
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), item.getRoom_id(), "");
// MvpPre.getRoomIn(item.getRoom_id(), "");
}
}
});
@@ -161,4 +184,19 @@ public class HotListFragment extends BaseMvpFragment<HotListPresenter, FragmentH
public void getMoreRoomList(List<HomeBean> data) {
}
@Override
public void roomInfo(RoomInfoResp resp) {
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页热门列表").withSerializable("roomInfo", resp).withString("roomId", resp.getRoom_info().getRoom_id()).navigation();
}
@Override
public void showPasswordDialog() {
}
@Override
public void enterFail() {
}
}

View File

@@ -29,6 +29,7 @@ import com.example.modulevoice.presenter.VoiceCategoryPresenter;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.base.RoomManager;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.RoomTypeModel;
import com.xscm.moduleutil.bean.TopRoom;
@@ -151,19 +152,14 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
carouselBannerAdapter.setOnItemClickListener((view, data, position) -> {
// 示例:跳转到房间详情页
if (data != null) {
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS)
.withString("form", "首页热门列表")
.withString("roomId", data.getRoom_id())
.navigation();
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), data.getRoom_id() ,"");
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS)
// .withString("form", "首页热门列表")
// .withString("roomId", data.getRoom_id())
// .navigation();
}
});
// mBinding.marqueeView.setOnItemClickListener(new MarqueeView.OnItemClickListener() {
// @Override
// public void onItemClick(int position, TextView textView) {
//
// ToastUtils.show("点击了第 " + position + " 个 item");
// }
// });
mBinding.tvWg.setOnClickListener(v -> {
if (mBinding.marqueeView == null || mqttList == null || mqttList.isEmpty()) {
// 可以选择在这里添加日志或提示
@@ -182,11 +178,13 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
if (item != null) { // 再次检查 item 是否为 null
String roomId = item.getRoom_id(); // 或者 item.getRoomId(); 确保方法名正确
if (roomId != null && !roomId.isEmpty()) { // 检查 roomId 是否有效
ARouter.getInstance()
.build(ARouteConstants.ROOM_DETAILS)
.withString("form", "首页热门列表")
.withString("roomId", roomId)
.navigation();
RoomManager.getInstance().fetchRoomDataAndEnter(getActivity(), roomId,"");
// ARouter.getInstance()
// .build(ARouteConstants.ROOM_DETAILS)
// .withString("form", "首页热门列表")
// .withString("roomId", roomId)
// .navigation();
} else {
// Log.d(TAG, "Room ID is null or empty for item at position: " + position);
}

View File

@@ -2,11 +2,16 @@ package com.example.modulevoice.presenter;
import android.content.Context;
import com.blankj.utilcode.util.LogUtils;
import com.example.modulevoice.contacts.HotListContacts;
import com.google.gson.reflect.TypeToken;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.TopRoom;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
import com.xscm.moduleutil.http.APIException;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import com.xscm.moduleutil.rtc.AgoraManager;
import com.xscm.moduleutil.utils.GsonUtils;
import com.xscm.moduleutil.utils.SpUtil;
@@ -58,6 +63,68 @@ public class HotListPresenter extends BasePresenter<HotListContacts.View> implem
});
}
// TODO: 2025/6/10 加入房间
@Override
public void getRoomIn(String roomId, String password) {
// Type listType = new TypeToken<RoomInfoResp>() {}.getType();
// RoomInfoResp restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtil.getRoomInfoResp(), listType);
// if (restoredRoomModels!= null ) {
// MvpRef.get().roomInfo(restoredRoomModels);
// }
api.roomGetIn(roomId, password, new BaseObserver<RoomInfoResp>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@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);
// 初始化 Agora 并加入房间
AgoraManager.getInstance(getView().getSelfActivity())
.joinRoom(token, roomId, uid, enableMic,enableJs);
// 2. 加入房间
// rtcCore.joinRoom(token, roomId, uid, enableMic);
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().roomInfo(resp);
}
@Override
public void onError(Throwable e) {
super.onError(e);
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
if (e instanceof APIException) {
APIException apiException = (APIException) e;
if (apiException.getCode() == 10000) {
MvpRef.get().showPasswordDialog();
} else {
MvpRef.get().enterFail();
}
} else {
MvpRef.get().enterFail();
}
}
});
}
@Override
public void getMoreRoomList(String userId) {
// Type listType = new TypeToken<List<HomeBean>>() {}.getType();