From 4c9f3d9936e9ef0a9570ad54bbd737bbdd5ff47d Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Sun, 16 Jun 2024 11:05:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=93=E6=8B=9B=E5=91=BC?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E9=9C=87=E5=8A=A8&=E5=A3=B0=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同步PD修复问题: 修复: 1:开播闪屏问题 2:游戏房消息重复(或不显示) 3:模拟器或部分机型滑动声网直播间会白屏问题 4:PK条在平板模式下显示太高问题 5:PK没断开能收到其他人邀请的问题 --- app/src/main/AndroidManifest.xml | 2 +- common/src/main/AndroidManifest.xml | 2 +- .../dialog/MessageSayHiNotifyDialog.java | 27 +- .../common/manager/RandomPkManager.java | 8 +- config.gradle | 6 +- lib_faceunity/build.gradle | 1 + .../faceunity/agora/SWAuManager.java | 26 +- live/build.gradle | 2 +- .../yunbao/live/activity/LiveActivity.java | 4 + .../live/activity/LiveRyAnchorActivity.java | 2 - .../live/activity/LiveSwAnchorActivity.java | 5 +- .../live/adapter/FreePkRecyclerAdapter.java | 120 ++-- .../live/presenter/AbsLinkMicPkPresenter.java | 160 +++++ .../presenter/LiveRyLinkMicPkPresenter.java | 649 ++++++++--------- .../presenter/LiveSwLinkMicPkPresenter.java | 656 +++++++++--------- .../yunbao/live/views/LiveRoomViewHolder.java | 35 +- .../live/views/PortraitLiveManager.java | 10 +- live/src/main/res/layout/view_live_room.xml | 1 + .../yunbao/main/views/MainHomeViewHolder.java | 4 +- main/src/main/res/values-zh/strings.xml | 2 +- 20 files changed, 974 insertions(+), 748 deletions(-) create mode 100644 live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 641ab1b77..8054385d9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -190,7 +190,7 @@ android:value="false" /> + android:value="true" /> --> - + diff --git a/common/src/main/java/com/yunbao/common/dialog/MessageSayHiNotifyDialog.java b/common/src/main/java/com/yunbao/common/dialog/MessageSayHiNotifyDialog.java index d25833000..c7b8d6172 100644 --- a/common/src/main/java/com/yunbao/common/dialog/MessageSayHiNotifyDialog.java +++ b/common/src/main/java/com/yunbao/common/dialog/MessageSayHiNotifyDialog.java @@ -3,8 +3,13 @@ package com.yunbao.common.dialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.media.RingtoneManager; +import android.net.Uri; import android.os.Handler; import android.os.Looper; +import android.os.Vibrator; import android.util.Log; import android.widget.TextView; @@ -30,6 +35,7 @@ import java.util.ArrayList; import java.util.List; import io.rong.imkit.IMCenter; +import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.utils.RouteUtils; import io.rong.imlib.IRongCallback; import io.rong.imlib.RongIMClient; @@ -71,7 +77,7 @@ public class MessageSayHiNotifyDialog extends AbsDialogCenterPopupWindow { @Override public void buildDialog(XPopup.Builder builder) { - ToastUtil.show("设置可关闭:"+cancelable); + ToastUtil.show("设置可关闭:" + cancelable); builder.dismissOnTouchOutside(cancelable); builder.dismissOnBackPressed(cancelable); } @@ -123,6 +129,7 @@ public class MessageSayHiNotifyDialog extends AbsDialogCenterPopupWindow { ) ); showTag(); + playNotificationSound(); } private void showTag() { @@ -172,4 +179,22 @@ public class MessageSayHiNotifyDialog extends AbsDialogCenterPopupWindow { } }); } + + public void playNotificationSound() { + try { + + Uri ringUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); + MediaPlayer mMediaPlayer = new MediaPlayer(); + mMediaPlayer.setDataSource(mContext, ringUri); + mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); + mMediaPlayer.setLooping(false); + mMediaPlayer.prepare(); + mMediaPlayer.start(); + + Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); + vibrator.vibrate(new long[]{150, 250, 150, 250}, -1); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java b/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java index e0bd21378..6f89f5683 100644 --- a/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java +++ b/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java @@ -143,6 +143,9 @@ public class RandomPkManager { .randomPK(new HttpCallback() { @Override public void onSuccess(String data) { + if (debugUid != null) { + pkUid = data = debugUid; + } try { Integer.parseInt(data);//检测返回的data是否为数字uid,不是的话开始下一轮 } catch (Exception e) { @@ -152,9 +155,8 @@ public class RandomPkManager { return; } pkUid = data; - if (debugUid != null) { - pkUid = data = debugUid; - } + + ToastUtil.showDebug("随机PK:"+pkUid+"|"+data); for (OnRandomPkTimer pkTimer : randomPkTimer) { pkTimer.onStartPK(data); } diff --git a/config.gradle b/config.gradle index 1491c2e0c..c912ac494 100644 --- a/config.gradle +++ b/config.gradle @@ -12,12 +12,12 @@ ext { //正式、 // serverHost : "https://napi.yaoulive.com", // 测试 - serverHost : " https://ceshi.yaoulive.com", + serverHost : "https://ceshi.yaoulive.com", buildTime : new Date().format("MM-dd HH:mm", TimeZone.getTimeZone("GMT+8")), //百度语音识别 - swReleaseModel : true, //true 声网正式服 false 测试服 + swReleaseModel : false, //true 声网正式服 false 测试服 baiduAppId : "23774720", baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB", @@ -31,6 +31,6 @@ ext { //是否上报异常日志 isUploadLog : true, //是否打包成插件包模式 - isPluginModel : true, + isPluginModel : false, ] } diff --git a/lib_faceunity/build.gradle b/lib_faceunity/build.gradle index e35bb80a7..0f46c98d1 100644 --- a/lib_faceunity/build.gradle +++ b/lib_faceunity/build.gradle @@ -41,6 +41,7 @@ dependencies { api "$AGORA_RTC_SDK" } api project(path: ':FaceUnity') + api project(path: ':common') } // Because the components are created only during the afterEvaluate phase, you must 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 f64ea9637..43960605d 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 @@ -3,7 +3,7 @@ package io.agora.beautyapi.faceunity.agora; import android.app.Activity; import android.content.Context; import android.util.Log; -import android.view.SurfaceView; +import android.view.TextureView; import android.widget.FrameLayout; @@ -166,8 +166,8 @@ public class SWAuManager extends BaseCacheManager { */ public void updateMyChannelView(FrameLayout frameLayout, int uid) { mRtcEngine.setupLocalVideo(null); - SurfaceView surfaceView = new SurfaceView(mContext); - surfaceView.setZOrderMediaOverlay(true); + TextureView surfaceView = new TextureView(mContext); + //surfaceView.setZOrderMediaOverlay(true); frameLayout.addView(surfaceView); VideoCanvas videoCanvas = new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_HIDDEN, uid); @@ -185,8 +185,8 @@ public class SWAuManager extends BaseCacheManager { } else { uid = Integer.parseInt(strUid); } - // 创建一个 SurfaceView 对象,并将其作为 FrameLayout 的子对象 - SurfaceView surfaceView = new SurfaceView(mContext); + // 创建一个 TextureView 对象,并将其作为 FrameLayout 的子对象 + TextureView surfaceView = new TextureView(mContext); audienceContainer.addView(surfaceView); // 启用视频模块 @@ -228,8 +228,8 @@ public class SWAuManager extends BaseCacheManager { @Override public void run() { L.eSw("onJoinChannelSuccess:" + channel + " uid " + uid + " elapsed: " + elapsed); - SurfaceView surfaceView = new SurfaceView(mContext); - surfaceView.setZOrderMediaOverlay(true); + TextureView surfaceView = new TextureView(mContext); + // surfaceView.setZOrderMediaOverlay(true); pkContainer1.addView(surfaceView); VideoCanvas videoCanvas = new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_HIDDEN, strUid); mRtcEngine.setupRemoteVideoEx(videoCanvas, rtcConnection); @@ -308,8 +308,8 @@ public class SWAuManager extends BaseCacheManager { mContext.runOnUiThread(new Runnable() { @Override public void run() { - SurfaceView surfaceView = new SurfaceView(mContext); - surfaceView.setZOrderMediaOverlay(true); + TextureView surfaceView = new TextureView(mContext); + // surfaceView.setZOrderMediaOverlay(true); frameLayout.addView(surfaceView); VideoCanvas videoCanvas = new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_HIDDEN, Integer.parseInt(toUid)); mRtcEngine.setupRemoteVideoEx(videoCanvas, rtcConnection); @@ -389,10 +389,10 @@ public class SWAuManager extends BaseCacheManager { //设置对方主播视图 public void setupRemoteVideo(int uid) { - SurfaceView surfaceView = new SurfaceView(mContext); - surfaceView.setZOrderMediaOverlay(true); + TextureView surfaceView = new TextureView(mContext); + // surfaceView.setZOrderMediaOverlay(true); audienceContainer.addView(surfaceView); - // 将 SurfaceView 对象传入声网实时互动 SDK,设置远端视图 + // 将 TextureView 对象传入声网实时互动 SDK,设置远端视图 mRtcEngine.setupRemoteVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_HIDDEN, uid)); } @@ -422,7 +422,7 @@ public class SWAuManager extends BaseCacheManager { public void preloadChannel(List uids){ for (int i = 0; i { ToastUtil.show(mContext.getString(R.string.free_pk_num_null)); return; } - LiveHttpUtil.getMicList(liveUid, 0, new com.yunbao.common.http.HttpCallback() { + //检查自己是不是在PK中 + LiveHttpUtil.livePkCheckLive(IMLoginManager.get(AppManager.getInstance().getMainActivity()).getUserInfo().getId() + "", "", "", new com.yunbao.common.http.HttpCallback() { @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) { - if (mDrPkNum == -1) { - if (WordUtil.isNewZh()) { - ToastUtil.show("邀请 " + bean.getUserNiceName() + " 发送成功"); - } else { - ToastUtil.show("invite " + bean.getUserNiceName() + " successful"); - } - mOnItemClickListener.onItemClick(bean, -1); - if(mContext instanceof LiveSwAnchorActivity){ - ((LiveSwAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), - false); - }else{ - ((LiveRyAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), - ((LiveRyAnchorActivity) mContext).buildLinkMicJSON().toString() - ); - } - return; - } - if (mDrPkNum <= 0) { - if (WordUtil.isNewZh()) { - ToastUtil.show("多人次數已用完"); - } else { - ToastUtil.show("Multiple times have been used up"); - } - return; - } - yaoqing.put(bean.getId(), bean.getId()); - if (yaoqing.size() < 5) { - if(mContext instanceof LiveSwAnchorActivity){ - ((LiveSwAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); - }else{ - ((LiveRyAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); - } - } else { - ToastUtil.show(WordUtil.isNewZh() ? "多人PK最大參與人數為4人" : "The maximum number of participants in a multiplayer PK is 4 people"); - } - if (freePkRecyclerListener != null) { - freePkRecyclerListener.onClose(); - } + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if (TextUtils.equals(obj.getString("ispk"), "0")) {//自己不在PK,可以发起邀请 - } else { - if (WordUtil.isNewZh()) { - ToastUtil.show("請先關閉語音連麥"); - } else { - ToastUtil.show("Please disable the voice connection first"); + LiveHttpUtil.getMicList(liveUid, 0, new com.yunbao.common.http.HttpCallback() { + @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) { + if (mDrPkNum == -1) { + if (WordUtil.isNewZh()) { + ToastUtil.show("邀请 " + bean.getUserNiceName() + " 发送成功"); + } else { + ToastUtil.show("invite " + bean.getUserNiceName() + " successful"); + } + mOnItemClickListener.onItemClick(bean, -1); + if(mContext instanceof LiveSwAnchorActivity){ + ((LiveSwAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), + false); + }else{ + ((LiveRyAnchorActivity) mContext).linkMicAnchorApply(bean.getId(), bean.getId(), + ((LiveRyAnchorActivity) mContext).buildLinkMicJSON().toString() + ); + } + return; + } + if (mDrPkNum <= 0) { + if (WordUtil.isNewZh()) { + ToastUtil.show("多人次數已用完"); + } else { + ToastUtil.show("Multiple times have been used up"); + } + return; + } + yaoqing.put(bean.getId(), bean.getId()); + if (yaoqing.size() < 5) { + if(mContext instanceof LiveSwAnchorActivity){ + ((LiveSwAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); + }else{ + ((LiveRyAnchorActivity) mContext).linkDrMicAnchorApply(bean.getId(), bean.getId()); + } + } else { + ToastUtil.show(WordUtil.isNewZh() ? "多人PK最大參與人數為4人" : "The maximum number of participants in a multiplayer PK is 4 people"); + } + if (freePkRecyclerListener != null) { + freePkRecyclerListener.onClose(); + } + + } else { + if (WordUtil.isNewZh()) { + ToastUtil.show("請先關閉語音連麥"); + } else { + ToastUtil.show("Please disable the voice connection first"); + } + } + } + }); + }else{ + if (WordUtil.isNewZh()) { + ToastUtil.show("請先關閉PK"); + } else { + ToastUtil.show("Please disable the PK"); + } + } } } } }); + }); mFollow.setOnClickListener(v -> { RandomPkUserBean bean = (RandomPkUserBean) itemView.getTag(); diff --git a/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java new file mode 100644 index 000000000..8b1602252 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/presenter/AbsLinkMicPkPresenter.java @@ -0,0 +1,160 @@ +package com.yunbao.live.presenter; + +import android.text.TextUtils; +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.yunbao.common.bean.UserBean; +import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.http.LiveHttpUtil; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.AppManager; + +public abstract class AbsLinkMicPkPresenter { + private boolean isSw = false; + protected boolean mIsPk;//是否已经Pk了 + public static String mPkUid;//正在Pk的对方主播的uid + public static String oldmPkUid;//正在Pk的对方主播的uid + public boolean mIsPkEnd;//pk是否结束,进入惩罚时间 + private static boolean init = false; + + public AbsLinkMicPkPresenter(boolean isSw) { + this.isSw = isSw; + } + + public static String mApplyUid;//正在申请Pk的主播的uid + protected String mApplyUrl;//正在申请Pk的主播的头像 + protected String mApplyNmae;//正在申请Pk的主播的名字 + protected boolean mIsApplyDialogShow;//是否显示了申请PK的弹窗 + + + /** + * 主播与主播PK 主播收到其他主播发过来的多人PK申请的回调 + */ + public void onLinkDRMicPkApply(UserBean u) { + Log.e("ry", "多人收到"); + showDRApplyDialogTmp(u); + } + + /** + * 主播与主播PK 主播收到其他主播发过来的PK申请的回调 + */ + public void onLinkMicPkApply(UserBean u, String stream, int by) { + Log.e("ry", u.getUserNiceName() + "单人收到" + u.getAvatar()); + mApplyUid = u.getId(); + mApplyUrl = u.getAvatar(); + mApplyNmae = u.getUserNiceName(); + if (by != 1) { + if (mIsApplyDialogShow == false) { + if (u.isRandomPk()) { + showPkDialogTmp(u); + } else { + showApplyDialogTmp(u); + } + } + } else { + isPKTmp(u); + } + } + + protected void checkPK(OnItemClickListener onItemClickListener) { + LiveHttpUtil.livePkCheckLive(IMLoginManager.get(AppManager.getInstance().getMainActivity()).getUserInfo().getId() + "", "", "", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if (TextUtils.equals(obj.getString("ispk"), "1")) { + onItemClickListener.onItemClick(true, 0); + return; + } + } + } + onItemClickListener.onItemClick(false, 0); + } + }); + } + + protected void showDRApplyDialogTmp(UserBean u) { + checkPK((bean, position) -> { + if(bean){ + onDRPkRefuse(u); + return; + } + showDRApplyDialog(u); + }); + + } + + protected void showApplyDialogTmp(UserBean u) { + checkPK((bean, position) -> { + if(bean){ + onPkRefuse(u); + return; + } + showApplyDialog(u); + }); + } + + protected void showPkDialogTmp(UserBean u) { + checkPK((bean, position) -> { + if(bean){ + onPkRefuse(u); + return; + } + showPkDialog(u); + }); + } + + protected void isPKTmp(UserBean u) { + isPK(u); + } + + protected void onDRPkApplyTmp(UserBean u) { + onDRPkApply(u); + } + + protected void onDRPkTimeoutTmp(UserBean u) { + onDRPkTimeout(u); + } + + protected void onDRPkRefuseTmp(UserBean u) { + onDRPkRefuse(u); + } + + protected void onPkApplyTmp(UserBean u) { + onPkApply(u); + } + + protected void onPkTimeoutTmp(UserBean u) { + onPkTimeout(u); + } + + protected void onPkRefuseTmp(UserBean u) { + onPkRefuse(u); + } + + + protected abstract void showDRApplyDialog(UserBean u);//多人PK弹窗 + + protected abstract void showApplyDialog(UserBean u);//PK弹窗 + + protected abstract void showPkDialog(UserBean u);//随机PK弹框 + + protected abstract void isPK(UserBean bean); + + protected abstract void onDRPkApply(UserBean u); + + protected abstract void onDRPkTimeout(UserBean u); + + protected abstract void onDRPkRefuse(UserBean u); + + protected abstract void onPkApply(UserBean u); + + protected abstract void onPkTimeout(UserBean u); + + protected abstract void onPkRefuse(UserBean u); + +} 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 b911365d6..191620881 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -111,7 +111,7 @@ import io.rong.message.TextMessage; * 主播与主播PK逻辑 */ -public class LiveRyLinkMicPkPresenter implements View.OnClickListener { +public class LiveRyLinkMicPkPresenter extends AbsLinkMicPkPresenter implements View.OnClickListener { private static final int WHAT_PK_WAIT_RECEIVE = 0;//收到pk申请等待 what private static final int WHAT_PK_WAIT_SEND = 1;//发送pk申请等待 what @@ -125,17 +125,11 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { private boolean mIsAnchor;//自己是否是主播 private SocketRyClient mSocketRyClient; private ViewGroup mPkContainer; - private boolean mIsApplyDialogShow;//是否显示了申请PK的弹窗 + private boolean mAcceptPk;//是否接受连麦 - private boolean mIsPk;//是否已经Pk了 - public static String mApplyUid;//正在申请Pk的主播的uid - private String mApplyUrl;//正在申请Pk的主播的头像 - private String mApplyNmae;//正在申请Pk的主播的名字 private String mApplyStream;//正在申请Pk的主播的stream private String mLiveUid;//自己主播的uid private String mUrl;//主播的头像 - public static String mPkUid;//正在Pk的对方主播的uid - public static String oldmPkUid;//正在Pk的对方主播的uid private ProgressTextView mLinkMicWaitProgress; private int mPkWaitCount;//Pk弹窗等待倒计时Live private int mPkTimeCount;//pk时间 @@ -144,7 +138,6 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { private LiveLinkMicPkViewHolder mLiveLinkMicPkViewHolder; private String mPkTimeString1; private String mPkTimeString2; - private boolean mIsPkEnd;//pk是否结束,进入惩罚时间 private boolean mPkSend;//pk请求是否已经发送 private int mPkSendWaitCount;//发送pk请求后的等待时间 private String mSelfStream; @@ -214,6 +207,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { }; public LiveRyLinkMicPkPresenter(Context context, ILiveLinkMicViewHolder linkMicViewHolder, boolean isAnchor, View root) { + super(false); mContext = context; mIsAnchor = isAnchor; mRoot = root; @@ -254,6 +248,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } public LiveRyLinkMicPkPresenter(Context context, LivePushRyViewHolder linkMicViewHolder, boolean isAnchor, View root) { + super(false); mContext = context; mIsAnchor = isAnchor; mRoot = root; @@ -516,14 +511,6 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } } - /** - * 主播与主播PK 主播收到其他主播发过来的多人PK申请的回调 - */ - public void onLinkDRMicPkApply(UserBean u) { - Log.e("ry", "多人收到"); - showDRApplyDialog(u); - } - /** * 主播与主播PK 主播收到其他主播发过来的多人PK申请同意了的回调 */ @@ -660,26 +647,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } - /** - * 主播与主播PK 主播收到其他主播发过来的PK申请的回调 - */ - public void onLinkMicPkApply(UserBean u, String stream, int by) { - Log.e("ry", u.getUserNiceName() + "单人收到" + u.getAvatar()); - mApplyUid = u.getId(); - mApplyUrl = u.getAvatar(); - mApplyNmae = u.getUserNiceName(); - if (by != 1) { - if (mIsApplyDialogShow == false) { - if (u.isRandomPk()) { - showPkDialog(u); - } else { - showApplyDialog(u); - } - } - } else { - isPK(u); - } - } + /** * 主播与主播PK PK主播发过来的已经接受 @@ -829,7 +797,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } - private void isPK(UserBean bean) { + @Override + protected void isPK(UserBean bean) { ScreenDimenUtil util = ScreenDimenUtil.getInstance(); int mScreenWdith = util.getScreenWdith(); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); @@ -964,6 +933,312 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } + @Override + protected void onDRPkApply(UserBean u) { + HttpClient.getInstance().get("Livepk.changeLive", "Livepk.changeLive") + .params("uid", CommonAppConfig.getInstance().getUid()) + .params("pkuid", u.getId()) + .params("type", "1") + .params("sign", "1") + .execute(new HttpCallback() { + @Override + public void onSuccess(int code, String msgs, String[] info) { + if (code == 0) { + Log.i("多人PK", "1code = " + code + ", msgs = " + msgs + ", info = " + Arrays.deepToString(info) + " mApplyUid = " + mApplyUid); + HttpClient.getInstance().get("live.getdrnum", "live.getdrnum") + .execute(new HttpCallback() { + + @Override + public void onSuccess(int code, String msg, String[] info) { + Log.i(TAG, "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); + if (info.length > 0) { + + JSONObject datas = JSONObject.parseObject(info[0]); + boolean agree = true; + if (datas.getIntValue("pk_num_day") <= 0) { + ToastUtil.show("多人PK次数已用完"); + agree = false; + } + boolean finalAgree = agree; + IMRTCManager.getInstance().responseJoinOtherRoom(mApplyUid, agree, SOCKET_LIVE_DRPK, new IRCRTCResultCallback() { + @Override + public void onSuccess() { + if (finalAgree == true) { + HttpClient.getInstance().get("live.joinDRPKroom", "live.joinDRPKroom") + .params("uid", CommonAppConfig.getInstance().getUid()) + .params("roomid", u.getId()) + .execute(new HttpCallback() { + + @Override + public void onSuccess(int code, String msg, String[] info) { + Log.i("多人PK", "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); + + final SocketSendBean msg1 = new SocketSendBean() + .param("_method_", SOCKET_LIVE_DRPK) + .param("action", 10) + .param("uid", CommonAppConfig.getInstance().getUid()); + msg1.create(); + String targetId = "g" + CommonAppConfig.getInstance().getUid(); + Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + Log.e("ry", "发送成功"); + if (SocketRyClient.mSocketHandler != null) { + SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗"); + } + }); + if (info.length == 0) { + return; + } + JSONObject obj = JSONObject.parseObject(info[0]); + JSONArray users = obj.getJSONArray("userlist"); + + //添加水印 +// RCRTCRect rect = new RCRTCRect(0.5f, 0.5f, 0.2f); +// RCRTCEngine.getInstance().getDefaultVideoStream().setWatermark(fromText(50, mNameText), rect); + dRjoinOtherRoom(u.getId(), 1); + + for (int i = 0; i < users.size(); i++) { + JSONObject user = users.getJSONObject(i); + Log.e("ry", mApplyUid + "VS" + user.getString("id") + "列表"); + if (!user.getString("id").equals(CommonAppConfig.getInstance().getUid())) { + if (!user.getString("id").equals(CommonAppConfig.getInstance().getUid()) && !user.getString("id").equals(u.getId())) { + /** + * 向指定用户发送跨房间连麦请求 + *

+ * 1: inviterAutoMix为true时: + * + * 1.1:如果被邀请方在加入邀请方房间之前发布了资源,当被邀请方加入邀请者房间成功后,服务器会把被邀请方流资源合并到邀请方视图 ·(默认仅悬浮布局合流)上。 + * + * 1.2:如果被邀请方在加入邀请方房间之前没有发布过资源,将会在被邀请方发布资源成功后,服务器会把被邀请方流资源合并到邀请方视图(默认仅悬浮布局合流)上。 + * + * 2:无论为true或false,双方都可以使用{@link RCRTCLiveInfo#setMixConfig(RCRTCMixConfig, IRCRTCResultCallback)} 方法主动设置合流布局。一旦主动设置过合流布局,后续音视频直播过程中设置的自动合流参数将失效。 + *

+ */ + IMRTCManager.getInstance().requestJoinOtherRoom(user.getString("id"), false, "LiveDRPK1", new IRCRTCResultCallback() { + @Override + public void onSuccess() { + } + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + }); + } + } + } + } + }); + } + } + + @Override + public void onFailed(RTCErrorCode errorCode) { + ToastUtil.show("接受失败"); + } + }); + } else { + ToastUtil.show(msg); + } + } + + }); + + + } + } + }); + + /*LiveHttpUtil.livePkCheckLive(u.getId(), "", "", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if (obj.getString("ispk").equals("0")) { + + + }else{ + ToastUtil.show(mContext.getString(R.string.pking_over)); + } + } + } + }});*/ + } + + @Override + protected void onDRPkTimeout(UserBean u) { + IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + + @Override + public void onSuccess() { + final SocketSendBean msg1 = new SocketSendBean() + .param("_method_", SOCKET_LINK_MIC_PK) + .param("action", 8); + msg1.create(); + + String targetId = u.getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + Log.e("ry", "发送成功"); + if (SocketRyClient.mSocketHandler != null) { + SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗" + mApplyUid); + } + }); + } + }); + } + + @Override + protected void onDRPkRefuse(UserBean u) { + IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + + @Override + public void onSuccess() { + final SocketSendBean msg1 = new SocketSendBean() + .param("_method_", SOCKET_LINK_MIC_PK) + .param("action", 3); + msg1.create(); + + String targetId = u.getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + Log.e("ry", "发送成功"); + if (SocketRyClient.mSocketHandler != null) { + SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗"); + } + }); + } + }); + } + + @Override + protected void onPkApply(UserBean u) { + LiveHttpUtil.livePkCheckLive(u.getId(), "", "", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if (obj.getString("ispk").equals("0")) { + isPKTmp(u); + } else { + ToastUtil.show(mContext.getString(R.string.pking_over)); + } + } + } + } + }); + } + + @Override + protected void onPkTimeout(UserBean u) { + rtcRoom.getLocalUser().responseJoinOtherRoom(u.getId(), u.getId(), false, false, "extra", new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + + @Override + public void onSuccess() { + final SocketSendBean msg1 = new SocketSendBean() + .param("_method_", SOCKET_LINK_MIC_PK) + .param("action", 8); + msg1.create(); + + String targetId = u.getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + + Log.e("ry", "发送成功"); + if (SocketRyClient.mSocketHandler != null) { + SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗" + u.getId()); + } + }); + } + }); + } + + @Override + protected void onPkRefuse(UserBean u) { + onPkTimeoutTmp(u); + } + //与用户连麦 public void setUserMic(String liveid) { JSONObject msg1 = new JSONObject(); @@ -1032,7 +1307,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { /** * 显示申请PK的弹窗 */ - private void showApplyDialog(UserBean u) { + @Override + protected void showApplyDialog(UserBean u) { mIsApplyDialogShow = true; mAcceptPk = false; View v = LayoutInflater.from(mContext).inflate(R.layout.dialog_link_mic_pk_wait, null); @@ -1050,63 +1326,10 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { mHandler.removeMessages(WHAT_PK_WAIT_RECEIVE); } if (mAcceptPk) { - - LiveHttpUtil.livePkCheckLive(u.getId(), "", "", new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0 && info.length > 0) { - JSONObject obj = JSON.parseObject(info[0]); - if (obj != null) { - if (obj.getString("ispk").equals("0")) { - isPK(u); - }else{ - ToastUtil.show(mContext.getString(R.string.pking_over)); - } - } - }}}); + onPkApplyTmp(u); } else { if (mPkWaitCount < 0) { - rtcRoom.getLocalUser().responseJoinOtherRoom(u.getId(), u.getId(), false, false, "extra", new IRCRTCResultCallback() { - - @Override - public void onFailed(RTCErrorCode errorCode) { - - } - - @Override - public void onSuccess() { - final SocketSendBean msg1 = new SocketSendBean() - .param("_method_", SOCKET_LINK_MIC_PK) - .param("action", 8); - msg1.create(); - - String targetId = u.getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - - Log.e("ry", "发送成功"); - if (SocketRyClient.mSocketHandler != null) { - SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗" + u.getId()); - } - }); - } - }); + onPkTimeoutTmp(u); } mApplyUid = null; @@ -1260,7 +1483,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { /** * 随机PK拒绝对话框 */ - public void showPkDialog(UserBean u) { + @Override + protected void showPkDialog(UserBean u) { new DialogUitl.Builder(mContext) .setHtmlCode(Html.fromHtml( "有人向您发起PK请求。
" + @@ -1333,7 +1557,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { void apply() { - isPK(u); + isPKTmp(u); } }) .build().show(); @@ -1388,7 +1612,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { /** * 显示申请多人PK的弹窗 */ - private void showDRApplyDialog(UserBean u) { + @Override + protected void showDRApplyDialog(UserBean u) { mApplyUid = u.getId(); mIsApplyDialogShow = true; mAcceptPk = false; @@ -1407,236 +1632,14 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { mHandler.removeMessages(WHAT_PK_WAIT_RECEIVE); } if (mAcceptPk) { - HttpClient.getInstance().get("Livepk.changeLive", "Livepk.changeLive") - .params("uid", CommonAppConfig.getInstance().getUid()) - .params("pkuid", u.getId()) - .params("type", "1") - .params("sign", "1") - .execute(new HttpCallback() { - @Override - public void onSuccess(int code, String msgs, String[] info) { - if (code == 0) { - Log.i("多人PK", "1code = " + code + ", msgs = " + msgs + ", info = " + Arrays.deepToString(info) + " mApplyUid = " + mApplyUid); - HttpClient.getInstance().get("live.getdrnum", "live.getdrnum") - .execute(new HttpCallback() { - - @Override - public void onSuccess(int code, String msg, String[] info) { - Log.i(TAG, "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); - if (info.length > 0) { - - JSONObject datas = JSONObject.parseObject(info[0]); - boolean agree = true; - if (datas.getIntValue("pk_num_day") <= 0) { - ToastUtil.show("多人PK次数已用完"); - agree = false; - } - boolean finalAgree = agree; - IMRTCManager.getInstance().responseJoinOtherRoom(mApplyUid, agree, SOCKET_LIVE_DRPK, new IRCRTCResultCallback() { - @Override - public void onSuccess() { - if (finalAgree == true) { - HttpClient.getInstance().get("live.joinDRPKroom", "live.joinDRPKroom") - .params("uid", CommonAppConfig.getInstance().getUid()) - .params("roomid", u.getId()) - .execute(new HttpCallback() { - - @Override - public void onSuccess(int code, String msg, String[] info) { - Log.i("多人PK", "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); - - final SocketSendBean msg1 = new SocketSendBean() - .param("_method_", SOCKET_LIVE_DRPK) - .param("action", 10) - .param("uid", CommonAppConfig.getInstance().getUid()); - msg1.create(); - String targetId = "g" + CommonAppConfig.getInstance().getUid(); - Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - Log.e("ry", "发送成功"); - if (SocketRyClient.mSocketHandler != null) { - SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗"); - } - }); - if (info.length == 0) { - return; - } - JSONObject obj = JSONObject.parseObject(info[0]); - JSONArray users = obj.getJSONArray("userlist"); - - //添加水印 -// RCRTCRect rect = new RCRTCRect(0.5f, 0.5f, 0.2f); -// RCRTCEngine.getInstance().getDefaultVideoStream().setWatermark(fromText(50, mNameText), rect); - dRjoinOtherRoom(u.getId(), 1); - - for (int i = 0; i < users.size(); i++) { - JSONObject user = users.getJSONObject(i); - Log.e("ry", mApplyUid + "VS" + user.getString("id") + "列表"); - if (!user.getString("id").equals(CommonAppConfig.getInstance().getUid())) { - if (!user.getString("id").equals(CommonAppConfig.getInstance().getUid()) && !user.getString("id").equals(u.getId())) { - /** - * 向指定用户发送跨房间连麦请求 - *

- * 1: inviterAutoMix为true时: - * - * 1.1:如果被邀请方在加入邀请方房间之前发布了资源,当被邀请方加入邀请者房间成功后,服务器会把被邀请方流资源合并到邀请方视图 ·(默认仅悬浮布局合流)上。 - * - * 1.2:如果被邀请方在加入邀请方房间之前没有发布过资源,将会在被邀请方发布资源成功后,服务器会把被邀请方流资源合并到邀请方视图(默认仅悬浮布局合流)上。 - * - * 2:无论为true或false,双方都可以使用{@link RCRTCLiveInfo#setMixConfig(RCRTCMixConfig, IRCRTCResultCallback)} 方法主动设置合流布局。一旦主动设置过合流布局,后续音视频直播过程中设置的自动合流参数将失效。 - *

- */ - IMRTCManager.getInstance().requestJoinOtherRoom(user.getString("id"), false, "LiveDRPK1", new IRCRTCResultCallback() { - @Override - public void onSuccess() { - } - - @Override - public void onFailed(RTCErrorCode errorCode) { - - } - }); - } - } - } - } - }); - } - } - - @Override - public void onFailed(RTCErrorCode errorCode) { - ToastUtil.show("接受失败"); - } - }); - } else { - ToastUtil.show(msg); - } - } - - }); - - - } - } - }); - - /*LiveHttpUtil.livePkCheckLive(u.getId(), "", "", new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0 && info.length > 0) { - JSONObject obj = JSON.parseObject(info[0]); - if (obj != null) { - if (obj.getString("ispk").equals("0")) { - - - }else{ - ToastUtil.show(mContext.getString(R.string.pking_over)); - } - } - } - }});*/ + onDRPkApplyTmp(u); } else { if (mPkWaitCount < 0) { - IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { - - @Override - public void onFailed(RTCErrorCode errorCode) { - - } - - @Override - public void onSuccess() { - final SocketSendBean msg1 = new SocketSendBean() - .param("_method_", SOCKET_LINK_MIC_PK) - .param("action", 8); - msg1.create(); - - String targetId = u.getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - Log.e("ry", "发送成功"); - if (SocketRyClient.mSocketHandler != null) { - SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗" + mApplyUid); - } - }); - } - }); + onDRPkTimeoutTmp(u); } else { - IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { - - @Override - public void onFailed(RTCErrorCode errorCode) { - - } - - @Override - public void onSuccess() { - final SocketSendBean msg1 = new SocketSendBean() - .param("_method_", SOCKET_LINK_MIC_PK) - .param("action", 3); - msg1.create(); - - String targetId = u.getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongcloudIMManager.sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - Log.e("ry", "发送成功"); - if (SocketRyClient.mSocketHandler != null) { - SocketRyClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗"); - } - }); - } - }); + onDRPkRefuseTmp(u); } mApplyUid = null; mApplyStream = null; @@ -2541,7 +2544,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { String pkTime = StringUtil.getDurationText(time * 1000); livePushRyViewHolder.textTime.setText(String.format(mContext.getString(R.string.pk_time), pkTime)); mPkTimeCount = time; - if (time>0){ + if (time > 0) { String s1 = StringUtil.getDurationText(mPkTimeCount * 1000); livePushRyViewHolder.textTime.setText(String.format(mContext.getString(R.string.pk_time), s1)); mHandler.sendEmptyMessage(WHAT_PK_TIME2); diff --git a/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java b/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java index fe8d9ef64..26132c1ab 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveSwLinkMicPkPresenter.java @@ -107,7 +107,7 @@ import io.rong.message.TextMessage; * 主播与主播PK逻辑 */ -public class LiveSwLinkMicPkPresenter implements View.OnClickListener { +public class LiveSwLinkMicPkPresenter extends AbsLinkMicPkPresenter implements View.OnClickListener { private static final int WHAT_PK_WAIT_RECEIVE = 0;//收到pk申请等待 what private static final int WHAT_PK_WAIT_SEND = 1;//发送pk申请等待 what @@ -123,15 +123,11 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { private ViewGroup mPkContainer; private boolean mIsApplyDialogShow;//是否显示了申请PK的弹窗 private boolean mAcceptPk;//是否接受连麦 - private boolean mIsPk;//是否已经Pk了 - public static String mApplyUid;//正在申请Pk的主播的uid private String mApplyUrl;//正在申请Pk的主播的头像 private String mApplyNmae;//正在申请Pk的主播的名字 private String mApplyStream;//正在申请Pk的主播的stream private String mLiveUid;//自己主播的uid private String mUrl;//主播的头像 - public static String mPkUid;//正在Pk的对方主播的uid - public static String oldmPkUid;//正在Pk的对方主播的uid private ProgressTextView mLinkMicWaitProgress; private int mPkWaitCount;//Pk弹窗等待倒计时Live private int mPkTimeCount;//pk时间 @@ -140,7 +136,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { private LiveLinkMicPkViewHolder mLiveLinkMicPkViewHolder; private String mPkTimeString1; private String mPkTimeString2; - private boolean mIsPkEnd;//pk是否结束,进入惩罚时间 + private boolean mPkSend;//pk请求是否已经发送 private int mPkSendWaitCount;//发送pk请求后的等待时间 private String mSelfStream; @@ -169,6 +165,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { } public LiveSwLinkMicPkPresenter(Context context, ILiveLinkMicViewHolder linkMicViewHolder, boolean isAnchor, View root) { + super(true); mContext = context; mIsAnchor = isAnchor; mRoot = root; @@ -209,6 +206,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { } public LiveSwLinkMicPkPresenter(Context context, LivePushSwViewHolder linkMicViewHolder, boolean isAnchor, View root) { + super(true); mContext = context; mIsAnchor = isAnchor; mRoot = root; @@ -456,13 +454,6 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { } } - /** - * 主播与主播PK 主播收到其他主播发过来的多人PK申请的回调 - */ - public void onLinkDRMicPkApply(UserBean u) { - Log.e("ry", "多人收到"); - showDRApplyDialog(u); - } public void onLinkDRMicPkQuit(String uid) { HttpClient.getInstance().get("Live.getDRPKroom", "Live.getDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", mApplyUid).execute(new HttpCallback() { @@ -560,18 +551,17 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { for (int k = 0; k < pkScores.size(); k++) { JSONObject score = pkScores.getJSONObject(k); String userID = score.getString("id"); - if(userID.equals(uid)){ + if (userID.equals(uid)) { removeUid = k; } } pkScores.remove(removeUid); - upDataPkScore(pkScores,"-1",0,false); + upDataPkScore(pkScores, "-1", 0, false); } }, 100); } - SWManager.get().setDrPkNumClarity(drPkbeans.size()); if (drPkbeans.size() == 1) { mLiveAnchorViewHolder.closeEndPkBt(); @@ -619,30 +609,6 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { mLiveAnchorViewHolder.showEndPkBt(); } - /** - * 主播与主播PK 主播收到其他主播发过来的PK申请的回调 - */ - public void onLinkMicPkApply(UserBean u, String stream, int by) { - Log.e("ry", u.getUserNiceName() + "单人收到" + u.getAvatar()); - mApplyUid = u.getId(); - mApplyUrl = u.getAvatar(); - mApplyNmae = u.getUserNiceName(); - if (by != 1) { - Log.e("ry", "1" + u.getUserNiceName() + "单人收到" + u.getAvatar()); - if (mIsApplyDialogShow == false) { - if (u.isRandomPk()) { - Log.e("ry", "2" + u.getUserNiceName() + "单人收到" + u.getAvatar()); - showPkDialog(u); - } else { - Log.e("ry", "3" + u.getUserNiceName() + "单人收到" + u.getAvatar()); - showApplyDialog(u); - } - } - } else { - Log.e("ry", "4" + u.getUserNiceName() + "单人收到" + u.getAvatar()); - isPK(u); - } - } /** * 主播与主播PK PK主播发过来的已经接受 @@ -658,7 +624,8 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { LivePushSwViewHolder.btn_close.setVisibility(View.VISIBLE); } - private void isPK(UserBean bean) { + @Override + protected void isPK(UserBean bean) { EventBus.getDefault().post(new AnchorInfoEvent(false, bean.getId(), bean.getUserNiceName(), bean.getAvatar())); ScreenDimenUtil util = ScreenDimenUtil.getInstance(); int mScreenWdith = util.getScreenWdith(); @@ -720,10 +687,313 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { }); } + @Override + protected void onDRPkApply(UserBean u) { + HttpClient.getInstance().get("Livepk.changeLive", "Livepk.changeLive").params("uid", CommonAppConfig.getInstance().getUid()).params("pkuid", u.getId()).params("type", "1").params("sign", "1").execute(new HttpCallback() { + @Override + public void onSuccess(int code, String msgs, String[] info) { + if (code == 0) { + Log.i("多人PK", "1code = " + code + ", msgs = " + msgs + ", info = " + Arrays.deepToString(info) + " mApplyUid = " + mApplyUid); + HttpClient.getInstance().get("live.getdrnum", "live.getdrnum").execute(new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + Log.i(TAG, "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); + if (info.length > 0) { + JSONObject datas = JSONObject.parseObject(info[0]); + boolean agree = true; + if (datas.getIntValue("pk_num_day") <= 0) { + ToastUtil.show("多人PK次数已用完"); + agree = false; + } + boolean finalAgree = agree; + if (finalAgree) { + HttpClient.getInstance().get("live.joinDRPKroom", "live.joinDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", u.getId()).execute(new HttpCallback() { + + @Override + public void onSuccess(int code, String msg, String[] info) { + L.eSw("多人PK" + "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); + if (info.length == 0) { + return; + } + JSONObject obj = JSONObject.parseObject(info[0]); + drPkbeans = JSONObject.parseArray(obj.getString("userlist"), DrPkbean.class); + SWManager.get().setDrPkNumClarity(3);//加入成功后,将分别率设置为 VD_320x240 + //将自己从多人pk列表里剔除 + 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)); + } + + HttpClient.getInstance().get("Live.getDRPKroom", "Live.getDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", mApplyUid).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); + for (int i = 0; i < drPkbeans.size(); i++) { + if (!CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { + final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LIVE_DRPK).param("action", 2).param("uname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()).param("pkuid", CommonAppConfig.getInstance().getUid()).param("msgtype", 2).param("uid", drPkbeans.get(i).getId()).param("uhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()); + msg1.create(); + L.eSw("uiduiduiduiduiduiduiduid" + drPkbeans.get(i).getId()); + String targetId = String.valueOf(drPkbeans.get(i).getId()); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("tx", "aaa" + errorCode.toString()); + ToastUtil.show(errorCode.code + ":" + errorCode.msg); + } + }); + + // + int index = livePushSwViewHolder.setAnDrPkRtc(String.valueOf(drPkbeans.get(i).getId()), -1); + + L.eSw("onLinkDRMicPkApplyOk(UserBean u)-点击接收 1 " + u.getUserNiceName()); + L.eSw("發送action = 2"); + + } + + if (!CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { + final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LIVE_DRPK).param("action", 3).param("uname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()).param("msgtype", 3).param("uid", drPkbeans.get(i).getId()).param("pkhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkname", CommonAppConfig.getInstance().getUserBean().getUserNiceName() );; + msg1.create(); + L.eSw("發送給自己直播間" + drPkbeans.get(i).getId()); + String targetId = "g" + CommonAppConfig.getInstance().getUid(); + Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM; //群聊 + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("tx", "aaa" + errorCode.toString()); + ToastUtil.show(errorCode.code + ":" + errorCode.msg); + } + }); + } + + + if (!mApplyUid.equals(String.valueOf(drPkbeans.get(i).getId())) && !CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { + final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LIVE_DRPK).param("action", 3).param("uname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()).param("pkuid", CommonAppConfig.getInstance().getUid()).param("msgtype", 3).param("uid", drPkbeans.get(i).getId()).param("pkhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()); + msg1.create(); + L.eSw("發送給其他主播直播间" + drPkbeans.get(i).getId()); + String targetId = "g" + drPkbeans.get(i).getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM; //群聊 + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("tx", "aaa" + errorCode.toString()); + ToastUtil.show(errorCode.code + ":" + errorCode.msg); + } + }); + } + } + dRjoinOtherRoom(u); + //展示结束连麦按钮 + //设置多人PK 房主ROOM UID + mLiveAnchorViewHolder.setDrpkRoomId(mApplyUid); + mLiveAnchorViewHolder.showEndPkBt(); + } + } + }); + } + }); + } + } else { + ToastUtil.show(msg); + } + } + + }); + + + } + } + }); + } + + @Override + protected void onDRPkTimeout(UserBean u) { + IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + + @Override + public void onSuccess() { + final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LINK_MIC_PK).param("action", 8); + msg1.create(); + + String targetId = u.getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + Log.e("ry", "发送成功"); + if (SocketSwClient.mSocketHandler != null) { + SocketSwClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗" + mApplyUid); + } + }); + } + }); + } + + @Override + protected void onDRPkRefuse(UserBean u) { + IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + + @Override + public void onSuccess() { + final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LINK_MIC_PK).param("action", 3); + msg1.create(); + + String targetId = u.getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + Log.e("ry", "发送成功"); + if (SocketSwClient.mSocketHandler != null) { + SocketSwClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗"); + } + }); + } + }); + } + + @Override + protected void onPkApply(UserBean u) { + LiveHttpUtil.livePkCheckLive(u.getId(), "", "", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); + if (obj != null) { + if (obj.getString("ispk").equals("0")) { + isPKTmp(u); + } else { + ToastUtil.show(mContext.getString(R.string.pking_over)); + } + } + } + } + }); + } + + @Override + protected void onPkTimeout(UserBean u) { + final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LINK_MIC_PK).param("action", 8); + msg1.create(); + String targetId = u.getId(); + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); + io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); + + RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { + @Override + public void onAttached(io.rong.imlib.model.Message message) { + + } + + @Override + public void onSuccess(io.rong.imlib.model.Message message) { + + Log.e("ry", "发送成功"); + if (SocketSwClient.mSocketHandler != null) { + SocketSwClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); + } + } + + @Override + public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { + Log.e("ry", "发送失敗" + u.getId()); + } + }); + } + + @Override + protected void onPkRefuse(UserBean u) { + onPkTimeoutTmp(u); + } + /** * 显示申请PK的弹窗 */ - private void showApplyDialog(UserBean u) { + @Override + protected void showApplyDialog(UserBean u) { mIsApplyDialogShow = true; mAcceptPk = false; View v = LayoutInflater.from(mContext).inflate(R.layout.dialog_link_mic_pk_wait, null); @@ -741,50 +1011,10 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { mHandler.removeMessages(WHAT_PK_WAIT_RECEIVE); } if (mAcceptPk) { - LiveHttpUtil.livePkCheckLive(u.getId(), "", "", new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0 && info.length > 0) { - JSONObject obj = JSON.parseObject(info[0]); - if (obj != null) { - if (obj.getString("ispk").equals("0")) { - isPK(u); - } else { - ToastUtil.show(mContext.getString(R.string.pking_over)); - } - } - } - } - }); + onPkApplyTmp(u); } else { if (mPkWaitCount < 0) { - final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LINK_MIC_PK).param("action", 8); - msg1.create(); - String targetId = u.getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - - Log.e("ry", "发送成功"); - if (SocketSwClient.mSocketHandler != null) { - SocketSwClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗" + u.getId()); - } - }); + onPkTimeoutTmp(u); } mApplyUid = null; mApplyStream = null; @@ -803,7 +1033,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { private String TAG = "多人PK"; - public void editPkRoom(String uid){ + public void editPkRoom(String uid) { SWManager.get().exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), uid); } @@ -852,7 +1082,8 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { /** * 随机PK拒绝对话框 */ - public void showPkDialog(UserBean u) { + @Override + protected void showPkDialog(UserBean u) { new DialogUitl.Builder(mContext).setHtmlCode(Html.fromHtml("有人向您发起PK请求。
" + "若拒绝PK,将会10分钟内不会再收到任何随机PK请求。")).setConfirmString("接受").setCancelString("拒絕").setView(R.layout.dialog_live_random_pk).setSimpleCallbackView(new DialogUitl.SimpleCallbackView() { boolean clickCancel = false; String titleVal; @@ -914,7 +1145,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { void apply() { - isPK(u); + isPKTmp(u); } }).build().show(); } @@ -968,7 +1199,8 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { /** * 显示申请多人PK的弹窗 */ - private void showDRApplyDialog(UserBean u) { + @Override + protected void showDRApplyDialog(UserBean u) { mApplyUid = u.getId(); mIsApplyDialogShow = true; mAcceptPk = false; @@ -987,245 +1219,13 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { mHandler.removeMessages(WHAT_PK_WAIT_RECEIVE); } if (mAcceptPk) { - HttpClient.getInstance().get("Livepk.changeLive", "Livepk.changeLive").params("uid", CommonAppConfig.getInstance().getUid()).params("pkuid", u.getId()).params("type", "1").params("sign", "1").execute(new HttpCallback() { - @Override - public void onSuccess(int code, String msgs, String[] info) { - if (code == 0) { - Log.i("多人PK", "1code = " + code + ", msgs = " + msgs + ", info = " + Arrays.deepToString(info) + " mApplyUid = " + mApplyUid); - HttpClient.getInstance().get("live.getdrnum", "live.getdrnum").execute(new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - Log.i(TAG, "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); - if (info.length > 0) { - JSONObject datas = JSONObject.parseObject(info[0]); - boolean agree = true; - if (datas.getIntValue("pk_num_day") <= 0) { - ToastUtil.show("多人PK次数已用完"); - agree = false; - } - boolean finalAgree = agree; - if (finalAgree) { - HttpClient.getInstance().get("live.joinDRPKroom", "live.joinDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", u.getId()).execute(new HttpCallback() { - - @Override - public void onSuccess(int code, String msg, String[] info) { - L.eSw("多人PK" + "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info)); - if (info.length == 0) { - return; - } - JSONObject obj = JSONObject.parseObject(info[0]); - drPkbeans = JSONObject.parseArray(obj.getString("userlist"), DrPkbean.class); - SWManager.get().setDrPkNumClarity(3);//加入成功后,将分别率设置为 VD_320x240 - //将自己从多人pk列表里剔除 - 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)); - } - - HttpClient.getInstance().get("Live.getDRPKroom", "Live.getDRPKroom").params("uid", CommonAppConfig.getInstance().getUid()).params("roomid", mApplyUid).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); - for (int i = 0; i < drPkbeans.size(); i++) { - if (!CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { - final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LIVE_DRPK).param("action", 2).param("uname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()).param("pkuid", CommonAppConfig.getInstance().getUid()).param("msgtype", 2).param("uid", drPkbeans.get(i).getId()).param("uhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()); - msg1.create(); - L.eSw("uiduiduiduiduiduiduiduid" + drPkbeans.get(i).getId()); - String targetId = String.valueOf(drPkbeans.get(i).getId()); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("tx", "aaa" + errorCode.toString()); - ToastUtil.show(errorCode.code + ":" + errorCode.msg); - } - }); - - // - int index = livePushSwViewHolder.setAnDrPkRtc(String.valueOf(drPkbeans.get(i).getId()), -1); - - L.eSw("onLinkDRMicPkApplyOk(UserBean u)-点击接收 1 " + u.getUserNiceName()); - L.eSw("發送action = 2"); - - } - - if (!CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { - final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LIVE_DRPK).param("action", 3).param("uname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()).param("msgtype", 3).param("uid", drPkbeans.get(i).getId()).param("pkhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkname", CommonAppConfig.getInstance().getUserBean().getUserNiceName() );; - msg1.create(); - L.eSw("發送給自己直播間" + drPkbeans.get(i).getId()); - String targetId = "g" + CommonAppConfig.getInstance().getUid(); - Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM; //群聊 - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("tx", "aaa" + errorCode.toString()); - ToastUtil.show(errorCode.code + ":" + errorCode.msg); - } - }); - } - - - if (!mApplyUid.equals(String.valueOf(drPkbeans.get(i).getId())) && !CommonAppConfig.getInstance().getUid().equals(String.valueOf(drPkbeans.get(i).getId()))) { - final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LIVE_DRPK).param("action", 3).param("uname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()).param("pkuid", CommonAppConfig.getInstance().getUid()).param("msgtype", 3).param("uid", drPkbeans.get(i).getId()).param("pkhead", CommonAppConfig.getInstance().getUserBean().getAvatar()).param("pkname", CommonAppConfig.getInstance().getUserBean().getUserNiceName()); - msg1.create(); - L.eSw("發送給其他主播直播间" + drPkbeans.get(i).getId()); - String targetId = "g" + drPkbeans.get(i).getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.CHATROOM; //群聊 - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("tx", "aaa" + errorCode.toString()); - ToastUtil.show(errorCode.code + ":" + errorCode.msg); - } - }); - } - } - dRjoinOtherRoom(u); - //展示结束连麦按钮 - //设置多人PK 房主ROOM UID - mLiveAnchorViewHolder.setDrpkRoomId(mApplyUid); - mLiveAnchorViewHolder.showEndPkBt(); - } - } - }); - } - }); - } - } else { - ToastUtil.show(msg); - } - } - - }); - - - } - } - }); + onDRPkApplyTmp(u); } else { if (mPkWaitCount < 0) { - IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { - - @Override - public void onFailed(RTCErrorCode errorCode) { - - } - - @Override - public void onSuccess() { - final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LINK_MIC_PK).param("action", 8); - msg1.create(); - - String targetId = u.getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - Log.e("ry", "发送成功"); - if (SocketSwClient.mSocketHandler != null) { - SocketSwClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗" + mApplyUid); - } - }); - } - }); + onDRPkTimeoutTmp(u); } else { - IMRTCManager.getInstance().responseJoinOtherRoom(u.getId(), false, "extra", new IRCRTCResultCallback() { - - @Override - public void onFailed(RTCErrorCode errorCode) { - - } - - @Override - public void onSuccess() { - final SocketSendBean msg1 = new SocketSendBean().param("_method_", SOCKET_LINK_MIC_PK).param("action", 3); - msg1.create(); - - String targetId = u.getId(); - Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; - TextMessage messageContent = TextMessage.obtain(msg1.mResult.toString()); - io.rong.imlib.model.Message message = io.rong.imlib.model.Message.obtain(targetId, conversationType, messageContent); - - RongIMClient.getInstance().sendMessage(message, null, null, new IRongCallback.ISendMessageCallback() { - @Override - public void onAttached(io.rong.imlib.model.Message message) { - - } - - @Override - public void onSuccess(io.rong.imlib.model.Message message) { - Log.e("ry", "发送成功"); - if (SocketSwClient.mSocketHandler != null) { - SocketSwClient.mSocketHandler.processBroadcast(msg1.mResult.toString() + ""); - } - } - - @Override - public void onError(io.rong.imlib.model.Message message, RongIMClient.ErrorCode errorCode) { - Log.e("ry", "发送失敗"); - } - }); - } - }); + onDRPkRefuseTmp(u); } mApplyUid = null; mApplyStream = null; @@ -1694,14 +1694,14 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { /** * 更新Pk分数 */ - public void upDataPkScore(JSONArray pkScores, String uid, int time,boolean isShowTimeTitle) { + public void upDataPkScore(JSONArray pkScores, String uid, int time, boolean isShowTimeTitle) { this.pkScores = pkScores; L.eSw("更新Pk分数 upDataPkScore time:" + time + " " + pkScores); String userID1 = (String) imageGrade1.getTag(); String userID2 = (String) imageGrade2.getTag(); String userID4 = (String) imageGrade4.getTag(); - if (livePushSwViewHolder.timeTitle.getVisibility() == View.GONE &&isShowTimeTitle) { + if (livePushSwViewHolder.timeTitle.getVisibility() == View.GONE && isShowTimeTitle) { mHandler.removeMessages(WHAT_PK_TIME2); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) livePushSwViewHolder.timeTitle.getLayoutParams(); layoutParams.topMargin = DpUtil.dp2px(123); @@ -1795,7 +1795,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { } } } - } else if(pkScoreSize == 4){ + } else if (pkScoreSize == 4) { String userID3 = (String) imageGrade3.getTag(); detailsLinearLayout1.setVisibility(View.VISIBLE); @@ -1899,7 +1899,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { } } - }else{ + } else { detailsLinearLayout1.setVisibility(View.VISIBLE); detailsLinearLayout2.setVisibility(View.VISIBLE); @@ -1972,7 +1972,7 @@ public class LiveSwLinkMicPkPresenter implements View.OnClickListener { mHandler.sendEmptyMessageAtTime(WHAT_PK_TIME2, getNextSecondTime()); } } else { - if(DRPKing!=-1){ + if (DRPKing != -1) { mLiveAnchorViewHolder.showEndPkBt(); } livePushSwViewHolder.timeTitle.setVisibility(View.GONE); 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 4165190ae..57d0be7c7 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -218,6 +218,8 @@ import pl.droidsonroids.gif.GifImageView; */ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickListener { + private static final int PK_LINE_HEIGHT = (960 + DpUtil.dp2px(65));//单人PK席位高度线 + private static final int PK_BOTTOM = ScreenDimenUtil.getInstance().getScreenWdith() / 2; public static Context Contexts; private int mOffsetY; private ViewGroup mRoot; @@ -1746,8 +1748,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis layoutParams.topMargin = DpUtil.dp2px(190); dragonImmediateParticipationTime.setLayoutParams(layoutParams); } - if(mContext instanceof LiveRyAnchorActivity ||mContext instanceof LiveSwAnchorActivity){ - if (dragonImmediateParticipationTime.getVisibility() == View.GONE ) { + if (mContext instanceof LiveRyAnchorActivity || mContext instanceof LiveSwAnchorActivity) { + if (dragonImmediateParticipationTime.getVisibility() == View.GONE) { RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) redPacket.getLayoutParams(); layoutParams.topMargin = DpUtil.dp2px(110); redPacket.setLayoutParams(layoutParams); @@ -1769,7 +1771,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis redSchedule.setText(stringBuffer.toString()); openRedPacket.setText(String.format(mContext.getString(R.string.open_red_packet), mRedPacketModel.getRedPacketCount() + "")); } - if (IMLoginManager.get(mContext).getUserInfo().anchorUserType() && (mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity)) { + if (IMLoginManager.get(mContext).getUserInfo().anchorUserType() && (mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity)) { anchorTimeHandler.removeCallbacks(anchorTimeRunnable); anchorTimeHandler.post(anchorTimeRunnable); } @@ -1781,7 +1783,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis @Override public void onViewClicks() { - if (!(mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity)) { + if (!(mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity)) { LiveNetManager.get(mContext).redPacketInfo(mLiveUid, redPacketModel.getRedPacketId(), new com.yunbao.common.http.base.HttpCallback() { @Override public void onSuccess(RedPacketInfoModel data) { @@ -1807,7 +1809,6 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } - } }); } @@ -2779,7 +2780,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis ScreenDimenUtil util = ScreenDimenUtil.getInstance(); int mScreenWdith = util.getScreenWdith(); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) lt_pk_line.getLayoutParams(); - params.height = mScreenWdith * 720 / 1120; + params.height = mScreenWdith * 720 / PK_LINE_HEIGHT; + //params.bottomMargin = (mScreenWdith * 720 / 960); lt_pk_line.requestLayout(); lt_pk_line.setVisibility(View.VISIBLE); @@ -2837,7 +2839,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis ScreenDimenUtil util = ScreenDimenUtil.getInstance(); int mScreenWdith = util.getScreenWdith(); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) lt_pk_line.getLayoutParams(); - params.height = mScreenWdith * 720 / 1120; + params.height = mScreenWdith * 720 / PK_LINE_HEIGHT; + //params.bottomMargin=(mScreenWdith * 720 / 960); lt_pk_line.requestLayout(); lt_pk_line.setVisibility(View.VISIBLE); @@ -2977,7 +2980,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis bundle.putString("toUid", toUid); bundle.putInt("isAttention", isAttention); bundle.putBoolean("isLive", isAnchor); - bundle.putBoolean("SBW", !(mContext instanceof LiveSwAnchorActivity ||mContext instanceof LiveRyAnchorActivity )); + bundle.putBoolean("SBW", !(mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity)); giftWallDialog.setArguments(bundle); giftWallDialog.show(((AbsActivity) mContext).getSupportFragmentManager(), "GiftWallDialog"); @@ -3342,7 +3345,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis //直播间 粉丝排行榜 openMedalRankWindow(); } else if (i == R.id.btn_guard) { - ((LiveActivity) mContext).openNewGuardListWindow((mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity )); + ((LiveActivity) mContext).openNewGuardListWindow((mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity)); } else if (i == R.id.btn_red_pack) { ((LiveActivity) mContext).openRedPackListWindow(); @@ -3350,13 +3353,13 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis ((LiveActivity) mContext).openPrizePoolWindow(); } else if (i == R.id.user_more) { MobclickAgent.onEvent(mContext, "live_room_audience_list", "直播间上面点观众列表按钮"); - ((LiveActivity) mContext).openUserMoreListWindow(1, false, false, mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity); + ((LiveActivity) mContext).openUserMoreListWindow(1, false, false, mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity); } else if (i == R.id.hot_btn) { - ((LiveActivity) mContext).openUserMoreListWindow(1, false, false, mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity); + ((LiveActivity) mContext).openUserMoreListWindow(1, false, false, mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity); } else if (i == R.id.noble_seat) { MobclickAgent.onEvent(mContext, "live_room_noble", "贵族按钮"); - ((LiveActivity) mContext).openUserMoreListWindow(1, false, true, mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity); + ((LiveActivity) mContext).openUserMoreListWindow(1, false, true, mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity); } else if (i == R.id.btn_close) { // if (sudGameMin!=null&&sudGameMin.getVisibility()==View.VISIBLE) { // new XPopup.Builder(mContext) @@ -3389,7 +3392,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } else if (i == R.id.user_guard) { MobclickAgent.onEvent(mContext, "anchor_avatar_guard", "守护按钮"); // ((LiveActivity) mContext).openUserMoreListWindow(2, true); - ((LiveActivity) mContext).openNewGuardListWindow(mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity); + ((LiveActivity) mContext).openNewGuardListWindow(mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity); } if (i == R.id.lt_trickery) { showTrickeryDialog(); @@ -3414,7 +3417,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis * @param in 展示的view */ private void changeMsgView(View out, View in) { - if (mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity) { + if (mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity) { return; } if (in.getVisibility() == View.VISIBLE) { @@ -4767,7 +4770,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis lt_trickster_salvation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (mContext instanceof LiveSwAnchorActivity||mContext instanceof LiveRyAnchorActivity) { + if (mContext instanceof LiveSwAnchorActivity || mContext instanceof LiveRyAnchorActivity) { dialog.dismiss(); return; } @@ -5378,7 +5381,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis if (pkScores.size() == 2) { linearGrade3.setVisibility(View.GONE); linearGrade4.setVisibility(View.GONE); - } else if(pkScores.size()==3){ + } else if (pkScores.size() == 3) { linearGrade4.setVisibility(View.GONE); } for (int i = 0; i < pkScores.size(); i++) { 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 58c55fb47..dc57dc37e 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -696,7 +696,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe if (mLivePlayViewHolder != null && data.getEnterRoomInfo().getIsconnection() != null && data.getEnterRoomInfo().getIsconnection().equals("1")) { JSONArray array = pkInfo.getJSONArray("userlist"); //判断是否是多人连麦 - if (array.size() > 0) {//多人連麥 + if (array!=null&& !array.isEmpty()) {//多人連麥 if (mLivePlayViewHolder != null) { List drPkbeans = new ArrayList<>(); for (int j = 0; j < array.size(); j++) { @@ -782,6 +782,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } if (mLivePlayViewHolder != null) { JSONArray array = pkInfo.getJSONArray("userlist"); + if(array==null){ + array=new JSONArray(); + } List drPkbeans = new ArrayList<>(); for (int j = 0; j < array.size(); j++) { UserBean userBean = new UserBean(); @@ -2379,7 +2382,10 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe * @param time */ public void upDataPkScore(JSONArray pkScores, int time) { - L.eSw("upDataPkScore" + time); + L.eSw("upDataPkScore" + time+"|"+pkScores); + if(pkScores==null){ + return; + } this.pkScores = pkScores; if (mLiveRoomViewHolder != null) { String liveId = mLiveBean.getUid(); diff --git a/live/src/main/res/layout/view_live_room.xml b/live/src/main/res/layout/view_live_room.xml index 64345b088..1f22db57e 100644 --- a/live/src/main/res/layout/view_live_room.xml +++ b/live/src/main/res/layout/view_live_room.xml @@ -1493,6 +1493,7 @@ diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index f27fae230..d044814a5 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -9,6 +9,7 @@ import android.widget.ImageView; import android.widget.TextView; import com.lxj.xpopup.XPopup; +import com.yunbao.common.dialog.MessageSayHiNotifyDialog; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.dialog.SkitCheckInWasSuccessfulPopup; @@ -59,9 +60,6 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { // img_trophy.setOnLongClickListener(new View.OnLongClickListener() { // @Override // public boolean onLongClick(View view) { -// new XPopup.Builder(mContext) -// .asCustom(new SkitCheckInWasSuccessfulPopup(mContext)) -// .show(); // return true; // } // }); diff --git a/main/src/main/res/values-zh/strings.xml b/main/src/main/res/values-zh/strings.xml index 6a5b9dbe6..2f6a5b752 100644 --- a/main/src/main/res/values-zh/strings.xml +++ b/main/src/main/res/values-zh/strings.xml @@ -43,7 +43,7 @@ 在線 離線 保存設置 - 保存設置 + 清除設置 語音 文案 圖片