From 7d46ab8520bb47d69e03bcc51f9a545ee430e790 Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Mon, 29 Apr 2024 09:30:04 +0800 Subject: [PATCH] =?UTF-8?q?add[=E5=A3=B0=E6=9C=9B=E5=8D=87=E7=BA=A7-?= =?UTF-8?q?=E5=A4=9A=E4=BA=BAPK]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../faceunity/agora/SWAuManager.java | 21 ++ .../yunbao/live/activity/LiveActivity.java | 1 + .../live/presenter/LiveLinkMicPresenter.java | 1 + .../presenter/LiveRyLinkMicPkPresenter.java | 349 ++++++------------ .../yunbao/live/socket/SocketRyClient.java | 5 +- .../live/views/LivePlayRyViewHolder.java | 100 ++--- .../live/views/LivePushRyViewHolder.java | 3 +- .../yunbao/live/views/LiveRoomViewHolder.java | 13 +- .../live/views/PortraitLiveManager.java | 23 +- 9 files changed, 201 insertions(+), 315 deletions(-) diff --git a/lib_faceunity/src/main/java/io/agora/beautyapi/faceunity/agora/SWAuManager.java b/lib_faceunity/src/main/java/io/agora/beautyapi/faceunity/agora/SWAuManager.java index 86fe52473..c918292b3 100644 --- a/lib_faceunity/src/main/java/io/agora/beautyapi/faceunity/agora/SWAuManager.java +++ b/lib_faceunity/src/main/java/io/agora/beautyapi/faceunity/agora/SWAuManager.java @@ -154,6 +154,26 @@ public class SWAuManager extends BaseCacheManager { }); } + /** + * 与主播连麦 + * @param isUp true 上麦 false 下麦 + */ + public void setMicAn(boolean isUp) { + L.eSw("setMicAn-isUp:"+isUp); + ChannelMediaOptions options = new ChannelMediaOptions(); + if(isUp){ + options.publishCameraTrack = false; //控制是否发视频 + options.publishMicrophoneTrack = true; //控制是否发音频 + options.clientRoleType = Constants.CLIENT_ROLE_BROADCASTER; //设置身份为主播 + }else{ + options.publishCameraTrack = false; //控制是否发视频 + options.publishMicrophoneTrack = false; //控制是否发音频 + options.clientRoleType = Constants.CLIENT_ROLE_AUDIENCE; //设置身份为观众 + options.audienceLatencyLevel=Constants.AUDIENCE_LATENCY_LEVEL_LOW_LATENCY ;//设置为极速直播观众 + } + mRtcEngine.updateChannelMediaOptions(options); + } + /** * PK-加入对方主播直播间 * @param strUid @@ -272,4 +292,5 @@ public class SWAuManager extends BaseCacheManager { public void setLinkUserContainer(FrameLayout linkUserContainer) { this.linkUserContainer = linkUserContainer; } + } diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index ae1212ba2..73e8c3609 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -557,6 +557,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL */ @Override public void onAnchorAcceptLinkMic() { + L.eSw("onAnchorAcceptLinkMic(1)"); if (mLiveLinkMicPresenter != null) { mLiveLinkMicPresenter.onAnchorAcceptLinkMic(); } diff --git a/live/src/main/java/com/yunbao/live/presenter/LiveLinkMicPresenter.java b/live/src/main/java/com/yunbao/live/presenter/LiveLinkMicPresenter.java index 94e948388..79ecd5f25 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveLinkMicPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveLinkMicPresenter.java @@ -313,6 +313,7 @@ public class LiveLinkMicPresenter implements View.OnClickListener { * 所有人收到连麦观众发过来的播流地址的回调 */ public void onAudienceSendLinkMicUrl(String uid, String uname, String playUrl) { + L.eSw("onAudienceSendLinkMicUrl,主播同意"); if (TextUtils.isEmpty(uid)) { return; } diff --git a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java index 2f69d8575..1d470ddda 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -522,26 +522,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { if (livePushRyViewHolder != null) { livePushRyViewHolder.setAnDrPkRtc(String.valueOf(u.getId()), -1); } - HttpClient.getInstance().get("Live.getDRPKroom", "Live.getDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", CommonAppConfig.getInstance().getUid()).execute(new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if(info.length>0){ - JSONObject obj = JSONObject.parseObject(info[0]); - drPkbeans = JSONObject.parseArray(obj.getString("userlist"), DrPkbean.class); - int removeIndex = -1; - for (int i = 0; i < drPkbeans.size(); i++) { - if (CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { - removeIndex = i; - } - } - if (removeIndex != -1) { - drPkbeans.remove(removeIndex); - L.eSw("将自己从多人pk列表里剔除" + new Gson().toJson(drPkbeans)); - } - dRjoinOtherRoom(drPkbeans); - } - } - }); + dRjoinOtherRoom(u); } /** @@ -1076,7 +1057,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } } - dRjoinOtherRoom(drPkbeans); + dRjoinOtherRoom(u); /*for (int i = 0; i < users.size(); i++) { JSONObject user = users.getJSONObject(i); @@ -1219,219 +1200,121 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } } + public void setMyDrPkDetailsView(){ + detailsView1 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); + detailsLinearLayout1 = detailsView1.findViewById(R.id.lin_pk1); + linearGrade1 = detailsView1.findViewById(R.id.linear_grade1); + imageGrade1 = detailsView1.findViewById(R.id.image_grade1); + textGrade1 = detailsView1.findViewById(R.id.text_grade1); + textPkName1 = detailsView1.findViewById(R.id.text_pk_name1); + imageGrade1.setTag(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId())); + livePushRyViewHolder.dr1_preview.addView(detailsView1); + detailsLinearLayout1.setVisibility(View.VISIBLE); + linearGrade1.setVisibility(View.GONE); + } + + boolean isShow = false; //多人PK接受申请画 加入副房间 - public void dRjoinOtherRoom(List drPkbeanList) { - L.eSw("dRjoinOtherRoom:size:" + drPkbeanList.size() + " json " + new Gson().toJson(drPkbeanList)); - if (drPkbeanList.size() == 1) { - String uid = String.valueOf(drPkbeanList.get(0).getId()); - //设置多人PK数据 - LiveNetManager.get(mContext).getLiveInfo(uid, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - if(detailsView2!=null){ - livePushRyViewHolder.dr2_preview.removeView(detailsView2); - } - detailsView2 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout2 = detailsView2.findViewById(R.id.lin_pk2); - linearGrade2 = detailsView2.findViewById(R.id.linear_grade2); - textPkName2 = detailsView2.findViewById(R.id.text_pk_name2); - imageGrade2 = detailsView2.findViewById(R.id.image_grade2); - textGrade2 = detailsView2.findViewById(R.id.text_grade2); - imageGrade2.setTag(uid); - textPkName2.setText(data.getUserNicename()); - livePushRyViewHolder.dr2_preview.addView(detailsView2); - detailsLinearLayout2.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred"); - } - }); - - detailsView1 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout1 = detailsView1.findViewById(R.id.lin_pk1); - linearGrade1 = detailsView1.findViewById(R.id.linear_grade1); - imageGrade1 = detailsView1.findViewById(R.id.image_grade1); - textGrade1 = detailsView1.findViewById(R.id.text_grade1); - textPkName1 = detailsView1.findViewById(R.id.text_pk_name1); - imageGrade1.setTag(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId())); - livePushRyViewHolder.dr1_preview.addView(detailsView1); - detailsLinearLayout1.setVisibility(View.VISIBLE); - linearGrade1.setVisibility(View.GONE); - - - Log.e("ry", "多人接受成功" + uid); - ToastUtil.show(WordUtil.isNewZh() ? "接受成功" : "Success"); - } else if (drPkbeanList.size() == 2) { - String uid1 = String.valueOf(drPkbeanList.get(0).getId()); - String uid2 = String.valueOf(drPkbeanList.get(1).getId()); - //设置多人PK数据 - LiveNetManager.get(mContext).getLiveInfo(uid1, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - if(detailsView2!=null){ - livePushRyViewHolder.dr2_preview.removeView(detailsView2); - } - detailsView2 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout2 = detailsView2.findViewById(R.id.lin_pk2); - linearGrade2 = detailsView2.findViewById(R.id.linear_grade2); - textPkName2 = detailsView2.findViewById(R.id.text_pk_name2); - imageGrade2 = detailsView2.findViewById(R.id.image_grade2); - textGrade2 = detailsView2.findViewById(R.id.text_grade2); - imageGrade2.setTag(uid1); - textPkName2.setText(data.getUserNicename()); - livePushRyViewHolder.dr2_preview.addView(detailsView2); - detailsLinearLayout2.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred"); - } - }); - - detailsView1 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout1 = detailsView1.findViewById(R.id.lin_pk1); - linearGrade1 = detailsView1.findViewById(R.id.linear_grade1); - imageGrade1 = detailsView1.findViewById(R.id.image_grade1); - textGrade1 = detailsView1.findViewById(R.id.text_grade1); - textPkName1 = detailsView1.findViewById(R.id.text_pk_name1); - imageGrade1.setTag(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId())); - livePushRyViewHolder.dr1_preview.addView(detailsView1); - detailsLinearLayout1.setVisibility(View.VISIBLE); - linearGrade1.setVisibility(View.GONE); - - LiveNetManager.get(mContext).getLiveInfo(uid2, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - if(detailsView4!=null){ - livePushRyViewHolder.dr4_preview.removeView(detailsView4); - } - detailsView4 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout4 = detailsView4.findViewById(R.id.lin_pk4); - linearGrade4 = detailsView4.findViewById(R.id.linear_grade4); - textPkName4 = detailsView4.findViewById(R.id.text_pk_name4); - imageGrade4 = detailsView4.findViewById(R.id.image_grade4); - textGrade4 = detailsView4.findViewById(R.id.text_grade4); - imageGrade4.setTag(uid2); - textPkName4.setText(data.getUserNicename()); - livePushRyViewHolder.dr4_preview.addView(detailsView4); - detailsLinearLayout4.setVisibility(View.VISIBLE); - linearGrade4.setVisibility(View.GONE); - L.eSw("第三个主播的名称 数据加载完成"+detailsLinearLayout4.getVisibility()); - L.eSw("detailsLinearLayout4.getVisibility()"+detailsLinearLayout4.getVisibility()); - } - - @Override - public void onError(String error) { - ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred"); - } - }); - ToastUtil.show(WordUtil.isNewZh() ? "接受成功" : "Success"); - } else if (drPkbeanList.size() == 3) { - String uid1 = String.valueOf(drPkbeanList.get(0).getId()); - String uid2 = String.valueOf(drPkbeanList.get(1).getId()); - String uid3 = String.valueOf(drPkbeanList.get(2).getId()); - //设置多人PK数据 - LiveNetManager.get(mContext).getLiveInfo(uid1, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - if(detailsView2!=null){ - livePushRyViewHolder.dr2_preview.removeView(detailsView2); - } - detailsView2 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout2 = detailsView2.findViewById(R.id.lin_pk2); - linearGrade2 = detailsView2.findViewById(R.id.linear_grade2); - textPkName2 = detailsView2.findViewById(R.id.text_pk_name2); - imageGrade2 = detailsView2.findViewById(R.id.image_grade2); - textGrade2 = detailsView2.findViewById(R.id.text_grade2); - imageGrade2.setTag(uid1); - textPkName2.setText(data.getUserNicename()); - livePushRyViewHolder.dr2_preview.addView(detailsView2); - detailsLinearLayout2.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.GONE); - L.eSw("detailsLinearLayout2.getVisibility()"+detailsLinearLayout2.getVisibility()); - } - - @Override - public void onError(String error) { - ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred"); - } - }); - - detailsView1 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout1 = detailsView1.findViewById(R.id.lin_pk1); - linearGrade1 = detailsView1.findViewById(R.id.linear_grade1); - imageGrade1 = detailsView1.findViewById(R.id.image_grade1); - textGrade1 = detailsView1.findViewById(R.id.text_grade1); - textPkName1 = detailsView1.findViewById(R.id.text_pk_name1); - imageGrade1.setTag(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId())); - livePushRyViewHolder.dr1_preview.addView(detailsView1); - detailsLinearLayout1.setVisibility(View.VISIBLE); - linearGrade1.setVisibility(View.GONE); - - LiveNetManager.get(mContext).getLiveInfo(uid2, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - if(detailsView2!=null){ - livePushRyViewHolder.dr3_preview.removeView(detailsView3); - } - detailsView3 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout3 = detailsView3.findViewById(R.id.lin_pk3); - linearGrade3 = detailsView3.findViewById(R.id.linear_grade3); - textPkName3 = detailsView3.findViewById(R.id.text_pk_name3); - imageGrade3 = detailsView3.findViewById(R.id.image_grade3); - textGrade3 = detailsView3.findViewById(R.id.text_grade3); - imageGrade3.setTag(uid2); - textPkName3.setText(data.getUserNicename()); - livePushRyViewHolder.dr3_preview.addView(detailsView3); - detailsLinearLayout3.setVisibility(View.VISIBLE); - linearGrade3.setVisibility(View.GONE); - L.eSw("detailsLinearLayout3.getVisibility()"+detailsLinearLayout3.getVisibility()); - L.eSw("第三个主播的名称 数据加载完成"); - } - - @Override - public void onError(String error) { - ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred"); - } - }); - LiveNetManager.get(mContext).getLiveInfo(uid3, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - if(detailsView4!=null){ - livePushRyViewHolder.dr4_preview.removeView(detailsView4); - } - detailsView4 = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); - detailsLinearLayout4 = detailsView4.findViewById(R.id.lin_pk4); - linearGrade4 = detailsView4.findViewById(R.id.linear_grade4); - textPkName4 = detailsView4.findViewById(R.id.text_pk_name4); - imageGrade4 = detailsView4.findViewById(R.id.image_grade4); - textGrade4 = detailsView4.findViewById(R.id.text_grade4); - imageGrade4.setTag(uid3); - textPkName4.setText(data.getUserNicename()); - livePushRyViewHolder.dr4_preview.addView(detailsView4); - detailsLinearLayout4.setVisibility(View.VISIBLE); - linearGrade4.setVisibility(View.GONE); - L.eSw("detailsLinearLayout4.getVisibility()"+detailsLinearLayout4.getVisibility()); - L.eSw("第四个主播的名称 数据加载完成"); - } - - @Override - public void onError(String error) { - ToastUtil.show(WordUtil.isNewZh() ? "抱歉!出錯了!" : "i \\'m sorry! An error occurred"); - } - }); - - Log.e("ry", "多人接受成功" + mApplyUid); - ToastUtil.show(WordUtil.isNewZh() ? "接受成功" : "Success"); - - } + public void dRjoinOtherRoom(UserBean u) { + if(!isShow){ + setMyDrPkDetailsView(); + isShow = true; } + HttpClient.getInstance().get("Live.getDRPKroom", "Live.getDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", u.getId()).execute(new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (info.length > 0) { + JSONObject obj = JSONObject.parseObject(info[0]); + drPkbeans = JSONObject.parseArray(obj.getString("userlist"), DrPkbean.class); + int removeIndex = -1; + for (int i = 0; i < drPkbeans.size(); i++) { + if (CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { + removeIndex = i; + } + } + if (removeIndex != -1) { + drPkbeans.remove(removeIndex); + L.eSw("将自己从多人pk列表里剔除" + new Gson().toJson(drPkbeans)); + } + setDrPkUserInfoView(drPkbeans); + } + } + }); + } + + private void setDrPkUserInfoView(List drPkbeanList) { + for (int j = 0; j () { + /*RCRTCEngine.getInstance().joinOtherRoom(u, new IRCRTCResultDataCallback() { @Override public void onSuccess(RCRTCOtherRoom rcrtcOtherRoom) { rcrtcOtherRoom.registerOtherRoomEventsListener(otherRoomEventsListener); @@ -1622,7 +1505,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { public void onFailed(RTCErrorCode rtcErrorCode) { Log.i("ry", "加入其他房间失败 :" + rtcErrorCode.getReason()); } - }); + });*/ } diff --git a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java index f24cfaa6f..1eaee5ac2 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java @@ -196,6 +196,7 @@ public class SocketRyClient { //用户连麦 case Constants.LIAN_MAI: int actions = map.getIntValue("action"); + L.eSw("用户连麦:actions"+actions); //主播邀请用户连麦消息 if (actions == 1) { EventBus.getDefault().post("inviteMic"); @@ -215,6 +216,8 @@ public class SocketRyClient { EventBus.getDefault().post("endMic"); Bus.get().post(new LiveAudienceEvent().setType(LiveAudienceEvent.LiveAudienceType.LINK_MIC_CLOSE).setObject(map.toJavaObject(LinkMicUserBean.class))); } else if (actions == 8) { + //踢下麥 + if (WordUtil.isNewZh()) { ToastUtil.show("您已被移出多人語音連麥"); } else { @@ -449,7 +452,7 @@ public class SocketRyClient { case Constants.SOCKET_BUY_GUARD://购买守护 buyGuardInSameRoom(map); break; - case Constants.SOCKET_LINK_MIC://连麦 + case Constants.SOCKET_LINK_MIC://连麦-old processLinkMic(map); break; case Constants.SOCKET_LINK_MIC_ANCHOR://主播连麦 diff --git a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java index 9ec0ac5e7..0820a719f 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java @@ -280,6 +280,29 @@ boolean isAdd = true; swAuManager.updateMyChannelView((FrameLayout) ry_view, Integer.parseInt(liveUid)); } + /** + * 将用户设置成主播,与主播连麦 + */ + private void joinLiveMic() { + L.eSw("joinLiveMic"); + HttpClient.getInstance().get("live.joinDrLm", "live.joinDrLm") + .params("roomid", LiveActivity.mLiveUid) + .execute(new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + Log.e("ry", code + "热热热"); + if(code==0){ + swAuManager.setMicAn(true); + } + } + }); + } + + private void endLiveMic() { + L.eSw("endLiveMic"); + swAuManager.setMicAn(false); + } + @Override public void hideCover() { // if (mCover != null) { @@ -767,8 +790,10 @@ boolean isAdd = true; LiveAudienceActivity.mProcessResultUtil.requestPermissions(permissions, new Runnable() { @Override public void run() { - UsertoRY(); - + //UsertoRY(); + //将自己设置成给主播,和主播连麦 + L.eSw("将自己设置成给主播,和主播连麦"); + joinLiveMic(); } }); } @@ -776,75 +801,10 @@ boolean isAdd = true; builder.build().show(); } else if ("endMic".equals(str)) { - if (rcrtcRoom != null) { + L.eSw("endMic.equals(str))"+str); // 开始切换为观众身份 - RCRTCEngine.getInstance().getRoom().getLocalUser().switchToAudience(new IRCRTCSwitchRoleCallback() { - - /** - * 当切换失败且SDK处于无法回退状态时回调,该角色已经无法使用当前角色继续进行音视频。 - * SDK内部会退出房间并清理所有资源,该用户只能重新加入房间才能继续音视频。 - */ - @Override - public void onKicked() { - - } - - @Override - public void onSuccess() { - Log.e("ry", "下麦成功"); - // 该用户切换为观众成功,可以以观众身份进行音视频 - //退出rtc播放 - leaveRoom(); - } - - /** - * 当切换失败且不影响当前角色继续音视频时回调 - * @param errorCode 失败错误码 - */ - @Override - public void onFailed(RTCErrorCode errorCode) { - Log.e("ry", "下麦失败" + errorCode); - leaveRoom(); - } - - private void leaveRoom() { - RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() { - @Override - public void onSuccess() { - userJoinLinkMic = false; - Log.e("ry", "退出多人房间成功"); - new Handler(Looper.getMainLooper()).post(new Runnable() { - public void run() { - if (WordUtil.isNewZh()) { - ToastUtil.show("已成功退出語音連麥"); - } else { - ToastUtil.show("You have successfully exited the voice connection"); - } - ry_view.removeAllViews(); - ry_view.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT; - onPrepared(); - rcrtcRoom = null; - MicStatusManager.getInstance().clear(); - - resumePlay(); - - if (onMicCallback != null) { - onMicCallback.onMikUpdate(); - } - } - }); - } - - @Override - public void onFailed(RTCErrorCode errorCode) { - Log.e("ry", errorCode + "退出多人房间成功"); - userJoinLinkMic = false; - } - }); - - } - }); - } + //声网-将用户身份切换只观众 + endLiveMic(); } else if ("Debug".equals(str)) { if (EasyFloat.isShow("Debug")) { EasyFloat.dismiss("Debug"); diff --git a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java index 8d676eb4e..fb3ba92c0 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java @@ -605,6 +605,7 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX private String drpkUid3 = ""; public int setAnDrPkRtc(String uid, int position) { + L.eSw("setAnDrPkRtc uid:"+uid+" position"+position); FrameLayout frameLayout = null; int temp= -1; if (swManager != null && !StringUtil.isEmpty(uid)) { @@ -630,7 +631,7 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX break; case 4: dr3_preview.setVisibility(View.VISIBLE); - //先退出这个主播的直播间,在进入该直播间,(视图问题暂时找不到解决方案) + //先退出这个主播的直播间,在进入该直播间,(视图问题暂时這樣處理) swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()),drpkUid3); swManager.joinChannelDrEx(dr3_preview,CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, drpkUid3, SWAuManager.getChannelName(drpkUid3)); diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index a5f9a9fe2..43a81f26d 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -51,6 +51,7 @@ import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; +import com.google.gson.Gson; import com.lxj.xpopup.XPopup; import com.makeramen.roundedimageview.RoundedImageView; import com.ms.banner.Banner; @@ -124,6 +125,7 @@ import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DeviceUtils; import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.L; import com.yunbao.common.utils.LiveRoomCheckLivePresenter; import com.yunbao.common.utils.MicStatusManager; import com.yunbao.common.utils.RouteUtil; @@ -5272,9 +5274,11 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis }; public void upDataPkScore(JSONArray pkScores, int time) { + L.eSw("upDataPkScore(JSONArray pkScores, int time) {"+new Gson().toJson(pkScores)); isShowGif = true; - if (detailsView == null) { - detailsView = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); + /*if (detailsView == null) { + L.eSw("upDataPkScore(JSONArray pkScores, int time) {detailsView=null"); + detailsView = LayoutInflater.from(mContext).inflate(R.layout.view_live_pk_details, null); timeTitle = detailsView.findViewById(R.id.time_title); textTime = detailsView.findViewById(R.id.text_time); linearGrade1 = detailsView.findViewById(R.id.lin_pk1); @@ -5293,7 +5297,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis imageGrade2 = detailsView.findViewById(R.id.image_grade2); imageGrade3 = detailsView.findViewById(R.id.image_grade3); imageGrade4 = detailsView.findViewById(R.id.image_grade4); - linearGrade1.setVisibility(View.GONE); + //暂时关闭 + linearGrade1.setVisibility(View.GONE); linearGrade2.setVisibility(View.GONE); linearGrade3.setVisibility(View.GONE); linearGrade4.setVisibility(View.GONE); @@ -5311,7 +5316,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis detailsView.setLayoutParams(params); } }); - } + }*/ if (time > 0) { mPkTimeCount2 = time; drPKtIME = time; diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 57698f5dc..13a9589dc 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -641,10 +641,21 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } } } - - if (mLivePlayViewHolder != null && data.getEnterRoomInfo().getIsconnection() != null && data.getEnterRoomInfo().getIsconnection().equals("1")) { - //mLivePlayViewHolder.setViewUP(1); - mLivePlayViewHolder.setPkView(data.getEnterRoomInfo().getPkinfo().getPkuid()); + if(mLivePlayViewHolder != null && data.getEnterRoomInfo().getIsconnection() != null && data.getEnterRoomInfo().getIsconnection().equals("1")){ + JSONArray array = pkInfo.getJSONArray("userlist"); + //判断是否是多人连麦 + if(array!=null){//多人連麥 + if (mLivePlayViewHolder != null) { + for (int j = 0; j < array.size(); j++) { + UserBean drPkbean = new UserBean(); + JSONObject da = array.getJSONObject(j); + drPkbean.setId(String.valueOf(da.getIntValue("id"))); + mLivePlayViewHolder.setDrMicInfo(drPkbean); + } + } + }else{//单人连麦 + mLivePlayViewHolder.setPkView(data.getEnterRoomInfo().getPkinfo().getPkuid()); + } } if (mLiveRoomViewHolder != null) { mLiveRoomViewHolder.pkHandler = false; @@ -1478,7 +1489,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe @Override public void onAudienceApplyLinkMic(UserBean u) { - + L.eSw("onAudienceApplyLinkMic(2)"); } @Override @@ -2162,7 +2173,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe * @param time */ public void upDataPkScore(JSONArray pkScores, int time) { - + L.eSw("upDataPkScore"+time); if (mLiveRoomViewHolder != null) { String liveId = mLiveBean.getUid(); JSONObject liveModel = null;