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 600c7c318..be7ab8c0c 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -66,6 +66,7 @@ import com.yunbao.live.bean.LiveGuardInfo; import com.yunbao.live.bean.LiveKsyConfigBean; import com.yunbao.live.bean.LiveReceiveGiftBean; import com.yunbao.live.bean.LiveUserGiftBean; +import com.yunbao.live.bean.MicUserBean; import com.yunbao.live.dialog.LiveLinkMicListDialogFragment; import com.yunbao.live.dialog.LiveMicAnchorDialogFragment; import com.yunbao.live.dialog.LiveNewFunctionDialogFragment; @@ -1321,7 +1322,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } break; case LINK_MIC: - if(!StringUtil.isEmpty(((LinkMicUserBean) event.getObject()).getUid())) { + if (!StringUtil.isEmpty(((LinkMicUserBean) event.getObject()).getUid())) { mMicQueueList.put(((LinkMicUserBean) event.getObject()).getUid(), (LinkMicUserBean) event.getObject()); } if (micListener != null) { @@ -1338,7 +1339,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl List list = (List) event.getObject(); mMicQueueList.clear(); for (LinkMicUserBean bean : list) { - if(!StringUtil.isEmpty(bean.getUid())) { + if (!StringUtil.isEmpty(bean.getUid())) { mMicQueueList.put(bean.getUid(), bean); } } @@ -1355,4 +1356,26 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } } + /** + * 检查指定直播间连麦人数 + * + * @param mLiveUid 直播间 + */ + public static void checkMicUserLength(String mLiveUid, LiveFunctionClickListener listener) { + LiveHttpUtil.getMicList(mLiveUid, 0, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0) { + try { + JSONObject obj = JSON.parseObject(info[0]); + List list = JSON.parseArray(obj.getString("userlist"), MicUserBean.class); + listener.onClick(list.size()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + } + }); + } } diff --git a/live/src/main/java/com/yunbao/live/adapter/AnchorUserMicInfoAdapter.java b/live/src/main/java/com/yunbao/live/adapter/AnchorUserMicInfoAdapter.java index f1666a46c..bf1355ea3 100644 --- a/live/src/main/java/com/yunbao/live/adapter/AnchorUserMicInfoAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/AnchorUserMicInfoAdapter.java @@ -27,11 +27,14 @@ import com.yunbao.common.http.API; import com.yunbao.common.http.ResponseModel; import com.yunbao.common.utils.CommonIconUtil; import com.yunbao.common.utils.SVGAViewUtils; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.live.R; import com.yunbao.live.activity.LiveActivity; import com.yunbao.live.activity.LiveAudienceActivity; +import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.bean.MicUserBean; import com.yunbao.live.event.LiveRoomChangeEvent; +import com.yunbao.live.interfaces.LiveFunctionClickListener; import com.yunbao.live.socket.SocketSendBean; import org.greenrobot.eventbus.EventBus; @@ -116,12 +119,23 @@ public class AnchorUserMicInfoAdapter extends RefreshAdapter { mBtn.setOnClickListener(v -> { if (v.getTag() != null) { MicUserBean tag = (MicUserBean) v.getTag(); - if (tag.getType() == TYPE_MIC_REQUEST) { - applyMic(tag, 4, createSocketSendBean()); - } else if (tag.getType() == TYPE_MIC_INVITE) { - SocketSendBean bean = createSocketSendBean().param("targetId", tag.getId()); - applyMic(tag, 1, bean); - } + LiveRyAnchorActivity.checkMicUserLength(mLiveUid, new LiveFunctionClickListener() { + @Override + public void onClick(int length) { + //只允许最多3人连麦(加主播4人) + if (length < 4) { + if (tag.getType() == TYPE_MIC_REQUEST) { + applyMic(tag, 4, createSocketSendBean()); + } else if (tag.getType() == TYPE_MIC_INVITE) { + SocketSendBean bean = createSocketSendBean().param("targetId", tag.getId()); + applyMic(tag, 1, bean); + } + }else{ + ToastUtil.show("仅允许三人与主播连麦"); + } + } + }); + } }); mClose.setOnClickListener(v -> { @@ -149,6 +163,10 @@ public class AnchorUserMicInfoAdapter extends RefreshAdapter { .param("uid", CommonAppConfig.getInstance().getUid()); } + /** + * 发送IM消息 + * @param action 4为同意请求,1为邀请,其余见 {@link com.yunbao.live.socket.SocketRyClient} Constants.LIAN_MAI解析 + */ void applyMic(MicUserBean bean, int action, SocketSendBean msg) { msg.param("action", action); msg.create(); 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 5dd57e57f..5464325d2 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveMicAnchorDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveMicAnchorDialogFragment.java @@ -153,44 +153,35 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi mNoMoreDesc = mRootView.findViewById(R.id.no_more_desc); Tips = bundle.getString("By"); - listMicbtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!isOpenRoom()) { - return; - } - Tips = "1"; - Up(); - type = "guanzhong"; - mRefreshView.initData(); + listMicbtn.setOnClickListener(view -> { + if (!isOpenRoom()) { + return; } + Tips = "1"; + Up(); + type = "guanzhong"; + mRefreshView.initData(); }); requestMicBtn = mRootView.findViewById(R.id.guard_btn); - requestMicBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!isOpenRoom()) { - return; - } - Tips = "2"; - Up(); - type = "guard"; - mRefreshView.initData(); + requestMicBtn.setOnClickListener(view -> { + if (!isOpenRoom()) { + return; } + Tips = "2"; + Up(); + type = "guard"; + mRefreshView.initData(); }); inviteMicBtn = mRootView.findViewById(R.id.fans_btn); inviteMicBtn.setVisibility(View.VISIBLE); - inviteMicBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!isOpenRoom()) { - return; - } - Tips = "3"; - Up(); - type = "fans"; - mRefreshView.initData(); + inviteMicBtn.setOnClickListener(view -> { + if (!isOpenRoom()) { + return; } + Tips = "3"; + Up(); + type = "fans"; + mRefreshView.initData(); }); mOpenMicBtn.setOnClickListener(v -> { API.get().pdLiveApi(mContext) @@ -362,6 +353,7 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi @Override public void onSuccess(int code, String msg, String[] info) { System.out.println("code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); + //非0认为未开通连麦权限 if (code != 0) { mOpenMicLayout.setVisibility(View.VISIBLE); mRefreshView.setVisibility(View.GONE); @@ -399,6 +391,9 @@ public class LiveMicAnchorDialogFragment extends AbsDialogFragment implements Vi } + /** + * 用于更新连麦对话框数据 + */ public interface OnMicListener { void updateMicList(TreeMap list);