fix bugs.3
This commit is contained in:
@@ -184,7 +184,7 @@ public class AgoraManager {
|
||||
|
||||
rtcEngine = (RtcEngineEx) RtcEngine.create(config);
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Failed to create RtcEngine", e);
|
||||
LogUtils.e("AgoraManager", "Failed to create RtcEngine", e);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -213,13 +213,13 @@ public class AgoraManager {
|
||||
"}");
|
||||
rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}");
|
||||
} catch (Exception e) {
|
||||
Log.w("AgoraManager", "Failed to set parameters", e);
|
||||
LogUtils.w("AgoraManager", "Failed to set parameters", e);
|
||||
}
|
||||
|
||||
rtcEngine.enableVideo();
|
||||
rtcEngine.setDefaultAudioRoutetoSpeakerphone(true);
|
||||
} 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) {
|
||||
if (rtcEngine == null) {
|
||||
Log.e("AgoraManager", "RtcEngine not initialized");
|
||||
LogUtils.e("AgoraManager", "RtcEngine not initialized");
|
||||
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
}
|
||||
if (!mRoomId.isEmpty()) {
|
||||
@@ -294,7 +294,7 @@ public class AgoraManager {
|
||||
rtcEngine.leaveChannel();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Error during cleanup", e);
|
||||
LogUtils.e("AgoraManager", "Error during cleanup", e);
|
||||
} finally {
|
||||
// 注意:不要在这里将rtcEngine设置为null
|
||||
// 应该在destroy方法中处理
|
||||
@@ -563,7 +563,7 @@ public class AgoraManager {
|
||||
@Override
|
||||
public void onFirstRemoteAudioFrame(int uid, int 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
|
||||
public void onRemoteVideoStateChanged(int uid, int state, int reason, int 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) {
|
||||
ColoseCardEvent renderView = new ColoseCardEvent();
|
||||
EventBus.getDefault().post(renderView);
|
||||
@@ -1002,7 +1002,7 @@ public class AgoraManager {
|
||||
LogUtils.e("AgoraManager", "isPreload: " + songCode);
|
||||
// 确保 rtcEngine 已初始化
|
||||
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());
|
||||
return;
|
||||
}
|
||||
@@ -1012,11 +1012,11 @@ public class AgoraManager {
|
||||
try {
|
||||
musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine);
|
||||
if (musicContentCenter == null) {
|
||||
Log.e("AgoraManager", "Failed to create musicContentCenter");
|
||||
LogUtils.e("AgoraManager", "Failed to create musicContentCenter");
|
||||
return;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Exception creating musicContentCenter", e);
|
||||
LogUtils.e("AgoraManager", "Exception creating musicContentCenter", e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1026,11 +1026,11 @@ public class AgoraManager {
|
||||
try {
|
||||
musicPlayer = musicContentCenter.createMusicPlayer();
|
||||
if (musicPlayer == null) {
|
||||
Log.e("AgoraManager", "Failed to create musicPlayer");
|
||||
LogUtils.e("AgoraManager", "Failed to create musicPlayer");
|
||||
return;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Exception creating musicPlayer", e);
|
||||
LogUtils.e("AgoraManager", "Exception creating musicPlayer", e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1039,7 +1039,7 @@ public class AgoraManager {
|
||||
try {
|
||||
code = musicContentCenter.isPreloaded(mSongCode);
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Exception checking if song is preloaded", e);
|
||||
LogUtils.e("AgoraManager", "Exception checking if song is preloaded", e);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1050,13 +1050,13 @@ public class AgoraManager {
|
||||
executeInBackground(() -> {
|
||||
try {
|
||||
Thread.sleep(3000); // 3秒延迟
|
||||
Log.d("AgoraManager", "Preload result: " + result);
|
||||
LogUtils.d("AgoraManager", "Preload result: " + result);
|
||||
// 切换回主线程执行后续操作
|
||||
createTrackedHandler(Looper.getMainLooper()).post(() -> {
|
||||
isPreload(mSongCode, type);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e);
|
||||
LogUtils.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -1069,20 +1069,20 @@ public class AgoraManager {
|
||||
executeInBackground(() -> {
|
||||
try {
|
||||
Thread.sleep(3000); // 3秒延迟
|
||||
Log.d("AgoraManager", "Preload result: " + result);
|
||||
LogUtils.d("AgoraManager", "Preload result: " + result);
|
||||
// 切换回主线程执行后续操作
|
||||
createTrackedHandler(Looper.getMainLooper()).post(() -> {
|
||||
isPreload(mSongCode, type);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e);
|
||||
LogUtils.e("AgoraManager", "Preload song failed: songCode=" + mSongCode, e);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
musicPlayer.open(mSongCode, 0);
|
||||
} 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) {
|
||||
if (musicPlayer == null) {
|
||||
Log.e("AgoraManager", "Music player is null, cannot handle state");
|
||||
LogUtils.e("AgoraManager", "Music player is null, cannot handle state");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1114,7 +1114,7 @@ public class AgoraManager {
|
||||
isPreload(songCode, 1);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Error in idle state handling", e);
|
||||
LogUtils.e("AgoraManager", "Error in idle state handling", e);
|
||||
}
|
||||
});
|
||||
break;
|
||||
@@ -1150,7 +1150,7 @@ public class AgoraManager {
|
||||
break;
|
||||
}
|
||||
} 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));
|
||||
});
|
||||
} 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) {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1404,16 +1404,16 @@ public class AgoraManager {
|
||||
byteArray = new byte[(int) file.length()];
|
||||
int bytesRead = fis.read(byteArray);
|
||||
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) {
|
||||
Log.e("AgoraManager", "Error converting file to byte array", e);
|
||||
LogUtils.e("AgoraManager", "Error converting file to byte array", e);
|
||||
} finally {
|
||||
if (fis != null) {
|
||||
try {
|
||||
fis.close();
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Error closing file input stream", e);
|
||||
LogUtils.e("AgoraManager", "Error closing file input stream", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ open class Application : CommonAppContext() {
|
||||
var LOGUTILS_SAVE_PATH = ""
|
||||
var CRASHUTILS_SAVE_PATH = ""
|
||||
|
||||
var isAgoraStop = false
|
||||
|
||||
// 单例实例
|
||||
companion object {
|
||||
@Volatile
|
||||
|
||||
@@ -302,10 +302,7 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
||||
btnConfirm.setOnClickListener(v -> {
|
||||
topicId=new ArrayList<>();
|
||||
List<HeatedBean> selectedTopics = adapter.getSelectedItems();
|
||||
if (selectedTopics==null || selectedTopics.isEmpty()){
|
||||
ToastUtils.showShort("请选择话题");
|
||||
return;
|
||||
}
|
||||
|
||||
// 返回结果给调用页面(可使用接口或 onActivityResult 等方式)
|
||||
Log.d("Selected Topics", selectedTopics.toString());
|
||||
List<String> selectedTopicIds = new ArrayList<>();
|
||||
@@ -317,7 +314,9 @@ public class ReleaseActivity extends BaseMvpActivity<ReleasePresenter, ActivityR
|
||||
topicId.add(topic.getTopic_id());
|
||||
}
|
||||
// 示例:更新 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();
|
||||
});
|
||||
|
||||
|
||||
@@ -1912,7 +1912,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
|
||||
RoomType.JUKEBOX -> {
|
||||
mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber)
|
||||
// getPitBean(messageEvent, 1)
|
||||
roomFragment!!.upRoomInfoData(mRoomInfoResp)
|
||||
roomFragment?.handleRoomMessage(messageEvent)
|
||||
}
|
||||
@@ -3269,7 +3268,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
|
||||
// TODO:不进入 2025/8/26 加入房间
|
||||
override fun roomInfo(resp: RoomInfoResp) {
|
||||
getHour()
|
||||
mRoomInfoResp = resp
|
||||
isOnline = true
|
||||
password = ""
|
||||
@@ -3652,6 +3650,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
|
||||
roomId2 = event.room_id
|
||||
MessageListenerSingleton.getInstance().joinGroup(event.room_id)
|
||||
getHour()
|
||||
MvpPre?.getRoomIn(event.room_id, "")
|
||||
}
|
||||
|
||||
@@ -3693,6 +3692,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
private var roomId2: String? = null //这是点击小时榜后记录的房间id
|
||||
|
||||
private fun getHour() {
|
||||
|
||||
MvpPre?.quitRoom(roomId, SpUtil.getUserId().toString())
|
||||
|
||||
|
||||
ClickUtils.clearAllClickRecords()
|
||||
AgoraManager.getInstance().cleanup()
|
||||
roomId = roomId2
|
||||
@@ -3769,6 +3772,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
super.onResume()
|
||||
//在后台关闭礼物弹出,前台恢复礼物弹出
|
||||
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) {
|
||||
@@ -3940,10 +3947,6 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
setView(resp, true)
|
||||
}
|
||||
|
||||
fun upRoomInfoFragment(resp: RoomInfoResp?) {
|
||||
this.mRoomInfoResp = resp
|
||||
}
|
||||
|
||||
fun upHeight() {
|
||||
val vpRoomPager: View = mBinding!!.vpRoomPager
|
||||
val params = ConstraintLayout.LayoutParams(
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.blankj.utilcode.util.TimeUtils;
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.activity.room.activity.RoomActivity;
|
||||
import com.xscm.modulemain.databinding.FragmentRoomBinding;
|
||||
import com.xscm.modulemain.dialog.RoomUserInfoFragment;
|
||||
import com.xscm.modulemain.dialog.WheatFeedingDialogFragment;
|
||||
import com.xscm.modulemain.activity.room.contacts.RoomContacts;
|
||||
import com.xscm.modulemain.activity.room.presenter.RoomPresenter;
|
||||
@@ -52,6 +53,7 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
@@ -79,14 +81,8 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
private RoomActivity mRoomActivity;
|
||||
private RoomInfoResp mRoomInfoResp;
|
||||
private String password;
|
||||
private String roomId;
|
||||
private int role;
|
||||
private boolean isSwith;
|
||||
|
||||
private boolean aBoolean = true;//上下麦按钮
|
||||
private boolean voive = false;//声音开关
|
||||
String[] permissions = {Manifest.permission.RECORD_AUDIO};
|
||||
private WheatFeedingDialogFragment wheatFeedingDialogFragment;
|
||||
|
||||
public SingSongFragment singSongFragment;
|
||||
@@ -152,12 +148,10 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
// ImageUtils.clearDiskCache(getActivity());
|
||||
// 释放SVGA动画资源
|
||||
if (mBinding != null && mBinding.svgaNobility != null) {
|
||||
mBinding.svgaNobility.release();
|
||||
}
|
||||
|
||||
releaseAllResources();
|
||||
}
|
||||
|
||||
@@ -194,21 +188,27 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
// 检查Fragment是否实现了特定的销毁接口
|
||||
if (fragment instanceof SingSongFragment) {
|
||||
((SingSongFragment) fragment).releaseResources();
|
||||
singSongFragment = null;
|
||||
} else if (fragment instanceof RoomKtvFragment) {
|
||||
((RoomKtvFragment) fragment).releaseResources();
|
||||
ktvFragment = null;
|
||||
} else if (fragment instanceof FriendshipRoomFragment) {
|
||||
((FriendshipRoomFragment) fragment).releaseResources();
|
||||
friendshipRoomFragment = null;
|
||||
} else if (fragment instanceof RoomCabinFragment) {
|
||||
((RoomCabinFragment) fragment).releaseResources();
|
||||
roomCabinFragment = null;
|
||||
} else if (fragment instanceof RoomAuctionFragment) {
|
||||
((RoomAuctionFragment) fragment).releaseResources();
|
||||
roomAuctionFragment = null;
|
||||
} else if (fragment instanceof RoomJukeboxFragment) {
|
||||
// ((RoomJukeboxFragment) fragment).releaseResources();
|
||||
roomJukeboxFragment = null;
|
||||
}else if (fragment instanceof RoomMentorShipFragment){
|
||||
mentorShipFragment = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 最后移除所有Fragment
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
for (Fragment fragment : fragments) {
|
||||
@@ -237,7 +237,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
// 提前释放计时器资源
|
||||
releaseCountDownTimer();
|
||||
}
|
||||
@@ -333,16 +332,13 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
/// 交友房时间发生延时
|
||||
public void friendTimeDelayWithTime(long end_time) {
|
||||
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
|
||||
if (friendshipRoomFragment != null) {
|
||||
friendshipRoomFragment.friendTimeDelayWithTime(end_time);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// 心动值发生变化
|
||||
public void friendHeartNumberDidChanged(List<FriendInfo.HeartList> heartLists) {
|
||||
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
|
||||
if (friendshipRoomFragment != null) {
|
||||
friendshipRoomFragment.friendHeartNumberDidChanged(heartLists);
|
||||
}
|
||||
@@ -350,14 +346,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
/// 交友房麦位发生变化
|
||||
public void friendSeatDidChanged(List<RoomPitBean> pitArr) {
|
||||
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
|
||||
if (friendshipRoomFragment != null) {
|
||||
friendshipRoomFragment.friendSeatDidChanged(pitArr);
|
||||
}
|
||||
}
|
||||
|
||||
public void upFriendList(List<RoomPitBean> pitArr) {
|
||||
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
|
||||
if (friendshipRoomFragment != null) {
|
||||
friendshipRoomFragment.upFriendList();
|
||||
}
|
||||
@@ -365,7 +359,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
|
||||
/// 小黑屋修改倒计时
|
||||
public void upCabinFragment(long time) {
|
||||
RoomCabinFragment roomCabinFragment = findFragmentByTag(RoomCabinFragment.class);
|
||||
if (roomCabinFragment != null)
|
||||
roomCabinFragment.upCabinFragment(time);
|
||||
}
|
||||
@@ -376,6 +369,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
}
|
||||
|
||||
private void performLoadSubFragment(QXRoomSeatViewType qxRoomSeatViewType) {
|
||||
|
||||
// 释放子Fragment
|
||||
releaseChildFragments();
|
||||
this.qxRoomSeatViewType = qxRoomSeatViewType;
|
||||
if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return;
|
||||
String typeId = mRoomInfoResp.getRoom_info().getType_id();
|
||||
@@ -437,19 +433,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
}
|
||||
|
||||
if (newFragment != null) {
|
||||
replaceNestedFragment(newFragment, R.id.container);
|
||||
performFragmentReplacement(newFragment, R.id.container);
|
||||
} else {
|
||||
LogUtils.e("newFragment==null");
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
String tag = newFragment.getClass().getSimpleName(); // 使用类名作为 tag
|
||||
FragmentManager fragmentManager = getChildFragmentManager();
|
||||
Fragment existingFragment = fragmentManager.findFragmentByTag(tag);
|
||||
FragmentTransaction transaction = fragmentManager.beginTransaction();
|
||||
// 如果已添加,隐藏其他 Fragment(假设需要隐藏其他 Fragment)并显示已添加的 Fragment
|
||||
for (Fragment fragment : fragmentManager.getFragments()) {
|
||||
transaction.hide(fragment);
|
||||
}
|
||||
|
||||
if (existingFragment != null) {
|
||||
transaction.show(existingFragment);
|
||||
} else {
|
||||
transaction.add(containerId, newFragment, tag);
|
||||
}
|
||||
transaction.replace(containerId, newFragment, tag);
|
||||
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) {
|
||||
mRoomInfoResp.getRoom_info().getPit_list().set(pit - 1, roomPitBean);
|
||||
@@ -571,55 +510,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
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;
|
||||
|
||||
@@ -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) {
|
||||
wheatFeedingDialogFragment = new WheatFeedingDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
@@ -801,8 +675,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
|
||||
roomActivity.setrlMic(true);
|
||||
if (AgoraManager.getInstance().isLocalAudioEnabled()) {
|
||||
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 小黑屋火热值更新
|
||||
public void handleMsgType1028(RoomMessageEvent messageEvent) {
|
||||
RoomCabinFragment cabinFragment = (RoomCabinFragment) getChildFragmentManager()
|
||||
|
||||
@@ -508,13 +508,14 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
|
||||
if (userInfo != null) {
|
||||
mBinding.tvGh.setVisibility(VISIBLE);
|
||||
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("所属公会:无");
|
||||
} 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.tvGh.setText("所属公会:" + userInfo.getGuild_name());
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user