diff --git a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java index 82a9de24b..2a8ba7c0b 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -85,6 +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.live.views.LiveEndViewHolder; import com.yunbao.live.views.LiveMusicViewHolder; import com.yunbao.live.views.LiveNewReadyRyViewHolder; @@ -909,6 +910,9 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl mLivePushViewHolder = null; mLiveReadyViewHolder = null; mLiveAnchorViewHolder = null; + if(MicStatusManager.getInstance().isAnchorOpenRoom()){ + MicStatusManager.getInstance().closeMic(mContext); + } L.e("LiveAnchorActivity-------onDestroy------->"); Bus.getOff(this); } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveMicAnchorDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveMicAnchorDialogFragment.java index 76a43e668..583902b65 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveMicAnchorDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveMicAnchorDialogFragment.java @@ -153,7 +153,7 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi Tips = bundle.getString("By"); listMicbtn.setOnClickListener(view -> { - if (!isOpenRoom()) { + if (!MicStatusManager.getInstance().isAnchorOpenRoom()) { return; } Tips = "1"; @@ -163,7 +163,7 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi }); requestMicBtn = mRootView.findViewById(R.id.guard_btn); requestMicBtn.setOnClickListener(view -> { - if (!isOpenRoom()) { + if (!MicStatusManager.getInstance().isAnchorOpenRoom()) { return; } Tips = "2"; @@ -174,7 +174,7 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi inviteMicBtn = mRootView.findViewById(R.id.fans_btn); inviteMicBtn.setVisibility(View.VISIBLE); inviteMicBtn.setOnClickListener(view -> { - if (!isOpenRoom()) { + if (!MicStatusManager.getInstance().isAnchorOpenRoom()) { return; } Tips = "3"; @@ -193,7 +193,7 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi mOpenMicLayout.setVisibility(View.GONE); mRefreshView.setVisibility(View.VISIBLE); mDisconnectMic.setVisibility(View.VISIBLE); - isOpenRoom = true; + MicStatusManager.getInstance().setAnchorOpenRoom(true); mRefreshView.initData(); } }, Throwable::printStackTrace) @@ -208,8 +208,13 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi mDisconnectMic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - closeMic(); - + DialogUitl.showSimpleDialog(mContext, "是否確認關閉語音連麥", new DialogUitl.SimpleCallback() { + @Override + public void onConfirmClick(Dialog dialog, String content) { + MicStatusManager.getInstance().closeMic(mContext); + LiveMicAnchorDialogFragment.this.dismiss(); + } + }); } }); userMicInfoAdapter = new AnchorUserMicInfoAdapter(mContext, LiveMicAnchorDialogFragment.this); @@ -345,7 +350,6 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi } } - private boolean isOpenRoom = false; private void initData() { LiveHttpUtil.getMicList(mLiveUid, 0, new HttpCallback() { @@ -359,36 +363,12 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi no_more.setVisibility(View.GONE); mDisconnectMic.setVisibility(View.INVISIBLE); } else { - isOpenRoom = true; + MicStatusManager.getInstance().setAnchorOpenRoom(true); } } }); } - private boolean isOpenRoom() { - return isOpenRoom; - } - - private void closeMic() { - DialogUitl.showSimpleDialog(mContext, "是否確認關閉語音連麥", new DialogUitl.SimpleCallback() { - @Override - public void onConfirmClick(Dialog dialog, String content) { - API.get().pdLiveApi(mContext) - .delDrLm() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer>() { - @Override - public void accept(ResponseModel stringResponseModel) throws Exception { - System.out.println("stringResponseModel.getData() = " + stringResponseModel.getData()); - LiveMicAnchorDialogFragment.this.dismiss(); - } - }, Throwable::printStackTrace) - .isDisposed(); - } - }); - - } /** * 用于更新连麦对话框数据 diff --git a/live/src/main/java/com/yunbao/live/utils/MicStatusManager.java b/live/src/main/java/com/yunbao/live/utils/MicStatusManager.java index 1698aa54e..002f5dd56 100644 --- a/live/src/main/java/com/yunbao/live/utils/MicStatusManager.java +++ b/live/src/main/java/com/yunbao/live/utils/MicStatusManager.java @@ -1,21 +1,25 @@ 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 com.yunbao.live.activity.LiveActivity; - -import org.greenrobot.eventbus.EventBus; 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; /** * 统一管理连麦状态 @@ -27,6 +31,7 @@ public class MicStatusManager { private static MicStatusManager manager; private int micStatus;//连麦状态 private String micLiveId;//主播uid + private boolean anchorOpenRoom = false; public static MicStatusManager getInstance() { if (manager == null) { @@ -43,6 +48,14 @@ public class MicStatusManager { this.micStatus = micStatus; } + public boolean isAnchorOpenRoom() { + return anchorOpenRoom; + } + + public void setAnchorOpenRoom(boolean anchorOpenRoom) { + this.anchorOpenRoom = anchorOpenRoom; + } + public void clear() { micStatus = 0; micLiveId = ""; @@ -125,4 +138,26 @@ public class MicStatusManager { } }); } + + /** + * 主播关闭连麦权限 + */ + public void closeMic(Context mContext) { + API.get().pdLiveApi(mContext) + .delDrLm() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer>() { + @Override + public void accept(ResponseModel stringResponseModel) throws Exception { + System.out.println("stringResponseModel.getData() = " + stringResponseModel.getData()); + anchorOpenRoom = false; + } + }, Throwable::printStackTrace) + .isDisposed(); + } + + public boolean isMic() { + return micStatus == MIC_TYPE_OPEN; + } }