调整检测连麦对话框位置
修复一处闪退问题
This commit is contained in:
@@ -92,7 +92,7 @@ import com.yunbao.live.http.ImHttpUtil;
|
||||
import com.yunbao.live.http.LiveHttpConsts;
|
||||
import com.yunbao.live.http.LiveHttpUtil;
|
||||
import com.yunbao.live.presenter.LiveRoomCheckLivePresenter;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
import com.yunbao.live.views.LiveRoomPlayViewHolder;
|
||||
import com.yunbao.live.views.PortraitLiveManager;
|
||||
|
||||
@@ -1211,13 +1211,7 @@ public class LiveAudienceActivity extends LiveActivity {
|
||||
int liveTypeVal, String key, Map<String, String> map, int position, int liveSdk) {
|
||||
if (MicStatusManager.getInstance().getMicStatus() != MicStatusManager.MIC_TYPE_DEFAULT &&
|
||||
!MicStatusManager.getInstance().getMicLiveId().equals(liveBean.getUid())) {
|
||||
Log.i("连麦",MicStatusManager.getInstance().toString()+" | "+liveBean.getUid());
|
||||
DialogUitl.showSimpleDialog(context, "當前正在連麥中,是否退出連麥", new DialogUitl.SimpleCallback() {
|
||||
@Override
|
||||
public void onConfirmClick(Dialog dialog, String content) {
|
||||
MicStatusManager.getInstance().downMic();
|
||||
}
|
||||
});
|
||||
MicStatusManager.getInstance().showDownMicDialog(context);
|
||||
return;
|
||||
}
|
||||
Intent intent = new Intent(context, LiveAudienceActivity.class);
|
||||
|
||||
@@ -85,7 +85,7 @@ import com.yunbao.live.presenter.LiveRyLinkMicPkPresenter;
|
||||
import com.yunbao.live.socket.SocketRyChatUtil;
|
||||
import com.yunbao.live.socket.SocketRyClient;
|
||||
import com.yunbao.live.socket.SocketSendBean;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
import com.yunbao.live.views.LiveEndViewHolder;
|
||||
import com.yunbao.live.views.LiveMusicViewHolder;
|
||||
import com.yunbao.live.views.LiveNewReadyRyViewHolder;
|
||||
|
||||
@@ -126,7 +126,7 @@ public class AnchorUserMicInfoAdapter extends RefreshAdapter<MicUserBean> {
|
||||
@Override
|
||||
public void onClick(int length) {
|
||||
//只允许最多3人连麦(加主播4人)
|
||||
if (length < 4) {
|
||||
if (length <= 4) {
|
||||
if (tag.getType() == TYPE_MIC_REQUEST) {
|
||||
applyMic(tag, 4, createSocketSendBean());
|
||||
} else if (tag.getType() == TYPE_MIC_INVITE) {
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.utils.JavascriptInterfaceUtils;
|
||||
import com.yunbao.common.utils.L;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.live.R;
|
||||
@@ -242,6 +243,10 @@ public class LiveHDDialogFragment extends AbsDialogFragment {
|
||||
return;
|
||||
}
|
||||
dismiss();
|
||||
if(MicStatusManager.getInstance().isMic()){
|
||||
MicStatusManager.getInstance().showDownMicDialog(mContext);
|
||||
return;
|
||||
}
|
||||
EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, liveTypeVal));
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import com.yunbao.common.bean.LiveUserGiftBean;
|
||||
import com.yunbao.live.bean.MicUserBean;
|
||||
import com.yunbao.live.http.LiveHttpUtil;
|
||||
import com.yunbao.live.utils.LiveImDeletUtil;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -36,7 +36,7 @@ import com.yunbao.live.bean.MicUserBean;
|
||||
import com.yunbao.live.http.LiveHttpUtil;
|
||||
import com.yunbao.live.socket.SocketSendBean;
|
||||
import com.yunbao.live.utils.LiveImDeletUtil;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
|
||||
@@ -20,8 +20,7 @@ import com.yunbao.live.event.LiveAudienceEvent;
|
||||
import com.yunbao.live.event.LiveRoomChangeEvent;
|
||||
import com.yunbao.live.http.LiveHttpUtil;
|
||||
import com.yunbao.live.presenter.LiveRoomCheckLivePresenter;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.live.views.LivePlayRyViewHolder;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
package com.yunbao.live.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.bean.BaseModel;
|
||||
import com.yunbao.common.http.API;
|
||||
import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.http.HttpClient;
|
||||
import com.yunbao.common.http.ResponseModel;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
|
||||
import cn.rongcloud.rtc.api.RCRTCEngine;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
|
||||
import cn.rongcloud.rtc.api.callback.IRCRTCSwitchRoleCallback;
|
||||
import cn.rongcloud.rtc.base.RTCErrorCode;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* 统一管理连麦状态
|
||||
*/
|
||||
public class MicStatusManager {
|
||||
public static final int MIC_TYPE_DEFAULT = 0;//默认状态,未连麦
|
||||
public static final int MIC_TYPE_REQUEST = 1;//请求连麦中
|
||||
public static final int MIC_TYPE_OPEN = 2;//连麦中
|
||||
private static MicStatusManager manager;
|
||||
private int micStatus;//连麦状态
|
||||
private String micLiveId;//主播uid
|
||||
private boolean anchorOpenRoom = false;
|
||||
|
||||
public static MicStatusManager getInstance() {
|
||||
if (manager == null) {
|
||||
manager = new MicStatusManager();
|
||||
}
|
||||
return manager;
|
||||
}
|
||||
|
||||
private MicStatusManager() {
|
||||
}
|
||||
|
||||
public void setMicData(int micStatus, String micLiveId) {
|
||||
this.micLiveId = micLiveId;
|
||||
this.micStatus = micStatus;
|
||||
}
|
||||
|
||||
public boolean isAnchorOpenRoom() {
|
||||
return anchorOpenRoom;
|
||||
}
|
||||
|
||||
public void setAnchorOpenRoom(boolean anchorOpenRoom) {
|
||||
this.anchorOpenRoom = anchorOpenRoom;
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
micStatus = 0;
|
||||
micLiveId = "";
|
||||
}
|
||||
|
||||
public int getMicStatus() {
|
||||
return micStatus;
|
||||
}
|
||||
|
||||
public String getMicLiveId() {
|
||||
return micLiveId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "MicStatusManager{" +
|
||||
"micStatus=" + micStatus +
|
||||
", micLiveId='" + micLiveId + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
/**
|
||||
* 断开连麦
|
||||
*/
|
||||
public void downMic() {
|
||||
HttpClient.getInstance().get("live.leaveDrLm", "live.leaveDrLm")
|
||||
.params("roomid", micLiveId)
|
||||
.params("uid", CommonAppConfig.getInstance().getUid())
|
||||
.execute(new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
Log.e("ry", code + "退出多人");
|
||||
RCRTCEngine.getInstance().getRoom().getLocalUser().switchToAudience(new IRCRTCSwitchRoleCallback() {
|
||||
|
||||
/**
|
||||
* 当切换失败且SDK处于无法回退状态时回调,该角色已经无法使用当前角色继续进行音视频。
|
||||
* SDK内部会退出房间并清理所有资源,该用户只能重新加入房间才能继续音视频。
|
||||
*/
|
||||
@Override
|
||||
public void onKicked() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.e("ry", "下麦成功");
|
||||
// 该用户切换为观众成功,可以以观众身份进行音视频
|
||||
//退出rtc播放
|
||||
RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.e("ry", "退出多人房间成功");
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
public void run() {
|
||||
MicStatusManager.getInstance().clear();
|
||||
ToastUtil.show("已成功退出語音連麥");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
Log.e("ry", errorCode + "退出多人房间成功");
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 当切换失败且不影响当前角色继续音视频时回调
|
||||
* @param errorCode 失败错误码
|
||||
*/
|
||||
@Override
|
||||
public void onFailed(RTCErrorCode errorCode) {
|
||||
Log.e("ry", "下麦失败" + errorCode);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 主播关闭连麦权限
|
||||
*/
|
||||
public void closeMic(Context mContext) {
|
||||
API.get().pdLiveApi(mContext)
|
||||
.delDrLm()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Consumer<ResponseModel<BaseModel>>() {
|
||||
@Override
|
||||
public void accept(ResponseModel<BaseModel> stringResponseModel) throws Exception {
|
||||
System.out.println("stringResponseModel.getData() = " + stringResponseModel.getData());
|
||||
anchorOpenRoom = false;
|
||||
}
|
||||
}, Throwable::printStackTrace)
|
||||
.isDisposed();
|
||||
}
|
||||
|
||||
public boolean isMic() {
|
||||
return micStatus == MIC_TYPE_OPEN;
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.lzy.okserver.OkDownload;
|
||||
import com.lzy.okserver.download.DownloadTask;
|
||||
import com.tencent.live2.V2TXLiveDef;
|
||||
@@ -26,7 +25,6 @@ import com.tencent.live2.V2TXLivePlayerObserver;
|
||||
import com.tencent.live2.impl.V2TXLivePlayerImpl;
|
||||
import com.tencent.rtmp.ui.TXCloudVideoView;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.http.CommonHttpConsts;
|
||||
import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.http.HttpClient;
|
||||
import com.yunbao.common.utils.DialogUitl;
|
||||
@@ -37,7 +35,7 @@ import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.activity.LiveActivity;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
@@ -138,7 +138,7 @@ import com.yunbao.live.presenter.LiveEnterRoomAnimPresenter;
|
||||
import com.yunbao.live.presenter.LiveGiftAnimPresenter;
|
||||
import com.yunbao.live.presenter.LiveLightAnimPresenter;
|
||||
import com.yunbao.live.presenter.LiveRoomCheckLivePresenter;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@@ -2094,20 +2094,6 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
|
||||
}
|
||||
|
||||
getIsHot();
|
||||
getGuardInfo();
|
||||
}
|
||||
|
||||
private void getGuardInfo() {
|
||||
LiveHttpUtil.getUserList(mLiveUid, mStream, "guard", 1, new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
JSONObject json = JSONObject.parseObject(info[0]);
|
||||
JSONArray userlist = json.getJSONArray("userlist");
|
||||
if (userlist.size() != 0) {
|
||||
setGuardIcon(JSONArray.parseArray(userlist.toJSONString(), LiveUserGiftBean.class).get(0));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setGuardIcon(LiveUserGiftBean guard) {
|
||||
|
||||
@@ -88,7 +88,7 @@ import com.yunbao.live.socket.SocketRyChatUtil;
|
||||
import com.yunbao.live.socket.SocketRyClient;
|
||||
import com.yunbao.live.socket.SocketSendBean;
|
||||
import com.yunbao.live.utils.LiveImDeletUtil;
|
||||
import com.yunbao.live.utils.MicStatusManager;
|
||||
import com.yunbao.common.utils.MicStatusManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
@@ -457,6 +457,8 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
|
||||
mLiveRoomViewHolder.setGuardIcon(data.getGuardUserAvatar());
|
||||
//在线列表
|
||||
mLiveRoomViewHolder.setUserList(data.getEnterRoomInfo().getUserlists());
|
||||
//设置直播信息
|
||||
mLiveRoomViewHolder.setLiveInfo(mLiveBean.getUid(), mLiveBean.getStream(), Integer.parseInt(data.getEnterRoomInfo().getUserlistTime()) * 4000);
|
||||
List<BannerBean> bannerBeans = new ArrayList<>();
|
||||
//心愿单
|
||||
if (data.getWishList().getWishList().size() > 0) {
|
||||
|
||||
Reference in New Issue
Block a user