1184 lines
44 KiB
Java
1184 lines
44 KiB
Java
package com.example.moduleroom.activity;
|
||
|
||
import static android.view.View.GONE;
|
||
import static android.view.View.VISIBLE;
|
||
|
||
import android.Manifest;
|
||
import android.app.AlertDialog;
|
||
import android.content.Intent;
|
||
import android.content.pm.ActivityInfo;
|
||
import android.content.res.Configuration;
|
||
import android.graphics.Rect;
|
||
import android.os.Build;
|
||
import android.os.Bundle;
|
||
import android.os.CountDownTimer;
|
||
import android.os.Handler;
|
||
import android.text.TextUtils;
|
||
import android.util.Log;
|
||
import android.view.GestureDetector;
|
||
import android.view.KeyEvent;
|
||
import android.view.MotionEvent;
|
||
import android.view.SurfaceView;
|
||
import android.view.View;
|
||
import android.view.ViewGroup;
|
||
import android.view.ViewParent;
|
||
import android.view.WindowInsets;
|
||
import android.view.WindowManager;
|
||
import android.widget.FrameLayout;
|
||
import android.widget.ImageView;
|
||
|
||
import androidx.annotation.NonNull;
|
||
import androidx.annotation.Nullable;
|
||
import androidx.fragment.app.Fragment;
|
||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||
|
||
import com.alibaba.android.arouter.facade.annotation.Autowired;
|
||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||
import com.alibaba.android.arouter.launcher.ARouter;
|
||
import com.blankj.utilcode.util.GsonUtils;
|
||
import com.blankj.utilcode.util.LogUtils;
|
||
import com.blankj.utilcode.util.ThreadUtils;
|
||
import com.blankj.utilcode.util.ToastUtils;
|
||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||
import com.example.moduleroom.R;
|
||
import com.example.moduleroom.contacts.RoomContacts;
|
||
import com.example.moduleroom.databinding.ActivityRoomBinding;
|
||
import com.example.moduleroom.dialog.ExitRoomBottomSheet;
|
||
import com.example.moduleroom.dialog.PublishCommentDialogFragment;
|
||
import com.example.moduleroom.dialog.RequestDialogFragment;
|
||
import com.example.moduleroom.dialog.RoomOnlineDialogFragment;
|
||
import com.example.moduleroom.fragment.RoomCabinFragment;
|
||
import com.example.moduleroom.fragment.RoomChartsFragment;
|
||
import com.example.moduleroom.fragment.RoomNoticeDialogFragment;
|
||
import com.lzf.easyfloat.EasyFloat;
|
||
import com.petterp.floatingx.assist.helper.FxScopeHelper;
|
||
import com.petterp.floatingx.listener.control.IFxControl;
|
||
import com.qxcm.moduleutil.base.CommonAppContext;
|
||
import com.qxcm.moduleutil.bean.HeadlineBean;
|
||
import com.qxcm.moduleutil.bean.HeadlineEvent;
|
||
import com.qxcm.moduleutil.bean.UserInfo;
|
||
import com.qxcm.moduleutil.bean.room.RankInfo;
|
||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||
import com.qxcm.moduleutil.databinding.RoomDialogMusicWindowOpenBinding;
|
||
import com.qxcm.moduleutil.dialog.RechargeDialogFragment;
|
||
import com.qxcm.moduleutil.event.ColoseCardEvent;
|
||
import com.qxcm.moduleutil.event.EffectEvent;
|
||
import com.qxcm.moduleutil.event.MusicEvent;
|
||
import com.qxcm.moduleutil.event.RoomGiftGiveEvent;
|
||
import com.qxcm.moduleutil.event.RoomOutEvent;
|
||
import com.qxcm.moduleutil.event.RoomWheatEvent;
|
||
import com.qxcm.moduleutil.http.BaseObserver;
|
||
import com.qxcm.moduleutil.http.RetrofitClient;
|
||
import com.qxcm.moduleutil.interfaces.OnMusicItemClickListener;
|
||
import com.qxcm.moduleutil.listener.MessageListenerSingleton;
|
||
import com.qxcm.moduleutil.adapter.LikeUserAdapter;
|
||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||
import com.qxcm.moduleutil.bean.RoomSettingEvent;
|
||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||
import com.example.moduleroom.fragment.RoomFragment;
|
||
import com.example.moduleroom.fragment.RoomPasswordSetDialogFragment;
|
||
import com.example.moduleroom.presenter.RoomPresenter;
|
||
import com.qxcm.moduleutil.activity.BaseMvpActivity;
|
||
import com.qxcm.moduleutil.adapter.CommonPageAdapter;
|
||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||
import com.qxcm.moduleutil.bean.room.RoomOwnerBean;
|
||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||
import com.qxcm.moduleutil.bean.room.RoomUserBean;
|
||
import com.qxcm.moduleutil.dialog.ConfirmDialog;
|
||
import com.qxcm.moduleutil.event.RoomJoinMountModel;
|
||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||
import com.qxcm.moduleutil.rtc.MusicPlayBean;
|
||
import com.qxcm.moduleutil.rtc.RtcCore;
|
||
import com.qxcm.moduleutil.utils.ARouteConstants;
|
||
import com.qxcm.moduleutil.utils.DialogUtils;
|
||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||
import com.qxcm.moduleutil.utils.SpUtil;
|
||
import com.qxcm.moduleutil.utils.logger.DataLogger;
|
||
import com.qxcm.moduleutil.widget.CircularProgressView;
|
||
import com.qxcm.moduleutil.widget.CustomMusicFloatingView;
|
||
import com.qxcm.moduleutil.widget.MusicView;
|
||
import com.qxcm.moduleutil.widget.SilentCountDownTimer;
|
||
import com.qxcm.moduleutil.widget.ViewUtils;
|
||
import com.qxcm.moduleutil.widget.floatingView.FloatingMagnetView;
|
||
import com.tencent.imsdk.v2.V2TIMCallback;
|
||
import com.tencent.imsdk.v2.V2TIMManager;
|
||
|
||
import org.greenrobot.eventbus.EventBus;
|
||
import org.greenrobot.eventbus.Subscribe;
|
||
import org.greenrobot.eventbus.ThreadMode;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
import io.agora.musiccontentcenter.Music;
|
||
import io.reactivex.disposables.Disposable;
|
||
import pub.devrel.easypermissions.AppSettingsDialog;
|
||
import pub.devrel.easypermissions.EasyPermissions;
|
||
|
||
@Route(path = ARouteConstants.ROOM_DETAILS)
|
||
public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBinding> implements RoomContacts.View,
|
||
EasyPermissions.PermissionCallbacks {
|
||
|
||
private RoomFragment roomFragment;
|
||
CommonPageAdapter commonPageAdapter;
|
||
private RoomBean mRoomBean;
|
||
//房主信息
|
||
private RoomOwnerBean mRoomOwnerBean;
|
||
//房间用户信息
|
||
private RoomUserBean mRoomUserBean;
|
||
private List<RoomPitBean> mPitList = new ArrayList<>();
|
||
@Autowired
|
||
public String password;
|
||
@Autowired
|
||
public String roomId;
|
||
public static boolean sDestroied = false;
|
||
LikeUserAdapter<RoomOnlineBean> likeUserAdapter;
|
||
String[] permissions = {Manifest.permission.RECORD_AUDIO};
|
||
private RoomInfoResp mRoomInfoResp;
|
||
private boolean isSave = false;//活动是否将被系统回收
|
||
|
||
private IFxControl musicWindowControl;
|
||
private CustomMusicFloatingView customMusicFloatingView;
|
||
private int number = 0;
|
||
|
||
private FloatingMagnetView floatingMagnetView;
|
||
private FrameLayout fullScreenContainer;
|
||
private boolean isFullScreen = false;
|
||
private ImageView ivExitFullscreen;
|
||
ImageView ivQuan;
|
||
private boolean imYc;
|
||
|
||
private SilentCountDownTimer silentCountDownTimer;
|
||
private CircularProgressView circularProgress;
|
||
|
||
@Override
|
||
protected void onNewIntent(Intent intent) {
|
||
password = intent.getStringExtra("password");
|
||
String mRoomId = intent.getStringExtra("roomId");
|
||
|
||
if (roomId.equals(mRoomId) || TextUtils.isEmpty(mRoomId)) {
|
||
super.onNewIntent(intent);
|
||
sDestroied = false;
|
||
// MvpPre.getRoomIn(roomId, password);
|
||
// MvpPre.getRoomOnline(roomId, "1", "10");
|
||
} else {
|
||
releaseRoom();
|
||
startActivity(intent);
|
||
finish();
|
||
}
|
||
|
||
}
|
||
|
||
// @Override
|
||
// public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||
// if (keyCode == KeyEvent.KEYCODE_BACK) {
|
||
// return true;
|
||
// }
|
||
// return false;
|
||
// }
|
||
|
||
// 禁用系统手势导航
|
||
|
||
|
||
@Override
|
||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||
super.onConfigurationChanged(newConfig);
|
||
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.vp_room_pager); // 替换为你实际的容器 ID
|
||
if (currentFragment instanceof RoomCabinFragment) {
|
||
((RoomCabinFragment) currentFragment).onConfigurationChanged(newConfig);
|
||
}
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void roomInfoEvent(SurfaceView surfaceView) {
|
||
if (mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
|
||
floatingMagnetView = findViewById(R.id.flaoat);
|
||
FrameLayout container = floatingMagnetView.findViewById(R.id.fl_screenshare);
|
||
if (surfaceView == null) {
|
||
runOnUiThread(() -> {
|
||
mBinding.flaoat.setVisibility(GONE);
|
||
container.removeAllViews();
|
||
});
|
||
} else {
|
||
runOnUiThread(() -> {
|
||
mBinding.flaoat.setVisibility(VISIBLE);
|
||
container.removeAllViews();
|
||
container.addView(surfaceView);
|
||
// mBinding.flaoat.setVisibility(VISIBLE);
|
||
// mBinding.flScreenshare.removeAllViews();
|
||
// mBinding.flScreenshare.addView(surfaceView);
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void roomInfoEvent(ColoseCardEvent messageEvent) {
|
||
mBinding.flaoat.setVisibility(GONE);
|
||
}
|
||
|
||
/**
|
||
* 释放当前房间
|
||
*/
|
||
private void releaseRoom() {
|
||
AgoraManager.getInstance(this).destroy();
|
||
// RtcManager.getInstance().leaveChannel(roomId);
|
||
// RtcManager.getInstance().setAudioUrl(null);
|
||
// EMqttService.cleanSubscribeRoom(roomId);
|
||
CommonAppContext.getInstance().isPlaying = false;
|
||
CommonAppContext.getInstance().isShow = false;
|
||
}
|
||
|
||
@Override
|
||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||
super.onCreate(savedInstanceState);
|
||
isSave = false;
|
||
sDestroied = false;
|
||
// // 进入房间10s后检查是否显示提示上麦对话框
|
||
// new Handler(getMainLooper()).postDelayed(
|
||
// () -> EventBus.getDefault().post(new ShowOnWheatDialogEvent()),
|
||
// 10000);
|
||
|
||
|
||
overridePendingTransition(0, 0); // 关闭转场动画
|
||
|
||
floatingMagnetView = findViewById(R.id.flaoat);
|
||
ivQuan = findViewById(R.id.iv_quan);
|
||
fullScreenContainer = findViewById(R.id.fullscreen_container); // 自定义全屏容器
|
||
ivExitFullscreen = findViewById(R.id.iv_exit_fullscreen);
|
||
ivQuan.setOnClickListener(v -> toggleFullScreen());
|
||
ivExitFullscreen.setOnClickListener(v -> exitFullScreen());
|
||
|
||
|
||
}
|
||
|
||
@Override
|
||
protected void initView() {
|
||
super.initView();
|
||
circularProgress = mBinding.giftShowProgress;
|
||
circularProgress.setProgress(0);
|
||
mBinding.giftShowLayout.setOnClickListener(new View.OnClickListener() {
|
||
@Override
|
||
public void onClick(View v) {
|
||
onGiftGiveProgressClcik();
|
||
LogUtils.e("xj", "onSubscribe2222");
|
||
}
|
||
});
|
||
}
|
||
|
||
private void onGiftGiveProgressClcik() {
|
||
if (giftGiveEvent == null || giftGiveEvent.roonGiftModel == null) {
|
||
return;
|
||
}
|
||
// if (giftCountTimer != null) {
|
||
// giftCountTimer.cancel();
|
||
// giftCountTimer = null;
|
||
// }
|
||
RetrofitClient.getInstance().roomGift(giftGiveEvent.getRoom_id(), giftGiveEvent.getRoonGiftModel().getGift_id(), giftGiveEvent.getNum(), giftGiveEvent.getUserId(),"1",giftGiveEvent.getPit(), new BaseObserver<String>(){
|
||
@Override
|
||
public void onSubscribe(Disposable d) {
|
||
// showGiftGiveProgress();
|
||
// LogUtils.e("xj", "onSubscribe");
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onNext(String s) {
|
||
showGiftGiveProgress();
|
||
}
|
||
|
||
@Override
|
||
public void onError(Throwable e) {
|
||
super.onError(e);
|
||
String msg = e.getMessage();
|
||
if (!TextUtils.isEmpty(msg) && msg.contains("当前余额不足")) {
|
||
com.hjq.toast.ToastUtils.show("当前余额不足,请充值");
|
||
ThreadUtils.runOnUiThreadDelayed(() -> {
|
||
RechargeDialogFragment.show(roomId, getSupportFragmentManager());
|
||
// DialogUtils.showDialogFragment(ARouter.getInstance().build(ARouteConstants.RECHARGE_DIALOG).navigation());
|
||
}, 1400);
|
||
}
|
||
hideGiftGiveProgress();
|
||
}
|
||
});
|
||
}
|
||
|
||
private RoomGiftGiveEvent giftGiveEvent;
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void roomGiveGiftEvent(RoomGiftGiveEvent event) {
|
||
if (isFinishing() || event == null || event.roonGiftModel == null) {
|
||
return;
|
||
}
|
||
giftGiveEvent = event;
|
||
showGiftGiveProgress();
|
||
}
|
||
private int giftProgress=0;
|
||
private CountDownTimer giftCountTimer;
|
||
|
||
private void startGiftProgressTime() {
|
||
giftProgress = 0;
|
||
if (giftCountTimer != null) {
|
||
giftCountTimer.cancel();
|
||
}
|
||
LogUtils.e("xj2", "onSubscribe");
|
||
giftCountTimer = new CountDownTimer(1000 * 10, 50) {
|
||
|
||
@Override
|
||
public void onTick(long millisUntilFinished) {
|
||
if (!isFinishing()) {
|
||
circularProgress.setProgress(1000 - (int) (millisUntilFinished / 10));
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onFinish() {
|
||
circularProgress.setProgress(1000);
|
||
hideGiftGiveProgress();
|
||
}
|
||
};
|
||
giftCountTimer.start();
|
||
}
|
||
|
||
private void showGiftGiveProgress() {
|
||
ImageUtils.loadImageView(giftGiveEvent.roonGiftModel.getBase_image(), mBinding.giftShowProgressImg);
|
||
circularProgress.setProgress(1000);// 显示进度条,2025年7月19日11:23:37将这个从下面的方法提起到这里,
|
||
startGiftProgressTime();
|
||
mBinding.giftShowLayout.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
private void hideGiftGiveProgress() {
|
||
mBinding.giftShowLayout.setVisibility(View.GONE);
|
||
if (giftCountTimer != null) {
|
||
giftCountTimer.cancel();
|
||
giftCountTimer = null;
|
||
}
|
||
}
|
||
|
||
private void toggleFullScreen() {
|
||
if (isFullScreen) {
|
||
exitFullScreen();
|
||
} else {
|
||
enterFullScreen();
|
||
}
|
||
}
|
||
|
||
private void enterFullScreen() {
|
||
isFullScreen = true;
|
||
|
||
// 隐藏系统UI
|
||
View decorView = getWindow().getDecorView();
|
||
decorView.setSystemUiVisibility(
|
||
View.SYSTEM_UI_FLAG_FULLSCREEN
|
||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||
);
|
||
|
||
// 设置横屏
|
||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
||
|
||
// 将原来的 fl_screenshare 移动到全屏容器中
|
||
FrameLayout container = floatingMagnetView.findViewById(R.id.fl_screenshare);
|
||
if (container.getParent() != null) {
|
||
((ViewGroup) container.getParent()).removeView(container);
|
||
}
|
||
fullScreenContainer.addView(container);
|
||
|
||
// 显示全屏容器
|
||
fullScreenContainer.setVisibility(View.VISIBLE);
|
||
// floatingMagnetView.setVisibility(View.GONE);
|
||
ivExitFullscreen.setVisibility(View.VISIBLE); // 显示退出按钮
|
||
}
|
||
|
||
private void exitFullScreen() {
|
||
isFullScreen = false;
|
||
// 恢复系统UI
|
||
View decorView = getWindow().getDecorView();
|
||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
|
||
// 设置回竖屏
|
||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
||
// 找到 fl_screenshare 并移回原父容器
|
||
FrameLayout fl_screenshare = findViewById(R.id.fl_screenshare);
|
||
if (fl_screenshare != null) {
|
||
ViewParent parent = fl_screenshare.getParent();
|
||
if (parent != null && parent instanceof ViewGroup) {
|
||
((ViewGroup) parent).removeView(fl_screenshare);
|
||
}
|
||
|
||
// 找到原始父容器并重新添加
|
||
FrameLayout originalParent = findViewById(R.id.fullscreen_container); // 或者你实际的容器
|
||
if (originalParent != null) {
|
||
originalParent.removeView(fl_screenshare); // 防止重复添加
|
||
}
|
||
|
||
floatingMagnetView.addView(fl_screenshare);
|
||
}
|
||
// 恢复界面
|
||
fullScreenContainer.setVisibility(View.GONE);
|
||
floatingMagnetView.setVisibility(View.VISIBLE);
|
||
ivQuan.setVisibility(View.VISIBLE);
|
||
ivExitFullscreen.setVisibility(View.GONE); // 隐藏退出按钮
|
||
}
|
||
@Override
|
||
protected void initData() {
|
||
if (!EasyPermissions.hasPermissions(this, permissions)) {
|
||
EasyPermissions.requestPermissions(this, "请开启录音使用权限",
|
||
1, permissions);
|
||
}
|
||
|
||
mBinding.roomTop.btnFollow.setOnClickListener(this::onClick);
|
||
mBinding.roomTop.btnNotice.setOnClickListener(this::onClick);
|
||
mBinding.roomTop.btnRanking.setOnClickListener(this::onClick);
|
||
mBinding.roomTop.btnCloseLive.setOnClickListener(this::onClick);
|
||
mBinding.roomTop.tvNum.setOnClickListener(this::onClick);
|
||
mBinding.roomTop.rl.setOnClickListener(this::onClick);
|
||
mBinding.roomTop.userRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
|
||
likeUserAdapter = new LikeUserAdapter<>();
|
||
mBinding.roomTop.userRecyclerView.setAdapter(likeUserAdapter);
|
||
likeUserAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
||
@Override
|
||
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
||
RoomOnlineDialogFragment.show(roomId, "", getSupportFragmentManager());
|
||
}
|
||
});
|
||
// onChatRoomViewCreation();
|
||
MessageListenerSingleton.getInstance().joinGroup(roomId);
|
||
SpUtil.saveMyRoomId(roomId);
|
||
MvpPre.getRoomIn(roomId, password);
|
||
MvpPre.getRoomOnline(roomId, "1", "10");
|
||
|
||
// customMusicFloatingView.initView();
|
||
// 使用 OnViewAttachListener 确保 View 已创建
|
||
// 设置监听器,等待 View 创建完成
|
||
// setMusicListener();
|
||
|
||
}
|
||
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||
if (messageEvent.getMsgType() == 1005) {
|
||
mBinding.svgaGift.setSource(messageEvent.getText().getGiftInfo().getPlay_image(), 2);
|
||
} else if (messageEvent.getMsgType() == 123) {
|
||
EventBus.getDefault().post(new RoomSettingEvent());
|
||
} else if (messageEvent.getMsgType() == 1014) {
|
||
RoomSettingEvent roomSettingEvent = new RoomSettingEvent();
|
||
roomSettingEvent.setRoomId(messageEvent.getRoomId());
|
||
roomSettingEvent.setRoom_up_pit_type(messageEvent.getText().getRoom_up_pit_type());
|
||
roomSettingEvent.setType(messageEvent.getMsgType());
|
||
mRoomBean.setRoom_up_pit_type(messageEvent.getText().getRoom_up_pit_type() + "");
|
||
EventBus.getDefault().post(mRoomBean);
|
||
EventBus.getDefault().post(roomSettingEvent);
|
||
} else if (messageEvent.getMsgType() == 1013) {
|
||
int userid = messageEvent.getText().getFromUserInfo().getUser_id();
|
||
int userId2 = SpUtil.getUserId();
|
||
|
||
if (messageEvent.getText().getAction() == 1 && mRoomUserBean.getUser_id().equals(userId2 + "") && mRoomUserBean.getPit_number() == 9) {
|
||
queren(messageEvent.getText().getFromUserInfo().getNickname());
|
||
} else if (messageEvent.getText().getAction() == 4 && userid == userId2) {
|
||
queren1(messageEvent.getText().getFromUserInfo().getNickname());
|
||
} else if (messageEvent.getText().getAction() == 2) {
|
||
|
||
} else if (messageEvent.getText().getAction() == 3 && SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
|
||
|
||
}
|
||
} else if (messageEvent.getMsgType() == 1012) {
|
||
if (customMusicFloatingView != null) {
|
||
customMusicFloatingView.destroy();
|
||
}
|
||
AgoraManager.getInstance(RoomActivity.this).desMusic();
|
||
MvpPre.postRoomInfo(roomId);
|
||
} else if (messageEvent.getMsgType() == 124) {
|
||
RoomMessageEvent.text text = GsonUtils.fromJson(messageEvent.getText().getText(), RoomMessageEvent.text.class);
|
||
MusicPlayBean musicPlayBean = new MusicPlayBean();
|
||
musicPlayBean.setPosition(text.getPosition());
|
||
EventBus.getDefault().post(musicPlayBean);
|
||
} else if (messageEvent.getMsgType() == 1003) {//上麦操作
|
||
//
|
||
// RoomWheatEvent roomWheatEvent = new RoomWheatEvent();
|
||
// roomWheatEvent.setRoomId(roomId);
|
||
// roomWheatEvent.setOccupied(true);
|
||
// EventBus.getDefault().post(roomWheatEvent);
|
||
} else if (messageEvent.getMsgType() == 1004) {//下麦操作
|
||
// RoomWheatEvent roomWheatEvent = new RoomWheatEvent();
|
||
// roomWheatEvent.setRoomId(roomId);
|
||
// roomWheatEvent.setOccupied(false);
|
||
// EventBus.getDefault().post(roomWheatEvent);
|
||
} else if (messageEvent.getMsgType() == 1020) {
|
||
mRoomBean = messageEvent.getText().getRoomInfo();
|
||
EventBus.getDefault().post(mRoomBean);
|
||
changeBackgroundColor(mRoomBean.getRoom_background());
|
||
} else if (messageEvent.getMsgType() == 1011) {
|
||
if (messageEvent.getText().getFromUserInfo() != null) {
|
||
if (messageEvent.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
|
||
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
|
||
}
|
||
}
|
||
} else if (messageEvent.getMsgType() == 1001) {
|
||
number++;
|
||
mBinding.roomTop.tvNum.setText(number + "");
|
||
} else if (messageEvent.getMsgType() == 1002) {
|
||
number--;
|
||
mBinding.roomTop.tvNum.setText(number + "");
|
||
} else if (messageEvent.getMsgType() == 1029) {
|
||
if (mRoomInfoResp.getUser_info().getPit_number() == 9 && mRoomInfoResp.getUser_info().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||
querenPk(messageEvent.getText().getText(), messageEvent.getText().getPkId());
|
||
}
|
||
}
|
||
}
|
||
|
||
private void querenPk(String text, String pk_id) {
|
||
// 创建并显示确认对话框
|
||
new ConfirmDialog(this,
|
||
"温馨提示",
|
||
text,
|
||
"确认",
|
||
"拒绝",
|
||
v -> {
|
||
// 点击“确认”按钮时执行删除操作
|
||
MvpPre.acceptPk(pk_id, "1");
|
||
},
|
||
v -> {
|
||
MvpPre.acceptPk(pk_id, "2");
|
||
// 点击“取消”按钮时什么都不做
|
||
}, true, 10).show();
|
||
}
|
||
|
||
/**
|
||
* 修改背景图
|
||
*
|
||
* @param bjId
|
||
*/
|
||
|
||
public void changeBackgroundColor(String bjId) {
|
||
// 假设你的Activity有一个根布局,例如 ConstraintLayout
|
||
ImageUtils.loadImageWithCache(this, bjId, mBinding.ivBg);
|
||
|
||
// EasyFloat.with(this)
|
||
// .setLayout(com.qxcm.moduleutil.R.layout.floating_layout)
|
||
// .show();
|
||
}
|
||
|
||
public void changeBackground(int bjId) {
|
||
mBinding.ivBg.setImageDrawable(getResources().getDrawable(bjId));
|
||
}
|
||
|
||
public void setvisibTop(boolean is) {
|
||
mBinding.roomTop.getRoot().setVisibility(is ? VISIBLE : GONE);
|
||
}
|
||
|
||
/**
|
||
* 特效设置
|
||
*/
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void setEffectSwitch(EffectEvent event) {
|
||
if (event.isEffectOn()) {//特效开启
|
||
mBinding.svgaGift.setVisibility(View.VISIBLE);
|
||
} else {
|
||
mBinding.svgaGift.closeEffect();
|
||
mBinding.svgaGift.setVisibility(View.GONE);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 坐骑进场特效
|
||
*
|
||
* @param roomJoinMountModel
|
||
*/
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void roomJoinMount(RoomJoinMountModel roomJoinMountModel) {
|
||
if (!roomId.equals(roomJoinMountModel.getRoom_id())) {
|
||
return;
|
||
}
|
||
if (roomJoinMountModel.getShow_type() != 1) {
|
||
mBinding.svgaZuoji.setSource(roomJoinMountModel.getRide_url(), 2);
|
||
}
|
||
}
|
||
|
||
private void onClick(View view) {
|
||
int id = view.getId();
|
||
if (id == R.id.btn_follow) {
|
||
MvpPre.userGuanz(mRoomOwnerBean.getUser_id(), "2");
|
||
} else if (id == R.id.btn_notice) {
|
||
// RoomTipsView.show(this,view,"公告","公告内容");
|
||
RoomNoticeDialogFragment roomNoticeDialogFragment = new RoomNoticeDialogFragment(this);
|
||
roomNoticeDialogFragment.setTitle("公告");
|
||
roomNoticeDialogFragment.setContent(mRoomBean.getRoom_intro());
|
||
roomNoticeDialogFragment.show();
|
||
} else if (id == R.id.btn_ranking) {//排行榜
|
||
RoomChartsFragment.newInstance(roomId).show(getSupportFragmentManager(), "RoomChartsFragment");
|
||
} else if (id == R.id.btn_close_live) {
|
||
//最小化
|
||
ExitRoomBottomSheet bottomSheet = ExitRoomBottomSheet.newInstance();
|
||
bottomSheet.setOnOptionSelectedListener(new ExitRoomBottomSheet.OnOptionSelectedListener() {
|
||
@Override
|
||
public void onMinimize() {
|
||
// 处理最小化逻辑,比如不销毁 Activity,仅移至后台
|
||
CommonAppContext.getInstance().isShow = false;
|
||
ARouter.getInstance().build(ARouteConstants.ME).navigation();//栈顶复用
|
||
// moveTaskToBack(true);
|
||
}
|
||
|
||
@Override
|
||
public void onExitRoom() {
|
||
// 调用退出房间方法
|
||
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
|
||
}
|
||
|
||
@Override
|
||
public void onCancel() {
|
||
// 用户点击取消,不做任何事
|
||
}
|
||
});
|
||
bottomSheet.show(getSupportFragmentManager(), "ExitRoomBottomSheet");
|
||
} else if (id == R.id.tv_num) {
|
||
RoomOnlineDialogFragment.show(roomId, "", getSupportFragmentManager());
|
||
} else if (id == R.id.rl) {
|
||
com.hjq.toast.ToastUtils.show("清楚魅力值");
|
||
}
|
||
}
|
||
|
||
@Override
|
||
protected int getLayoutId() {
|
||
return R.layout.activity_room;
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void roomOut(RoomOutEvent roomOutEvent) {
|
||
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
|
||
}
|
||
|
||
@Override
|
||
protected RoomPresenter bindPresenter() {
|
||
return new RoomPresenter(this, this);
|
||
}
|
||
|
||
public void upRoomInfo(RoomInfoResp resp) {
|
||
this.mRoomInfoResp = resp;
|
||
if (mRoomInfoResp.getUser_info().getPit_number()==9 && mRoomInfoResp.getUser_info().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||
mBinding.roomTop.rl.setVisibility(View.VISIBLE);
|
||
} else {
|
||
mBinding.roomTop.rl.setVisibility(View.GONE);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void roomInfo(RoomInfoResp resp) {
|
||
this.mRoomInfoResp = resp;
|
||
RoomBean roomBean = resp.getRoom_info();
|
||
this.mRoomBean = roomBean;
|
||
this.mRoomUserBean = resp.getUser_info();
|
||
this.mRoomOwnerBean = resp.getRoom_owner();
|
||
this.mPitList = mRoomBean.getPit_list();
|
||
|
||
ImageUtils.loadHeadCC(resp.getRoom_info().getRoom_cover(), mBinding.roomTop.avatar);
|
||
mBinding.roomTop.name.setText(roomBean.getRoom_name());
|
||
mBinding.roomTop.idVal.setText("ID:" + roomBean.getRoom_number());
|
||
if (mRoomUserBean.getIs_room_owner() == 1) {
|
||
mBinding.roomTop.btnFollow.setVisibility(GONE);
|
||
} else {
|
||
mBinding.roomTop.btnFollow.setVisibility(VISIBLE);
|
||
if (resp.isCollect()) {
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collected));
|
||
}
|
||
}
|
||
number = roomBean.getOnline_number();
|
||
mBinding.roomTop.tvNum.setText(number + "");
|
||
|
||
if (!isFinishing() && !isDestroyed()) {
|
||
|
||
if (roomFragment == null || !roomFragment.isAdded()) {
|
||
roomFragment = RoomFragment.newInstance(resp, "");
|
||
getSupportFragmentManager()
|
||
.beginTransaction()
|
||
.replace(R.id.vp_room_pager, roomFragment)
|
||
.commitAllowingStateLoss();
|
||
} else {
|
||
roomFragment.refreshData(resp);
|
||
}
|
||
} else {
|
||
Log.e("Fragment", "Fragment transaction skipped due to state loss.");
|
||
}
|
||
|
||
// 更新引用
|
||
// roomFragment = newFragment;
|
||
// if (!roomBean.getType_id().equals("6")) {
|
||
// changeBackgroundColor(roomBean.getRoom_background());
|
||
// } else {
|
||
// changeBackground(com.qxcm.moduleutil.R.mipmap.cabin_bj);
|
||
// }
|
||
|
||
CommonAppContext.getInstance().isPlaying = true;
|
||
CommonAppContext.getInstance().playId = roomId;
|
||
CommonAppContext.getInstance().playName = mRoomBean.getRoom_name();
|
||
|
||
CommonAppContext.getInstance().playCover = resp.getRoom_info().getRoom_cover();
|
||
CommonAppContext.getInstance().showSelf = resp.getIs_show_self() == 1;
|
||
|
||
if (mRoomUserBean.getIs_collect() == 1) {
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yishouc));
|
||
} else {
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collect));
|
||
}
|
||
if (roomBean.getType_id().equals("1") && roomBean.getLabel_id().equals("2")) {
|
||
AgoraManager.getInstance(this).setBjMusic(false);
|
||
|
||
} else {
|
||
AgoraManager.getInstance(this).setBjMusic(true);
|
||
}
|
||
AgoraManager.getInstance(this).stopMuisc();
|
||
initializeAudio();
|
||
|
||
|
||
toutiao();
|
||
upRoomInfo(resp);
|
||
}
|
||
|
||
public void toutiao(){
|
||
if (mRoomInfoResp.getRoom_info().getHead_line() != null) {
|
||
mBinding.flaoatZuoji.setVisibility(VISIBLE);
|
||
// 设置 OnTouchListener,强制悬浮框自己处理拖动
|
||
|
||
ImageUtils.loadHeadCC(mRoomInfoResp.getRoom_info().getHead_line().getAvatar(), mBinding.headAvate);
|
||
mBinding.headName.setText(mRoomInfoResp.getRoom_info().getHead_line().getNickname());
|
||
mBinding.headCone.setText(mRoomInfoResp.getRoom_info().getHead_line().getContent());
|
||
// mBinding.cc.setOnClickListener(v -> {
|
||
// mBinding.flaoatZuoji.setVisibility(GONE);
|
||
// });
|
||
mBinding.ivQuanQiang.setOnClickListener(new View.OnClickListener() {
|
||
@Override
|
||
public void onClick(View v) {
|
||
PublishCommentDialogFragment.show(roomId,getSupportFragmentManager());
|
||
}
|
||
});
|
||
|
||
mBinding.ivQuanC.setOnClickListener(new View.OnClickListener() {//这是跟随的意思
|
||
|
||
@Override
|
||
public void onClick(View v) {
|
||
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", mRoomInfoResp.getRoom_info().getHead_line().getRoom_id() ).navigation();
|
||
}
|
||
});
|
||
|
||
mBinding.imYc.setOnClickListener(new View.OnClickListener() {
|
||
@Override
|
||
public void onClick(View v) {
|
||
if (imYc){
|
||
mBinding.cl.setVisibility(VISIBLE);
|
||
imYc = false;
|
||
}else {
|
||
mBinding.cl.setVisibility(GONE);
|
||
imYc = true;
|
||
}
|
||
}
|
||
});
|
||
mBinding.imHq.setOnClickListener(new View.OnClickListener(){
|
||
|
||
@Override
|
||
public void onClick(View v) {
|
||
if (!imYc){
|
||
mBinding.cl.setVisibility(VISIBLE);
|
||
imYc = true;
|
||
}else {
|
||
mBinding.cl.setVisibility(GONE);
|
||
imYc = false;
|
||
}
|
||
}
|
||
});
|
||
|
||
|
||
silentCountDownTimer = new SilentCountDownTimer();
|
||
silentCountDownTimer.setOnCountDownFinishListener(() -> {
|
||
// 倒计时结束后的操作
|
||
Log.d("CountDown", "倒计时结束,执行清理或通知操作");
|
||
hideSomeViewOrDoSomething();
|
||
});
|
||
|
||
// 启动倒计时(例如:目标时间戳 1752661716)
|
||
silentCountDownTimer.start(Long.parseLong(mRoomInfoResp.getRoom_info().getHead_line().getEnd_time()));
|
||
}else {
|
||
mBinding.flaoatZuoji.setVisibility(GONE);
|
||
}
|
||
}
|
||
private void hideSomeViewOrDoSomething() {
|
||
runOnUiThread(() -> {
|
||
// 执行你需要的操作,比如隐藏某个控件
|
||
// mBinding.someView.setVisibility(View.GONE);
|
||
mBinding.flaoatZuoji.setVisibility(GONE);
|
||
});
|
||
}
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void onHeadlineEvent(HeadlineBean event) {
|
||
mRoomInfoResp.getRoom_info().setHead_line(event);
|
||
toutiao();
|
||
}
|
||
|
||
/**
|
||
* @author qx
|
||
* @data 2025/6/27
|
||
* @description: 初始化音频,初始的时候,当是在麦上,将用户设置为主持,在麦下,设置为观众, 默认关闭麦克风
|
||
*/
|
||
public void initializeAudio() {
|
||
if (mRoomUserBean.getPit_number() != 0) {
|
||
AgoraManager.getInstance(this).ClientRole(true);
|
||
AgoraManager.getInstance(this).muteLocalAudioStream(false);
|
||
} else {
|
||
AgoraManager.getInstance(this).ClientRole(false);
|
||
AgoraManager.getInstance(this).muteLocalAudioStream(true);
|
||
}
|
||
AgoraManager.getInstance(this).setLocalAudioEnabled(false, SpUtil.getUserId() + "");
|
||
}
|
||
|
||
@Override
|
||
public void showPasswordDialog() {
|
||
RoomPasswordSetDialogFragment roomPasswordSetDialogFragment = RoomPasswordSetDialogFragment.newInstance(true, roomId);
|
||
roomPasswordSetDialogFragment.show(getSupportFragmentManager());
|
||
}
|
||
|
||
@Override
|
||
public void enterFail() {
|
||
releaseRoom();
|
||
finish();
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void logOutEvent(MusicEvent musicEvent) {
|
||
// mBinding.musicView.setVisibility(VISIBLE);
|
||
// musicWindowControl.show(); // <<< 添加这行代码
|
||
xunf();
|
||
RequestDialogFragment.show(roomId, mRoomInfoResp, getSupportFragmentManager());
|
||
|
||
}
|
||
|
||
/**
|
||
* 背景音乐
|
||
*/
|
||
|
||
private void xunf() {
|
||
musicWindowControl = FxScopeHelper.builder()
|
||
.setLayout(com.qxcm.moduleutil.R.layout.room_dialog_music_window_open)
|
||
.build()
|
||
.toControl(this);
|
||
// 创建自定义悬浮窗包装类
|
||
customMusicFloatingView = new CustomMusicFloatingView(this, musicWindowControl);
|
||
|
||
customMusicFloatingView.setOnItemClickListener(new OnMusicItemClickListener() {
|
||
@Override
|
||
public void onMinimize() {
|
||
customMusicFloatingView.destroy();
|
||
AgoraManager.getInstance(RoomActivity.this).desMusic();
|
||
}
|
||
|
||
@Override
|
||
public void onOpenList() {
|
||
// 打开音乐列表
|
||
// ToastUtils.showShort("打开音乐列表");
|
||
RequestDialogFragment.show(roomId, mRoomInfoResp, getSupportFragmentManager());
|
||
}
|
||
|
||
@Override
|
||
public void onPause() {
|
||
// ToastUtils.showShort("暂停播放");
|
||
// 调用播放器或通知 MusicView
|
||
AgoraManager.getInstance(RoomActivity.this).pauseMusic();
|
||
}
|
||
|
||
@Override
|
||
public void onResume() {
|
||
// ToastUtils.showShort("恢复播放");
|
||
// 调用播放器或通知 MusicView
|
||
AgoraManager.getInstance(RoomActivity.this).resumeMusic();
|
||
}
|
||
|
||
@Override
|
||
public void onNext() {
|
||
// ToastUtils.showShort("下一首");
|
||
// 切换歌曲
|
||
// List<Music> musicSongBeans = AgoraManager.getInstance(RoomActivity.this).getMusicList();
|
||
AgoraManager.getInstance(RoomActivity.this).nextSong();
|
||
}
|
||
});
|
||
// customMusicFloatingView.initView();
|
||
customMusicFloatingView.show();
|
||
// 等待 View 创建完成后才绑定点击事件
|
||
ViewUtils.waitUntilViewReady(musicWindowControl, view -> {
|
||
customMusicFloatingView.initView(); // 这里 fxControl.getView() 不再为 null
|
||
customMusicFloatingView.updatePlayState(false);
|
||
});
|
||
}
|
||
|
||
@Override
|
||
protected void onResume() {
|
||
super.onResume();
|
||
CommonAppContext.getInstance().isShow = true;
|
||
CommonAppContext.getInstance().isPlaying = true;
|
||
|
||
}
|
||
|
||
@Override
|
||
public void getRoomOnline(RoomOnline onlineBean) {
|
||
if (onlineBean != null) {
|
||
List<RoomOnlineBean> onlineBeans = new ArrayList<>();
|
||
if (onlineBean.getOn_pit().size() > 0) {
|
||
onlineBeans.addAll(onlineBean.getOn_pit());
|
||
}
|
||
if (onlineBean.getOff_pit().size() > 0) {
|
||
onlineBeans.addAll(onlineBean.getOff_pit());
|
||
}
|
||
likeUserAdapter.setNewData(onlineBeans.subList(0, onlineBeans.size() > 5 ? 5 : onlineBeans.size()));
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void applyPit() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void downPit() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void applySong() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void agreeSong() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onBackPressed() {
|
||
|
||
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
|
||
if (isFullScreen) {
|
||
exitFullScreen();
|
||
}
|
||
getSupportFragmentManager().popBackStack();
|
||
} else {
|
||
super.onBackPressed();
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void postRoomInfo(RoomInfoResp resp) {
|
||
RoomBean roomBean = resp.getRoom_info();
|
||
this.mRoomBean = roomBean;
|
||
this.mRoomUserBean = resp.getUser_info();
|
||
this.mRoomOwnerBean = resp.getRoom_owner();
|
||
this.mPitList = mRoomBean.getPit_list();
|
||
|
||
ImageUtils.loadHeadCC(resp.getRoom_info().getRoom_cover(), mBinding.roomTop.avatar);
|
||
mBinding.roomTop.name.setText(roomBean.getRoom_name());
|
||
mBinding.roomTop.idVal.setText(roomBean.getRoom_number());
|
||
if (mRoomUserBean.getIs_room_owner() == 1) {
|
||
mBinding.roomTop.btnFollow.setVisibility(GONE);
|
||
} else {
|
||
mBinding.roomTop.btnFollow.setVisibility(VISIBLE);
|
||
if (resp.isCollect()) {
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collected));
|
||
}
|
||
}
|
||
if (!isFinishing() && !isDestroyed()) {
|
||
|
||
|
||
if (roomFragment == null || !roomFragment.isAdded()) {
|
||
roomFragment = RoomFragment.newInstance(resp, "");
|
||
getSupportFragmentManager()
|
||
.beginTransaction()
|
||
.replace(R.id.vp_room_pager, roomFragment)
|
||
.commitAllowingStateLoss();
|
||
} else {
|
||
roomFragment.refreshData(resp);
|
||
}
|
||
} else {
|
||
Log.e("Fragment", "Fragment transaction skipped due to state loss.");
|
||
}
|
||
|
||
if (mRoomUserBean.getIs_collect() == 1) {
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yishouc));
|
||
} else {
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collect));
|
||
}
|
||
if (roomBean.getType_id().equals("1") && roomBean.getLabel_id().equals("2")) {
|
||
AgoraManager.getInstance(this).setBjMusic(false);
|
||
|
||
} else {
|
||
AgoraManager.getInstance(this).setBjMusic(true);
|
||
}
|
||
AgoraManager.getInstance(this).stopMuisc();
|
||
initializeAudio();
|
||
}
|
||
|
||
@Override
|
||
public void getCharmRank(List<RoomCharmRankBean> list) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void changeSong() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void hostUserPit() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void quitRoom() {
|
||
CommonAppContext.getInstance().isPlaying = false;
|
||
CommonAppContext.getInstance().isShow = false;
|
||
// AgoraManager.getInstance(this).destroy();
|
||
AgoraManager.getInstance(this).leaveRoom();
|
||
AgoraManager.getInstance(this).destroy();
|
||
V2TIMManager.getInstance().quitGroup("room" + roomId, new V2TIMCallback() {
|
||
@Override
|
||
public void onSuccess() {
|
||
// 退出群组成功
|
||
}
|
||
|
||
@Override
|
||
public void onError(int code, String desc) {
|
||
// 退出群组失败
|
||
}
|
||
});
|
||
finish();
|
||
}
|
||
|
||
@Override
|
||
public void userGuanzSuccess(String s) {
|
||
if (mRoomUserBean.getIs_collect() == 1) {
|
||
mRoomUserBean.setIs_collect(0);
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collect));
|
||
} else {
|
||
mRoomUserBean.setIs_collect(1);
|
||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yishouc));
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void acceptPk() {
|
||
|
||
}
|
||
|
||
private void queren1(String nickname) {
|
||
// 创建并显示确认对话框
|
||
new ConfirmDialog(this,
|
||
"温馨提示",
|
||
"您申请点歌模式被主持人拒绝",
|
||
"确认",
|
||
"取消",
|
||
v -> {
|
||
// 点击“确认”按钮时执行删除操作
|
||
|
||
},
|
||
v -> {
|
||
// 点击“取消”按钮时什么都不做
|
||
|
||
}, false, 0).show();
|
||
}
|
||
|
||
private void queren(String nickname) {
|
||
// 创建并显示确认对话框
|
||
new ConfirmDialog(this,
|
||
"温馨提示",
|
||
"亲爱的主持,您好!\n\n " + "\t" + nickname + "正在发起点唱申请,进入点唱模式后背景音乐将自动停止播放",
|
||
"确认",
|
||
"拒绝",
|
||
v -> {
|
||
// 点击“确认”按钮时执行
|
||
MvpPre.agreeSong(roomId, "1");
|
||
},
|
||
v -> {
|
||
// 点击“取消”按钮时什么都不做
|
||
MvpPre.agreeSong(roomId, "2");
|
||
}, true, 10).show();
|
||
}
|
||
|
||
|
||
@Override
|
||
protected void onDestroy() {
|
||
|
||
// 移除 EventBus 注册
|
||
if (EventBus.getDefault().isRegistered(this)) {
|
||
EventBus.getDefault().unregister(this);
|
||
}
|
||
MessageListenerSingleton.reset(roomId); // 主动清理
|
||
AgoraManager.getInstance(this).destroy(); // 确保释放 Agora 资源
|
||
if (customMusicFloatingView != null) {
|
||
customMusicFloatingView.destroy();
|
||
}
|
||
CommonAppContext.getInstance().isPlaying = false;
|
||
CommonAppContext.getInstance().isShow = false;
|
||
sDestroied = true;
|
||
SpUtil.setMusicName("");
|
||
if (isSave) {
|
||
finish();
|
||
}
|
||
if (silentCountDownTimer != null) {
|
||
silentCountDownTimer.release();
|
||
}
|
||
super.onDestroy();
|
||
}
|
||
|
||
@Override
|
||
protected void onSaveInstanceState(Bundle outState) {
|
||
super.onSaveInstanceState(outState);
|
||
isSave = true;
|
||
}
|
||
|
||
|
||
private static final String[] AUDIO_PERMISSIONS = {Manifest.permission.RECORD_AUDIO};
|
||
|
||
private void requestAudioPermission() {
|
||
if (!EasyPermissions.hasPermissions(getApplicationContext(), AUDIO_PERMISSIONS)) {
|
||
EasyPermissions.requestPermissions(
|
||
this,
|
||
"需要录音权限以使用语音功能",
|
||
1001,
|
||
AUDIO_PERMISSIONS
|
||
);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
|
||
}
|
||
|
||
@Override
|
||
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
|
||
if (perms.contains(Manifest.permission.RECORD_AUDIO)) {
|
||
Log.d("Permission", "录音权限已授权");
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
|
||
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
|
||
new AppSettingsDialog.Builder(this).build().show();
|
||
} else {
|
||
ToastUtils.showShort("需要录音权限才能继续");
|
||
}
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void onMusicEvent(Music event) {
|
||
if (customMusicFloatingView != null) {
|
||
customMusicFloatingView.onMusicEvent(event);
|
||
}
|
||
}
|
||
|
||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||
public void onMusicPlay(MusicPlayBean musicPlayBean) {
|
||
if (customMusicFloatingView != null) {
|
||
customMusicFloatingView.updateProgress(Math.toIntExact(musicPlayBean.getPosition()));
|
||
}
|
||
}
|
||
} |