fix bugs.3

This commit is contained in:
2025-12-05 21:05:01 +08:00
parent b4ffa086fb
commit 60b910c38f
6 changed files with 61 additions and 234 deletions

View File

@@ -184,7 +184,7 @@ public class AgoraManager {
rtcEngine = (RtcEngineEx) RtcEngine.create(config); rtcEngine = (RtcEngineEx) RtcEngine.create(config);
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Failed to create RtcEngine", e); LogUtils.e("AgoraManager", "Failed to create RtcEngine", e);
return; return;
} }
@@ -213,13 +213,13 @@ public class AgoraManager {
"}"); "}");
rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}"); rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}");
} catch (Exception e) { } catch (Exception e) {
Log.w("AgoraManager", "Failed to set parameters", e); LogUtils.w("AgoraManager", "Failed to set parameters", e);
} }
rtcEngine.enableVideo(); rtcEngine.enableVideo();
rtcEngine.setDefaultAudioRoutetoSpeakerphone(true); rtcEngine.setDefaultAudioRoutetoSpeakerphone(true);
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Failed to configure RtcEngine", e); LogUtils.e("AgoraManager", "Failed to configure RtcEngine", e);
} }
} }
} }
@@ -240,7 +240,7 @@ public class AgoraManager {
*/ */
public void joinRoom(String token, String roomId, int uid, boolean isMicrophoneEnabled, boolean isCamerJs) { public void joinRoom(String token, String roomId, int uid, boolean isMicrophoneEnabled, boolean isCamerJs) {
if (rtcEngine == null) { if (rtcEngine == null) {
Log.e("AgoraManager", "RtcEngine not initialized"); LogUtils.e("AgoraManager", "RtcEngine not initialized");
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId()); init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
} }
if (!mRoomId.isEmpty()) { if (!mRoomId.isEmpty()) {
@@ -294,7 +294,7 @@ public class AgoraManager {
rtcEngine.leaveChannel(); rtcEngine.leaveChannel();
} }
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Error during cleanup", e); LogUtils.e("AgoraManager", "Error during cleanup", e);
} finally { } finally {
// 注意不要在这里将rtcEngine设置为null // 注意不要在这里将rtcEngine设置为null
// 应该在destroy方法中处理 // 应该在destroy方法中处理
@@ -563,7 +563,7 @@ public class AgoraManager {
@Override @Override
public void onFirstRemoteAudioFrame(int uid, int elapsed) { public void onFirstRemoteAudioFrame(int uid, int elapsed) {
super.onFirstRemoteAudioFrame(uid, elapsed); super.onFirstRemoteAudioFrame(uid, elapsed);
Log.i("RoomCabinFragment", "onFirstRemoteAudioFrame: uid->" + uid); LogUtils.i("RoomCabinFragment", "onFirstRemoteAudioFrame: uid->" + uid);
} }
@@ -584,7 +584,7 @@ public class AgoraManager {
@Override @Override
public void onRemoteVideoStateChanged(int uid, int state, int reason, int elapsed) { public void onRemoteVideoStateChanged(int uid, int state, int reason, int elapsed) {
super.onRemoteVideoStateChanged(uid, state, reason, elapsed); super.onRemoteVideoStateChanged(uid, state, reason, elapsed);
Log.i("RoomCabinFragment", "onRemoteVideoStateChanged:uid->" + uid + ", state->" + state); LogUtils.i("RoomCabinFragment", "onRemoteVideoStateChanged:uid->" + uid + ", state->" + state);
if (state == Constants.REMOTE_AUDIO_STATE_STOPPED) { if (state == Constants.REMOTE_AUDIO_STATE_STOPPED) {
ColoseCardEvent renderView = new ColoseCardEvent(); ColoseCardEvent renderView = new ColoseCardEvent();
EventBus.getDefault().post(renderView); EventBus.getDefault().post(renderView);
@@ -1002,7 +1002,7 @@ public class AgoraManager {
LogUtils.e("AgoraManager", "isPreload: " + songCode); LogUtils.e("AgoraManager", "isPreload: " + songCode);
// 确保 rtcEngine 已初始化 // 确保 rtcEngine 已初始化
if (rtcEngine == null) { if (rtcEngine == null) {
Log.e("AgoraManager", "RtcEngine not initialized, cannot preload music"); LogUtils.e("AgoraManager", "RtcEngine not initialized, cannot preload music");
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId()); init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
return; return;
} }
@@ -1012,11 +1012,11 @@ public class AgoraManager {
try { try {
musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine); musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine);
if (musicContentCenter == null) { if (musicContentCenter == null) {
Log.e("AgoraManager", "Failed to create musicContentCenter"); LogUtils.e("AgoraManager", "Failed to create musicContentCenter");
return; return;
} }
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Exception creating musicContentCenter", e); LogUtils.e("AgoraManager", "Exception creating musicContentCenter", e);
return; return;
} }
} }
@@ -1026,11 +1026,11 @@ public class AgoraManager {
try { try {
musicPlayer = musicContentCenter.createMusicPlayer(); musicPlayer = musicContentCenter.createMusicPlayer();
if (musicPlayer == null) { if (musicPlayer == null) {
Log.e("AgoraManager", "Failed to create musicPlayer"); LogUtils.e("AgoraManager", "Failed to create musicPlayer");
return; return;
} }
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Exception creating musicPlayer", e); LogUtils.e("AgoraManager", "Exception creating musicPlayer", e);
return; return;
} }
} }
@@ -1039,7 +1039,7 @@ public class AgoraManager {
try { try {
code = musicContentCenter.isPreloaded(mSongCode); code = musicContentCenter.isPreloaded(mSongCode);
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Exception checking if song is preloaded", e); LogUtils.e("AgoraManager", "Exception checking if song is preloaded", e);
return; return;
} }
@@ -1050,13 +1050,13 @@ public class AgoraManager {
executeInBackground(() -> { executeInBackground(() -> {
try { try {
Thread.sleep(3000); // 3秒延迟 Thread.sleep(3000); // 3秒延迟
Log.d("AgoraManager", "Preload result: " + result); LogUtils.d("AgoraManager", "Preload result: " + result);
// 切换回主线程执行后续操作 // 切换回主线程执行后续操作
createTrackedHandler(Looper.getMainLooper()).post(() -> { createTrackedHandler(Looper.getMainLooper()).post(() -> {
isPreload(mSongCode, type); isPreload(mSongCode, type);
}); });
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e); LogUtils.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e);
} }
}); });
} else { } else {
@@ -1069,20 +1069,20 @@ public class AgoraManager {
executeInBackground(() -> { executeInBackground(() -> {
try { try {
Thread.sleep(3000); // 3秒延迟 Thread.sleep(3000); // 3秒延迟
Log.d("AgoraManager", "Preload result: " + result); LogUtils.d("AgoraManager", "Preload result: " + result);
// 切换回主线程执行后续操作 // 切换回主线程执行后续操作
createTrackedHandler(Looper.getMainLooper()).post(() -> { createTrackedHandler(Looper.getMainLooper()).post(() -> {
isPreload(mSongCode, type); isPreload(mSongCode, type);
}); });
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e); LogUtils.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e);
} }
}); });
} else { } else {
try { try {
musicPlayer.open(mSongCode, 0); musicPlayer.open(mSongCode, 0);
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Open music failed: songCode=" + mSongCode, e); LogUtils.e("AgoraManager", "Open music failed: songCode=" + mSongCode, e);
} }
} }
} }
@@ -1091,7 +1091,7 @@ public class AgoraManager {
// 提取音乐播放器状态处理逻辑到单独的方法 // 提取音乐播放器状态处理逻辑到单独的方法
private void handleMusicPlayerState(long songCode) { private void handleMusicPlayerState(long songCode) {
if (musicPlayer == null) { if (musicPlayer == null) {
Log.e("AgoraManager", "Music player is null, cannot handle state"); LogUtils.e("AgoraManager", "Music player is null, cannot handle state");
return; return;
} }
@@ -1114,7 +1114,7 @@ public class AgoraManager {
isPreload(songCode, 1); isPreload(songCode, 1);
}); });
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Error in idle state handling", e); LogUtils.e("AgoraManager", "Error in idle state handling", e);
} }
}); });
break; break;
@@ -1150,7 +1150,7 @@ public class AgoraManager {
break; break;
} }
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Exception handling music player state", e); LogUtils.e("AgoraManager", "Exception handling music player state", e);
} }
} }
@@ -1305,7 +1305,7 @@ public class AgoraManager {
musicList.remove(musicList.get(0)); musicList.remove(musicList.get(0));
}); });
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Error in nextSong", e); LogUtils.e("AgoraManager", "Error in nextSong", e);
} }
}); });
@@ -1393,7 +1393,7 @@ public class AgoraManager {
public static byte[] convertFileToByteArray(File file) { public static byte[] convertFileToByteArray(File file) {
if (file == null || !file.exists()) { if (file == null || !file.exists()) {
Log.e("AgoraManager", "File is null or does not exist"); LogUtils.e("AgoraManager", "File is null or does not exist");
return null; return null;
} }
@@ -1404,16 +1404,16 @@ public class AgoraManager {
byteArray = new byte[(int) file.length()]; byteArray = new byte[(int) file.length()];
int bytesRead = fis.read(byteArray); int bytesRead = fis.read(byteArray);
if (bytesRead != byteArray.length) { if (bytesRead != byteArray.length) {
Log.w("AgoraManager", "Could not read entire file: " + file.getPath()); LogUtils.w("AgoraManager", "Could not read entire file: " + file.getPath());
} }
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Error converting file to byte array", e); LogUtils.e("AgoraManager", "Error converting file to byte array", e);
} finally { } finally {
if (fis != null) { if (fis != null) {
try { try {
fis.close(); fis.close();
} catch (Exception e) { } catch (Exception e) {
Log.e("AgoraManager", "Error closing file input stream", e); LogUtils.e("AgoraManager", "Error closing file input stream", e);
} }
} }
} }

View File

@@ -18,6 +18,8 @@ open class Application : CommonAppContext() {
var LOGUTILS_SAVE_PATH = "" var LOGUTILS_SAVE_PATH = ""
var CRASHUTILS_SAVE_PATH = "" var CRASHUTILS_SAVE_PATH = ""
var isAgoraStop = false
// 单例实例 // 单例实例
companion object { companion object {
@Volatile @Volatile

View File

@@ -302,10 +302,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
btnConfirm.setOnClickListener(v -> { btnConfirm.setOnClickListener(v -> {
topicId=new ArrayList<>(); topicId=new ArrayList<>();
List<HeatedBean> selectedTopics = adapter.getSelectedItems(); List<HeatedBean> selectedTopics = adapter.getSelectedItems();
if (selectedTopics==null || selectedTopics.isEmpty()){
ToastUtils.showShort("请选择话题");
return;
}
// 返回结果给调用页面(可使用接口或 onActivityResult 等方式) // 返回结果给调用页面(可使用接口或 onActivityResult 等方式)
Log.d("Selected Topics", selectedTopics.toString()); Log.d("Selected Topics", selectedTopics.toString());
List<String> selectedTopicIds = new ArrayList<>(); List<String> selectedTopicIds = new ArrayList<>();
@@ -317,7 +314,9 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
topicId.add(topic.getTopic_id()); topicId.add(topic.getTopic_id());
} }
// 示例:更新 UI // 示例:更新 UI
((TextView)findViewById(R.id.tv_ht)).setText("已选:" + TextUtils.join(",", selectedTopicIds)); if (!selectedTopicIds.isEmpty()) {
((TextView) findViewById(R.id.tv_ht)).setText("已选:" + TextUtils.join(",", selectedTopicIds));
}
dialog.dismiss(); dialog.dismiss();
}); });

View File

@@ -1912,7 +1912,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
RoomType.JUKEBOX -> { RoomType.JUKEBOX -> {
mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber) mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber)
// getPitBean(messageEvent, 1)
roomFragment!!.upRoomInfoData(mRoomInfoResp) roomFragment!!.upRoomInfoData(mRoomInfoResp)
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
} }
@@ -3269,7 +3268,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
// TODO:不进入 2025/8/26 加入房间 // TODO:不进入 2025/8/26 加入房间
override fun roomInfo(resp: RoomInfoResp) { override fun roomInfo(resp: RoomInfoResp) {
getHour()
mRoomInfoResp = resp mRoomInfoResp = resp
isOnline = true isOnline = true
password = "" password = ""
@@ -3652,6 +3650,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
roomId2 = event.room_id roomId2 = event.room_id
MessageListenerSingleton.getInstance().joinGroup(event.room_id) MessageListenerSingleton.getInstance().joinGroup(event.room_id)
getHour()
MvpPre?.getRoomIn(event.room_id, "") MvpPre?.getRoomIn(event.room_id, "")
} }
@@ -3693,6 +3692,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
private var roomId2: String? = null //这是点击小时榜后记录的房间id private var roomId2: String? = null //这是点击小时榜后记录的房间id
private fun getHour() { private fun getHour() {
MvpPre?.quitRoom(roomId, SpUtil.getUserId().toString())
ClickUtils.clearAllClickRecords() ClickUtils.clearAllClickRecords()
AgoraManager.getInstance().cleanup() AgoraManager.getInstance().cleanup()
roomId = roomId2 roomId = roomId2
@@ -3769,6 +3772,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
super.onResume() super.onResume()
//在后台关闭礼物弹出,前台恢复礼物弹出 //在后台关闭礼物弹出,前台恢复礼物弹出
GiftDisplayManager.getInstance().setupDisplayView(mBinding?.giftContainer) GiftDisplayManager.getInstance().setupDisplayView(mBinding?.giftContainer)
// AgoraManager.getInstance().cleanup()
// AgoraManager.getInstance()
// .joinRoom(SpUtil.getRtmToken(), roomId, SpUtil.getUserId(), false, false);
// MvpPre?.postRoomInfo(roomId)
} }
fun refreshRoomInfo(roomId: String) { fun refreshRoomInfo(roomId: String) {
@@ -3940,10 +3947,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
setView(resp, true) setView(resp, true)
} }
fun upRoomInfoFragment(resp: RoomInfoResp?) {
this.mRoomInfoResp = resp
}
fun upHeight() { fun upHeight() {
val vpRoomPager: View = mBinding!!.vpRoomPager val vpRoomPager: View = mBinding!!.vpRoomPager
val params = ConstraintLayout.LayoutParams( val params = ConstraintLayout.LayoutParams(

View File

@@ -21,6 +21,7 @@ import com.blankj.utilcode.util.TimeUtils;
import com.xscm.modulemain.R; import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.room.activity.RoomActivity; import com.xscm.modulemain.activity.room.activity.RoomActivity;
import com.xscm.modulemain.databinding.FragmentRoomBinding; import com.xscm.modulemain.databinding.FragmentRoomBinding;
import com.xscm.modulemain.dialog.RoomUserInfoFragment;
import com.xscm.modulemain.dialog.WheatFeedingDialogFragment; import com.xscm.modulemain.dialog.WheatFeedingDialogFragment;
import com.xscm.modulemain.activity.room.contacts.RoomContacts; import com.xscm.modulemain.activity.room.contacts.RoomContacts;
import com.xscm.modulemain.activity.room.presenter.RoomPresenter; import com.xscm.modulemain.activity.room.presenter.RoomPresenter;
@@ -52,6 +53,7 @@ import org.greenrobot.eventbus.ThreadMode;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @author qx * @author qx
@@ -79,14 +81,8 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
private RoomActivity mRoomActivity; private RoomActivity mRoomActivity;
private RoomInfoResp mRoomInfoResp; private RoomInfoResp mRoomInfoResp;
private String password;
private String roomId;
private int role;
private boolean isSwith;
private boolean aBoolean = true;//上下麦按钮 private boolean aBoolean = true;//上下麦按钮
private boolean voive = false;//声音开关
String[] permissions = {Manifest.permission.RECORD_AUDIO};
private WheatFeedingDialogFragment wheatFeedingDialogFragment; private WheatFeedingDialogFragment wheatFeedingDialogFragment;
public SingSongFragment singSongFragment; public SingSongFragment singSongFragment;
@@ -152,12 +148,10 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (EventBus.getDefault().isRegistered(this)) { if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this); EventBus.getDefault().unregister(this);
} }
// ImageUtils.clearDiskCache(getActivity());
// 释放SVGA动画资源 // 释放SVGA动画资源
if (mBinding != null && mBinding.svgaNobility != null) { if (mBinding != null && mBinding.svgaNobility != null) {
mBinding.svgaNobility.release(); mBinding.svgaNobility.release();
} }
releaseAllResources(); releaseAllResources();
} }
@@ -194,21 +188,27 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
// 检查Fragment是否实现了特定的销毁接口 // 检查Fragment是否实现了特定的销毁接口
if (fragment instanceof SingSongFragment) { if (fragment instanceof SingSongFragment) {
((SingSongFragment) fragment).releaseResources(); ((SingSongFragment) fragment).releaseResources();
singSongFragment = null;
} else if (fragment instanceof RoomKtvFragment) { } else if (fragment instanceof RoomKtvFragment) {
((RoomKtvFragment) fragment).releaseResources(); ((RoomKtvFragment) fragment).releaseResources();
ktvFragment = null;
} else if (fragment instanceof FriendshipRoomFragment) { } else if (fragment instanceof FriendshipRoomFragment) {
((FriendshipRoomFragment) fragment).releaseResources(); ((FriendshipRoomFragment) fragment).releaseResources();
friendshipRoomFragment = null;
} else if (fragment instanceof RoomCabinFragment) { } else if (fragment instanceof RoomCabinFragment) {
((RoomCabinFragment) fragment).releaseResources(); ((RoomCabinFragment) fragment).releaseResources();
roomCabinFragment = null;
} else if (fragment instanceof RoomAuctionFragment) { } else if (fragment instanceof RoomAuctionFragment) {
((RoomAuctionFragment) fragment).releaseResources(); ((RoomAuctionFragment) fragment).releaseResources();
roomAuctionFragment = null;
} else if (fragment instanceof RoomJukeboxFragment) { } else if (fragment instanceof RoomJukeboxFragment) {
// ((RoomJukeboxFragment) fragment).releaseResources(); roomJukeboxFragment = null;
}else if (fragment instanceof RoomMentorShipFragment){
mentorShipFragment = null;
} }
} }
} }
// 最后移除所有Fragment // 最后移除所有Fragment
FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
for (Fragment fragment : fragments) { for (Fragment fragment : fragments) {
@@ -237,7 +237,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (EventBus.getDefault().isRegistered(this)) { if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this); EventBus.getDefault().unregister(this);
} }
// 提前释放计时器资源 // 提前释放计时器资源
releaseCountDownTimer(); releaseCountDownTimer();
} }
@@ -333,16 +332,13 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
/// 交友房时间发生延时 /// 交友房时间发生延时
public void friendTimeDelayWithTime(long end_time) { public void friendTimeDelayWithTime(long end_time) {
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
if (friendshipRoomFragment != null) { if (friendshipRoomFragment != null) {
friendshipRoomFragment.friendTimeDelayWithTime(end_time); friendshipRoomFragment.friendTimeDelayWithTime(end_time);
} }
} }
/// 心动值发生变化 /// 心动值发生变化
public void friendHeartNumberDidChanged(List<FriendInfo.HeartList> heartLists) { public void friendHeartNumberDidChanged(List<FriendInfo.HeartList> heartLists) {
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
if (friendshipRoomFragment != null) { if (friendshipRoomFragment != null) {
friendshipRoomFragment.friendHeartNumberDidChanged(heartLists); friendshipRoomFragment.friendHeartNumberDidChanged(heartLists);
} }
@@ -350,14 +346,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
/// 交友房麦位发生变化 /// 交友房麦位发生变化
public void friendSeatDidChanged(List<RoomPitBean> pitArr) { public void friendSeatDidChanged(List<RoomPitBean> pitArr) {
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
if (friendshipRoomFragment != null) { if (friendshipRoomFragment != null) {
friendshipRoomFragment.friendSeatDidChanged(pitArr); friendshipRoomFragment.friendSeatDidChanged(pitArr);
} }
} }
public void upFriendList(List<RoomPitBean> pitArr) { public void upFriendList(List<RoomPitBean> pitArr) {
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
if (friendshipRoomFragment != null) { if (friendshipRoomFragment != null) {
friendshipRoomFragment.upFriendList(); friendshipRoomFragment.upFriendList();
} }
@@ -365,7 +359,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
/// 小黑屋修改倒计时 /// 小黑屋修改倒计时
public void upCabinFragment(long time) { public void upCabinFragment(long time) {
RoomCabinFragment roomCabinFragment = findFragmentByTag(RoomCabinFragment.class);
if (roomCabinFragment != null) if (roomCabinFragment != null)
roomCabinFragment.upCabinFragment(time); roomCabinFragment.upCabinFragment(time);
} }
@@ -376,6 +369,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
private void performLoadSubFragment(QXRoomSeatViewType qxRoomSeatViewType) { private void performLoadSubFragment(QXRoomSeatViewType qxRoomSeatViewType) {
// 释放子Fragment
releaseChildFragments();
this.qxRoomSeatViewType = qxRoomSeatViewType; this.qxRoomSeatViewType = qxRoomSeatViewType;
if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return; if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return;
String typeId = mRoomInfoResp.getRoom_info().getType_id(); String typeId = mRoomInfoResp.getRoom_info().getType_id();
@@ -437,19 +433,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
if (newFragment != null) { if (newFragment != null) {
replaceNestedFragment(newFragment, R.id.container); performFragmentReplacement(newFragment, R.id.container);
} else { } else {
LogUtils.e("newFragment==null"); LogUtils.e("newFragment==null");
} }
setView(); setView();
// if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
// mRoomActivity.switchMic(CommonAppContext.getInstance().isMai ? 1 : 2);
// AgoraManager.getInstance().muteLocalAudioStream(CommonAppContext.getInstance().isMai);
// } else {
// AgoraManager.getInstance().muteLocalAudioStream(true);
// }
} }
/// 这是在进入电影放的时候,隐藏下面的和排麦视图 /// 这是在进入电影放的时候,隐藏下面的和排麦视图
@@ -459,66 +448,16 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
} }
public void replaceNestedFragment(@NonNull Fragment newFragment, int containerId) {
// 检查Fragment是否已经附加到Activity
if (!isAdded() || getActivity() == null) {
// 如果Fragment还没有附加则延迟执行
if (getView() != null) {
getView().post(() -> {
if (isAdded() && getActivity() != null) {
performFragmentReplacement(newFragment, containerId);
}
});
}
return;
}
performFragmentReplacement(newFragment, containerId);
}
private void performFragmentReplacement(@NonNull Fragment newFragment, int containerId) { private void performFragmentReplacement(@NonNull Fragment newFragment, int containerId) {
String tag = newFragment.getClass().getSimpleName(); // 使用类名作为 tag String tag = newFragment.getClass().getSimpleName(); // 使用类名作为 tag
FragmentManager fragmentManager = getChildFragmentManager(); FragmentManager fragmentManager = getChildFragmentManager();
Fragment existingFragment = fragmentManager.findFragmentByTag(tag);
FragmentTransaction transaction = fragmentManager.beginTransaction(); FragmentTransaction transaction = fragmentManager.beginTransaction();
// 如果已添加,隐藏其他 Fragment假设需要隐藏其他 Fragment并显示已添加的 Fragment
for (Fragment fragment : fragmentManager.getFragments()) {
transaction.hide(fragment);
}
if (existingFragment != null) { transaction.replace(containerId, newFragment, tag);
transaction.show(existingFragment);
} else {
transaction.add(containerId, newFragment, tag);
}
transaction.commitNowAllowingStateLoss(); transaction.commitNowAllowingStateLoss();
} }
/**
* 调用特定Fragment的销毁方法
*
* @param fragment 需要销毁的Fragment
*/
private void callSpecificDestroyMethod(Fragment fragment) {
try {
// 尝试调用Fragment的特定销毁方法
if (fragment instanceof SingSongFragment) {
((SingSongFragment) fragment).releaseResources();
} else if (fragment instanceof RoomKtvFragment) {
((RoomKtvFragment) fragment).releaseResources();
} else if (fragment instanceof FriendshipRoomFragment) {
((FriendshipRoomFragment) fragment).releaseResources();
} else if (fragment instanceof RoomCabinFragment) {
((RoomCabinFragment) fragment).releaseResources();
} else if (fragment instanceof RoomAuctionFragment) {
((RoomAuctionFragment) fragment).releaseResources();
}
} catch (Exception e) {
LogUtils.e("callSpecificDestroyMethod error: " + e.getMessage());
}
}
public void updateWheatStatus(RoomPitBean roomPitBean, int pit, boolean isOccupied, boolean isMine) { public void updateWheatStatus(RoomPitBean roomPitBean, int pit, boolean isOccupied, boolean isMine) {
mRoomInfoResp.getRoom_info().getPit_list().set(pit - 1, roomPitBean); mRoomInfoResp.getRoom_info().getPit_list().set(pit - 1, roomPitBean);
@@ -571,55 +510,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
setView(); setView();
} }
private void instView() {//隐藏视图
if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
aBoolean = false;
((RoomActivity) getActivity()).ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding_up);
((RoomActivity) getActivity()).setrlMic(true);
((RoomActivity) getActivity()).setBoolean(aBoolean);
} else {
aBoolean = true;
((RoomActivity) getActivity()).ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding);
((RoomActivity) getActivity()).setrlMic(false);
((RoomActivity) getActivity()).setBoolean(aBoolean);
}
int pitNumber = mRoomInfoResp.getUser_info().getPit_number();
int roleType;
if (pitNumber == 9) {
roleType = mRoomInfoResp.getUser_info().getIs_room_owner() != 0 ? 1 :
mRoomInfoResp.getUser_info().getIs_host() != 0 ? 2 : 0;
} else if (pitNumber != 0 && pitNumber != 9) {
roleType = 3;
} else {
roleType = 0;
}
if (mRoomInfoResp.getUser_info().getPit_number() == 9) {
((RoomActivity) getActivity()).ivSoundEffects(true);
} else {
((RoomActivity) getActivity()).ivSoundEffects(false);
}
if (mRoomInfoResp.getUser_info().getUser_id() == SpUtil.getUserId() && mRoomInfoResp.getUser_info().getPit_number() == 9
&& !mRoomInfoResp.getRoom_info().getType_id().equals("2") && !mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
((RoomActivity) getActivity()).rlMore(true);
} else {
((RoomActivity) getActivity()).rlMore(false);
}
String countText = String.valueOf(mRoomInfoResp.getRoom_info().getQueue_number());
String fullText = countText + "人排队";
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(fullText);
spannableStringBuilder.setSpan(
new ForegroundColorSpan(ContextCompat.getColor(getContext(), com.xscm.moduleutil.R.color.colorPrimary)), // 设置颜色为红色
0, // 起始位置
countText.length(), // 结束位置
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);
((RoomActivity) getActivity()).tvFirst(spannableStringBuilder);
((RoomActivity) getActivity()).setRoleType(roleType, pitNumber);
}
private CountDownTimer mCountDownTimer; private CountDownTimer mCountDownTimer;
@@ -631,22 +521,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
} }
private void queren() {
// 创建并显示确认对话框
new ConfirmDialog(getActivity(),
"提示",
"您将要发起点歌申请?",
"确认",
"取消",
v -> {
// 点击“确认”按钮时执行删除操作
MvpPre.applySong(roomId);
},
v -> {
// 点击“取消”按钮时什么都不做
}, false, 0).show();
}
public void showWheatFeedingDialog(String roomId, int displayMode) { public void showWheatFeedingDialog(String roomId, int displayMode) {
wheatFeedingDialogFragment = new WheatFeedingDialogFragment(); wheatFeedingDialogFragment = new WheatFeedingDialogFragment();
Bundle args = new Bundle(); Bundle args = new Bundle();
@@ -801,8 +675,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
roomActivity.setrlMic(true); roomActivity.setrlMic(true);
if (AgoraManager.getInstance().isLocalAudioEnabled()) { if (AgoraManager.getInstance().isLocalAudioEnabled()) {
roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone); roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone);
} else {
// roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone_off);
} }
} }
} }
@@ -816,56 +688,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
// @Subscribe(threadMode = ThreadMode.MAIN)
public void roomInfoEvent(RoomMessageEvent messageEvent) {
if (messageEvent.getMsgType() == 123) {
// // 获取 PublicScreenEaseChatFragment 实例
ChatRoomFragment publicScreenEaseChatFragment = (ChatRoomFragment) getChildFragmentManager()
.findFragmentByTag("PublicScreenEaseChatFragment");
if (publicScreenEaseChatFragment != null) {
// 调用 someMethod 方法
publicScreenEaseChatFragment.someMethod();
}
}
if (messageEvent.getMsgType() == 1034) {
int count = messageEvent.getText().getCount();
if (count == 0) {
((RoomActivity) getActivity()).tvFirst(new SpannableStringBuilder("0人排队"));
return;
}
String countText = String.valueOf(count);
String fullText = countText + "人排队";
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(fullText);
spannableStringBuilder.setSpan(
new ForegroundColorSpan(ContextCompat.getColor(getContext(), com.xscm.moduleutil.R.color.colorPrimary)), // 设置颜色为红色
0, // 起始位置
countText.length(), // 结束位置
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);
((RoomActivity) getActivity()).tvFirst(spannableStringBuilder);
} else if (messageEvent.getMsgType() == 1016) {
if (messageEvent.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
if (messageEvent.getText().getIs_mute_pit() == 1) {
((RoomActivity) getActivity()).switchMic(2);
}
mRoomInfoResp.getUser_info().setIs_mute_pit(String.valueOf(messageEvent.getText().getIs_mute_pit()));
mRoomInfoResp.getUser_info().setIs_mute(String.valueOf(messageEvent.getText().getIs_mute()));
}
} else if (messageEvent.getMsgType() == 1007) {
mRoomInfoResp.getUser_info().setIs_host(1);
} else if (messageEvent.getMsgType() == 1018) {
mRoomInfoResp.getUser_info().setIs_host(0);
} else if (messageEvent.getMsgType() == 1024) {
mRoomInfoResp.getRoom_auction().getAuction_list().clear();
mRoomInfoResp.getRoom_auction().getAuction_list().addAll(messageEvent.getText().getAuction_list());
}
}
// TODO: 2025/9/3 小黑屋火热值更新 // TODO: 2025/9/3 小黑屋火热值更新
public void handleMsgType1028(RoomMessageEvent messageEvent) { public void handleMsgType1028(RoomMessageEvent messageEvent) {
RoomCabinFragment cabinFragment = (RoomCabinFragment) getChildFragmentManager() RoomCabinFragment cabinFragment = (RoomCabinFragment) getChildFragmentManager()

View File

@@ -508,13 +508,14 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
if (userInfo != null) { if (userInfo != null) {
mBinding.tvGh.setVisibility(VISIBLE); mBinding.tvGh.setVisibility(VISIBLE);
mBinding.tvJoinGuild.setVisibility(GONE); mBinding.tvJoinGuild.setVisibility(GONE);
if (userInfo.getGuild_name() == null ||userInfo.getGuild_name().isEmpty()) { if (userInfo.getGuild_name() == null || userInfo.getGuild_name().isEmpty()) {
mBinding.tvGh.setText("所属公会:无"); mBinding.tvGh.setText("所属公会:无");
} else { } else {
if (userInfo.getUser_id() != SpUtil.getUserId() || (userInfo.getMe_guild_name() != null && !userInfo.getMe_guild_name().isEmpty())) { if (userInfo.getUser_id() == SpUtil.getUserId()){
mBinding.tvJoinGuild.setVisibility(GONE);
}else if (userInfo.getMe_guild_name() == null || userInfo.getMe_guild_name().isEmpty()){
mBinding.tvJoinGuild.setVisibility(VISIBLE); mBinding.tvJoinGuild.setVisibility(VISIBLE);
} }
mBinding.tvGh.setText("所属公会:" + userInfo.getGuild_name()); mBinding.tvGh.setText("所属公会:" + userInfo.getGuild_name());
} }
} else { } else {