Files
pdlivexp/live/src/main/java/com/yunbao/live/presenter/LiveLinkMicPresenter.java
2023-08-18 17:43:13 +08:00

785 lines
29 KiB
Java

package com.yunbao.live.presenter;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.BannerBean;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.utils.ClickUtil;
import com.yunbao.common.utils.CommonIconUtil;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ProcessResultUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveAudienceActivity;
import com.yunbao.live.dialog.LiveOneDialogFragment;
import com.yunbao.live.dialog.LiveTurnTableDialogFragment4Audience;
import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience;
import com.yunbao.live.event.LinkMicTxAccEvent;
import com.yunbao.live.event.LinkMicTxMixStreamEvent;
import com.yunbao.common.http.LiveHttpConsts;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.live.interfaces.ILiveLinkMicViewHolder;
import com.yunbao.live.interfaces.LivePushListener;
import com.yunbao.live.socket.SocketClient;
import com.yunbao.live.socket.SocketLinkMicUtil;
import com.yunbao.live.views.AbsLiveLinkMicPlayViewHolder;
import com.yunbao.live.views.AbsLiveLinkMicPushViewHolder;
import com.yunbao.live.views.LiveLinkMicPlayTxViewHolder;
import com.yunbao.live.views.LiveLinkMicPushTxViewHolder;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
/**
* Created by cxf on 2018/10/25.
* 观众和主播连麦的逻辑
*/
public class LiveLinkMicPresenter implements View.OnClickListener {
public static Context mContext;
private View mRoot;
private SocketClient mSocketClient;
private boolean mIsAnchor;//是否是主播
private static String mLiveUid;//主播的uid
private ViewGroup mSmallContainer;
private TextView mLinkMicTip;
private TextView mLinkMicWaitText;
private String mApplyUid;//正在申请连麦的人的uid
private String mLinkMicUid;//已经连麦的人的uid
private String mLinkMicName;//已经连麦的人的昵称
private long mLastApplyLinkMicTime;//观众上次申请连麦的时间
private boolean mIsLinkMic;//是否已经连麦了
private boolean mIsLinkMicDialogShow;//观众申请连麦的弹窗是否显示了
private boolean mAcceptLinkMic;//是否接受连麦
private String mLinkMicWaitString;
private int mLinkMicWaitCount;//连麦弹窗等待倒计时
private final int LINK_MIC_COUNT_MAX = 10;
private PopupWindow mLinkMicPopWindow;
private Handler mHandler;
private AbsLiveLinkMicPlayViewHolder mLiveLinkMicPlayViewHolder;//连麦播放小窗口
private AbsLiveLinkMicPushViewHolder mLiveLinkMicPushViewHolder;//连麦推流小窗口
private boolean mPaused;//是否执行了Activity周期的pause
private int mLiveSdk;
private View btnWishList;
private View btnTurnTable;
private View btn_onecz_event;
private String eventUrl;
//
private List<BannerBean> mBannerList1 = new ArrayList<>();
private List<BannerBean> mBannerList3 = new ArrayList<>();
String gold, experience;
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUpdata(String str) {
if ("stop_svga_new_user_double1".equals(str)) {
publicToast(mContext);
} else if ("stop_svga_new_user_follow1".equals(str)) {
publicToast(mContext);
} else if ("stop_new_user_gif1".equals(str)) {
publicToast(mContext);
}
}
public void publicToast(Context content) {
// 定义Toast对象
Toast toast = new Toast(content);
// 1、加载布局
View view = LayoutInflater.from(content).inflate(R.layout.diy_toast_view, null);
// 2、获取组件
TextView gold_text = view.findViewById(R.id.gold);
// 3、设置组件内容
gold_text.setText(gold);
TextView exp_txt = view.findViewById(R.id.exp);
// 3、设置组件内容
exp_txt.setText(experience);
// 4、将获取的view视图设置进Toast对象中
toast.setView(view);
// 5、设置toast位置
// 5-1、Gravity.CENTER | Gravity.TOP是设置toast在中间上方显示
// 5-2、300 表示距离左边300dp
// 5-3、250 表示距离上方250dp
toast.setGravity(Gravity.CENTER, Gravity.CENTER, Gravity.CENTER);
// 6、显示toast
toast.show();
}
public LiveLinkMicPresenter(Context context, ILiveLinkMicViewHolder linkMicViewHolder, boolean isAnchor, int liveSdk, View root) {
mContext = context;
EventBus.getDefault().register(this);
mRoot = root;
mIsAnchor = isAnchor;
mLiveSdk = liveSdk;
Log.e("ry", "画面来了");
mSmallContainer = linkMicViewHolder.getSmallContainer();
if (!isAnchor && root != null) {
View btnLinkMic = root.findViewById(R.id.btn_link_mic);
btnWishList = root.findViewById(R.id.btn_wishlist);
btnTurnTable = root.findViewById(R.id.btn_turntable);
btnLinkMic.setVisibility(View.VISIBLE);
btnLinkMic.setOnClickListener(this);
btnWishList.setOnClickListener(this);
btnTurnTable.setOnClickListener(this);
//周星
BannerBean bannerBean = new BannerBean();
bannerBean.setImageUrl("https://downs.yaoulive.com/img/BTN_WEEKSTAR%20%281%29.png");
bannerBean.setLink("zxb");
mBannerList1.add(bannerBean);
btn_onecz_event = root.findViewById(R.id.btn_onecz_event);
btn_onecz_event.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = CommonAppConfig.HOST + "/h5/activity/firstTopUp/index.html?&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken();
Bundle bundle = new Bundle();
bundle.putString("url", url);
LiveOneDialogFragment fragment = new LiveOneDialogFragment((Activity) mContext);
fragment.setArguments(bundle);
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveOneDialogFragment");
}
});
mLinkMicTip = btnLinkMic.findViewById(R.id.link_mic_tip);
}
mLinkMicWaitString =mContext.getString(R.string.link_mic_wait);
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
mLinkMicWaitCount--;
if (mLinkMicWaitCount > 0) {
if (mLinkMicWaitText != null) {
mLinkMicWaitText.setText(mLinkMicWaitString + "(" + mLinkMicWaitCount + "s)...");
if (mHandler != null) {
mHandler.sendEmptyMessageDelayed(0, 1000);
}
}
} else {
if (mLinkMicPopWindow != null) {
mLinkMicPopWindow.dismiss();
}
}
}
};
String turntableEnable = CommonAppConfig.getInstance().getTurnTableEnable();
getEvent();
if (turntableEnable != null && turntableEnable.equals("1")) {
//显示转盘
if (btnTurnTable != null)
btnTurnTable.setVisibility(View.VISIBLE);
} else {
if (btnTurnTable != null)
btnTurnTable.setVisibility(View.GONE);
}
}
public void setSocketClient(SocketClient socketClient) {
mSocketClient = socketClient;
}
/**
* 主播收到观众申请连麦的回调
*/
public void onAudienceApplyLinkMic(UserBean u) {
if (!mIsAnchor) {
return;
}
if (u == null) {
return;
}
if (isLinkMic() || ((LiveActivity) mContext).isLinkMicAnchor() || ((LiveActivity) mContext).isGamePlaying()) {
SocketLinkMicUtil.anchorBusy(mSocketClient, u.getId());
return;
}
if (!TextUtils.isEmpty(mApplyUid) && mApplyUid.equals(u.getId())) {
return;
}
if (!mIsLinkMic && !mIsLinkMicDialogShow) {
mApplyUid = u.getId();
showLinkMicDialog(u);
} else {
SocketLinkMicUtil.anchorBusy(mSocketClient, u.getId());
}
}
/**
* 观众收到主播同意连麦的回调
*/
public void onAnchorAcceptLinkMic() {
if (!mIsAnchor) {
mLastApplyLinkMicTime = 0;
ToastUtil.show(R.string.link_mic_anchor_accept);
mIsLinkMic = true;
mLinkMicUid = CommonAppConfig.getInstance().getUid();
if (mLinkMicTip != null) {
mLinkMicTip.setText(R.string.live_link_mic_3);
}
LiveHttpUtil.getLinkMicStream(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
JSONObject obj = JSON.parseObject(info[0]);
final String pushUrl = obj.getString("pushurl");
final String playUrl = obj.getString("playurl");
L.e("getLinkMicStream", "pushurl--推流地址--->" + pushUrl);
L.e("getLinkMicStream", "playurl--播放地址--->" + playUrl);
if (mLiveSdk == Constants.LIVE_SDK_TX) {
mLiveLinkMicPushViewHolder = new LiveLinkMicPushTxViewHolder(mContext, mSmallContainer);
mLiveLinkMicPushViewHolder.setLivePushListener(new LivePushListener() {
@Override
public void onPreviewStart() {
//预览成功的回调
}
@Override
public void onPushStart() {//推流成功的回调
SocketLinkMicUtil.audienceSendLinkMicUrl(mSocketClient, playUrl);
}
@Override
public void onPushFailed() {//推流失败的回调
DialogUitl.showSimpleDialog(mContext,mContext.getString(R.string.link_mic_failed_2), null);
SocketLinkMicUtil.audienceCloseLinkMic(mSocketClient);
}
});
mLiveLinkMicPushViewHolder.addToParent();
mLiveLinkMicPushViewHolder.startPush(pushUrl);
EventBus.getDefault().post(new LinkMicTxAccEvent(true));
}
}
}
});
}
}
/**
* 观众收到主播拒绝连麦的回调
*/
public void onAnchorRefuseLinkMic() {
mLastApplyLinkMicTime = 0;
ToastUtil.show(R.string.link_mic_refuse);
}
/**
* 所有人收到连麦观众发过来的播流地址的回调
*/
public void onAudienceSendLinkMicUrl(String uid, String uname, String playUrl) {
if (TextUtils.isEmpty(uid)) {
return;
}
if (mIsAnchor) {
if (!uid.equals(mApplyUid)) {
return;
}
LiveHttpUtil.linkMicShowVideo(uid, playUrl);
}
mApplyUid = null;
mLinkMicName = uname;
if (mLiveSdk != Constants.LIVE_SDK_TX) {
onLinkMicPlay(uid, playUrl);
} else {
if (mIsAnchor) {
onLinkMicPlay(uid, playUrl);
//主播混流
int startIndex = playUrl.lastIndexOf("/");
int endIndex = playUrl.indexOf("?", startIndex);
if (startIndex >= 0 && startIndex < playUrl.length()
&& endIndex >= 0 && endIndex < playUrl.length()
&& startIndex < endIndex) {
String toStream = playUrl.substring(startIndex + 1, endIndex);
if (!TextUtils.isEmpty(toStream)) {
EventBus.getDefault().post(new LinkMicTxMixStreamEvent(Constants.LINK_MIC_TYPE_NORMAL, toStream));
}
}
}
}
}
/**
* 显示连麦的播放窗口
*/
public void onLinkMicPlay(String uid, String playUrl) {
mLinkMicUid = uid;
if (mLiveSdk == Constants.LIVE_SDK_TX) {
mLiveLinkMicPlayViewHolder = new LiveLinkMicPlayTxViewHolder(mContext, mSmallContainer);
} else {
// mLiveLinkMicPlayViewHolder = new LiveLinkMicPlayKsyViewHolder(mContext, mSmallContainer);
}
mLiveLinkMicPlayViewHolder.setOnCloseListener(mIsAnchor ? this : null);
mLiveLinkMicPlayViewHolder.addToParent();
mLiveLinkMicPlayViewHolder.play(playUrl);
}
/**
* 关闭连麦
*/
private void closeLinkMic(String uid, String uname) {
if (!TextUtils.isEmpty(uid) && uid.equals(mLinkMicUid)) {
ToastUtil.show(uname +mContext.getString(R.string.link_mic_exit));
if (!mIsAnchor && !TextUtils.isEmpty(mLinkMicUid) && mLinkMicUid.equals(CommonAppConfig.getInstance().getUid())) {//参与连麦的是自己
if (mLiveLinkMicPushViewHolder != null) {
mLiveLinkMicPushViewHolder.release();
mLiveLinkMicPushViewHolder.removeFromParent();
}
mLiveLinkMicPushViewHolder = null;
if (mLinkMicTip != null) {
mLinkMicTip.setText(R.string.live_link_mic_2);
}
if (mLiveSdk == Constants.LIVE_SDK_TX) {
EventBus.getDefault().post(new LinkMicTxAccEvent(false));
}
} else {
if (mLiveLinkMicPlayViewHolder != null) {
mLiveLinkMicPlayViewHolder.release();
mLiveLinkMicPlayViewHolder.removeFromParent();
}
mLiveLinkMicPlayViewHolder = null;
if (mIsAnchor && mLiveSdk == Constants.LIVE_SDK_TX) {
EventBus.getDefault().post(new LinkMicTxMixStreamEvent(Constants.LINK_MIC_TYPE_NORMAL, null));
}
}
mIsLinkMic = false;
mLinkMicUid = null;
mLinkMicName = null;
}
}
/**
* 所有人收到主播关闭连麦的回调
*/
public void onAnchorCloseLinkMic(String uid, String uname) {
closeLinkMic(uid, uname);
}
/**
* 所有人收到已连麦观众关闭连麦的回调
*/
public void onAudienceCloseLinkMic(String uid, String uname) {
closeLinkMic(uid, uname);
}
/**
* 观众申请连麦时,收到主播无响应的回调
*/
public void onAnchorNotResponse() {
mLastApplyLinkMicTime = 0;
ToastUtil.show(R.string.link_mic_anchor_not_response);
}
/**
* 观众申请连麦时,收到主播正在忙的回调
*/
public void onAnchorBusy() {
mLastApplyLinkMicTime = 0;
ToastUtil.show(R.string.link_mic_anchor_busy);
}
/**
* 已连麦用户退出直播间的回调
*/
public void onAudienceLinkMicExitRoom(String touid) {
}
/**
* 观众退出直播间回调
*/
public void onAudienceLeaveRoom(UserBean bean) {
if (bean != null) {
String uid = bean.getId();
if (!TextUtils.isEmpty(uid)) {
if (uid.equals(mApplyUid)) {
if (mHandler != null) {
mHandler.removeCallbacksAndMessages(null);
}
if (mLinkMicPopWindow != null) {
mLinkMicPopWindow.dismiss();
}
}
if (uid.equals(mLinkMicUid)) {
closeLinkMic(uid, bean.getUserNiceName());
}
}
}
}
@Override
public void onClick(View v) {
if (!ClickUtil.canClick()) {
return;
}
int i = v.getId();
if (i == R.id.btn_link_mic) {
onLinkMicBtnClick();
} else if (i == R.id.btn_refuse) {
anchorRefuseLinkMicApply();
} else if (i == R.id.btn_accept) {
anchorAcceptLinkMicApply();
} else if (i == R.id.btn_wishlist) {
//打开主播的心愿单窗口
openWishListWindow();
} else if (i == R.id.btn_turntable) {
//打开转盘
openTurnTableWindow();
} else if (i == R.id.btn_close_link_mic) {
anchorCloseLinkMic();
}
}
/**
* 观众打开转盘窗口
*/
public void openTurnTableWindow() {
LiveTurnTableDialogFragment4Audience fragment = new LiveTurnTableDialogFragment4Audience();
Bundle bundle = new Bundle();
bundle.putString(Constants.LIVE_UID, mLiveUid);
fragment.setArguments(bundle);
if (mContext instanceof LiveAudienceActivity) {
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveTurnTableDialogFragment4Audience");
}
}
/**
* 观众打开主播的心愿单窗口
*/
public void openWishListWindow() {
LiveWishListDialogFragment4Audience fragment = new LiveWishListDialogFragment4Audience();
Bundle bundle = new Bundle();
bundle.putString(Constants.LIVE_UID, mLiveUid);
fragment.setArguments(bundle);
if (mContext instanceof LiveAudienceActivity) {
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveWishListDialogFragmentAudience");
}
}
private void onLinkMicBtnClick() {
if (((LiveActivity) mContext).isGamePlaying()) {
ToastUtil.show(R.string.live_game_cannot_link_mic);
return;
}
if (((LiveActivity) mContext).isLinkMicAnchor()) {
ToastUtil.show(R.string.live_link_mic_cannot_link);
return;
}
if (mIsLinkMic) {
SocketLinkMicUtil.audienceCloseLinkMic(mSocketClient);
} else {
checkLinkMicEnable();
}
}
/**
* 观众检查主播是否允许连麦
*/
private void checkLinkMicEnable() {
LiveHttpUtil.checkLinkMicEnable(mLiveUid, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
audienceApplyLinkMic();
} else {
ToastUtil.show(msg);
}
}
});
}
//获取活动
private void getEvent() {
if (btn_onecz_event != null) {
HttpClient.getInstance().get("Charge2.isFirstChargeIcons", "Charge2.isFirstChargeIcons")
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 200) {
JSONObject obj = JSON.parseObject(info[0]);
if (obj.getString("is_hidden").equals("1")) {
btn_onecz_event.setVisibility(View.GONE);
//首充值
BannerBean bannerBean1 = new BannerBean();
bannerBean1.setImageUrl(obj.getString("img"));
bannerBean1.setmIntoUrl(obj.getString("href"));
bannerBean1.setLink("sc");
mBannerList1.add(bannerBean1);
} else {
btn_onecz_event.setVisibility(View.GONE);
}
} else {
btn_onecz_event.setVisibility(View.GONE);
}
}
});
}
}
/**
* 观众发起连麦请求
*/
private void audienceApplyLinkMic() {
long curTime = System.currentTimeMillis();
if (curTime - mLastApplyLinkMicTime < 11000) {//时间间隔11秒
ToastUtil.show(R.string.link_mic_apply_waiting);
} else {
mLastApplyLinkMicTime = curTime;
//请求权限
ProcessResultUtil processResultUtil = ((LiveActivity) mContext).getProcessImageUtil();
if (processResultUtil == null) {
return;
}
processResultUtil.requestPermissions(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO
}, new Runnable() {
@Override
public void run() {
SocketLinkMicUtil.audienceApplyLinkMic(mSocketClient);
ToastUtil.show(R.string.link_mic_apply);
}
});
}
}
/**
* 主播显示连麦的弹窗
*/
private void showLinkMicDialog(UserBean u) {
mIsLinkMicDialogShow = true;
mAcceptLinkMic = false;
View v = LayoutInflater.from(mContext).inflate(R.layout.dialog_link_mic_wait, null);
ImageView avatar = (ImageView) v.findViewById(R.id.avatar);
TextView name = (TextView) v.findViewById(R.id.name);
ImageView sex = (ImageView) v.findViewById(R.id.sex);
ImageView level = (ImageView) v.findViewById(R.id.level);
mLinkMicWaitText = v.findViewById(R.id.wait_text);
v.findViewById(R.id.btn_refuse).setOnClickListener(this);
v.findViewById(R.id.btn_accept).setOnClickListener(this);
ImgLoader.display(mContext, u.getAvatar(), avatar);
name.setText(u.getUserNiceName());
sex.setImageResource(CommonIconUtil.getSexIcon(u.getSex()));
LevelBean levelBean = CommonAppConfig.getInstance().getLevel(u.getLevel());
if (levelBean != null) {
ImgLoader.display(mContext, levelBean.getThumb(), level);
}
mLinkMicWaitCount = LINK_MIC_COUNT_MAX;
mLinkMicWaitText.setText(mLinkMicWaitString + "(" + mLinkMicWaitCount + ")...");
mLinkMicPopWindow = new PopupWindow(v, DpUtil.dp2px(280), ViewGroup.LayoutParams.WRAP_CONTENT, true);
mLinkMicPopWindow.setBackgroundDrawable(new ColorDrawable());
mLinkMicPopWindow.setOutsideTouchable(true);
mLinkMicPopWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
if (mHandler != null) {
mHandler.removeCallbacksAndMessages(null);
}
if (mAcceptLinkMic) {
if (((LiveActivity) mContext).isGamePlaying()) {
ToastUtil.show(R.string.live_game_cannot_link_mic);
SocketLinkMicUtil.anchorRefuseLinkMic(mSocketClient, mApplyUid);
return;
}
if (((LiveActivity) mContext).isLinkMicAnchor()) {
ToastUtil.show(R.string.live_link_mic_cannot_link_2);
return;
}
SocketLinkMicUtil.anchorAcceptLinkMic(mSocketClient, mApplyUid);
mIsLinkMic = true;
} else {
if (mLinkMicWaitCount == 0) {
SocketLinkMicUtil.anchorNotResponse(mSocketClient, mApplyUid);
} else {
SocketLinkMicUtil.anchorRefuseLinkMic(mSocketClient, mApplyUid);
}
mApplyUid = null;
}
mIsLinkMicDialogShow = false;
mLinkMicWaitText = null;
mLinkMicPopWindow = null;
}
});
mLinkMicPopWindow.showAtLocation(mRoot, Gravity.CENTER, 0, 0);
if (mHandler != null) {
mHandler.sendEmptyMessageDelayed(0, 1000);
}
}
/**
* 主播拒绝连麦申请
*/
private void anchorRefuseLinkMicApply() {
if (mLinkMicPopWindow != null) {
mLinkMicPopWindow.dismiss();
}
}
/**
* 主播接受连麦申请
*/
private void anchorAcceptLinkMicApply() {
if (((LiveAnchorActivity) mContext).isBgmPlaying()) {
DialogUitl.showSimpleDialog(mContext,mContext.getString(R.string.link_mic_close_bgm), new DialogUitl.SimpleCallback() {
@Override
public void onConfirmClick(Dialog dialog, String content) {
((LiveAnchorActivity) mContext).stopBgm();
mAcceptLinkMic = true;
if (mLinkMicPopWindow != null) {
mLinkMicPopWindow.dismiss();
}
}
});
} else {
mAcceptLinkMic = true;
if (mLinkMicPopWindow != null) {
mLinkMicPopWindow.dismiss();
}
}
}
/**
* 主播断开 已连麦观众 的连麦
*/
private void anchorCloseLinkMic() {
SocketLinkMicUtil.anchorCloseLinkMic(mSocketClient, mLinkMicUid, mLinkMicName);
}
public void release() {
EventBus.getDefault().unregister(this);
LiveHttpUtil.cancel(LiveHttpConsts.GET_TX_LINK_MIC_ACC_URL);
LiveHttpUtil.cancel(LiveHttpConsts.GET_LINK_MIC_STREAM);
LiveHttpUtil.cancel(LiveHttpConsts.LINK_MIC_SHOW_VIDEO);
if (mHandler != null) {
mHandler.removeCallbacksAndMessages(null);
}
mHandler = null;
mSocketClient = null;
if (mLiveLinkMicPushViewHolder != null) {
mLiveLinkMicPushViewHolder.release();
}
if (mLiveLinkMicPlayViewHolder != null) {
mLiveLinkMicPlayViewHolder.release();
}
mLiveLinkMicPushViewHolder = null;
mLiveLinkMicPlayViewHolder = null;
}
public void pause() {
mPaused = true;
if (mLiveLinkMicPushViewHolder != null) {
mLiveLinkMicPushViewHolder.pause();
}
if (mLiveLinkMicPlayViewHolder != null) {
mLiveLinkMicPlayViewHolder.pause();
}
}
public void resume() {
if (mPaused) {
mPaused = false;
if (mLiveLinkMicPushViewHolder != null) {
mLiveLinkMicPushViewHolder.resume();
}
if (mLiveLinkMicPlayViewHolder != null) {
mLiveLinkMicPlayViewHolder.resume();
}
}
}
public boolean isLinkMic() {
return mIsLinkMic;
}
public void clearData() {
LiveHttpUtil.cancel(LiveHttpConsts.CHECK_LINK_MIC_ENABLE);
mIsLinkMic = false;
mIsLinkMicDialogShow = false;
mAcceptLinkMic = false;
mLastApplyLinkMicTime = 0;
mApplyUid = null;
mLinkMicUid = null;
mLinkMicName = null;
mLinkMicPopWindow = null;
if (mHandler != null) {
mHandler.removeCallbacksAndMessages(null);
}
if (mLiveLinkMicPlayViewHolder != null) {
mLiveLinkMicPlayViewHolder.release();
mLiveLinkMicPlayViewHolder.removeFromParent();
}
mLiveLinkMicPlayViewHolder = null;
if (mLiveLinkMicPushViewHolder != null) {
mLiveLinkMicPushViewHolder.release();
mLiveLinkMicPushViewHolder.removeFromParent();
}
mLiveLinkMicPushViewHolder = null;
}
public void setLiveSdk(int mLiveSDK) {
this.mLiveSdk = mLiveSDK;
}
}