From 284b9784d60f43fa3e7327009529afedf97dc525 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 10 Dec 2022 16:20:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E4=BA=BAPk=E5=8A=9F=E8=83=BD=E6=92=A4?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/activity/LiveAudienceActivity.java | 16 +- .../live/activity/LiveRyAnchorActivity.java | 25 +- .../presenter/LiveRyLinkMicPkPresenter.java | 766 ++++-------------- .../yunbao/live/socket/SocketRyClient.java | 68 +- .../live/views/AbsRyLivePushViewHolder.java | 5 +- .../live/views/LivePlayRyViewHolder.java | 149 +--- .../live/views/LivePushRyViewHolder.java | 28 +- .../live/views/LiveRyAnchorViewHolder.java | 5 +- .../live/views/PortraitLiveManager.java | 40 +- .../main/res/drawable/background_pk_time.xml | 5 - .../main/res/layout/view_live_pk_details.xml | 252 ------ .../src/main/res/layout/view_live_push_ry.xml | 126 ++- .../main/res/layout/view_ry_live_anchor.xml | 10 +- .../res/mipmap-xxxhdpi/icon_livepk_no1.png | Bin 1420 -> 0 bytes .../res/mipmap-xxxhdpi/icon_livepk_no2.png | Bin 1595 -> 0 bytes .../res/mipmap-xxxhdpi/icon_livepk_no3.png | Bin 1746 -> 0 bytes .../res/mipmap-xxxhdpi/icon_livepk_no4.png | Bin 1526 -> 0 bytes 17 files changed, 276 insertions(+), 1219 deletions(-) delete mode 100644 live/src/main/res/drawable/background_pk_time.xml delete mode 100644 live/src/main/res/layout/view_live_pk_details.xml delete mode 100644 live/src/main/res/mipmap-xxxhdpi/icon_livepk_no1.png delete mode 100644 live/src/main/res/mipmap-xxxhdpi/icon_livepk_no2.png delete mode 100644 live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.png delete mode 100644 live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.png diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index ff6fdea2b..064538683 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -116,8 +116,9 @@ import java.util.List; public class LiveAudienceActivity extends LiveActivity { private static final String TAG = "LiveAudienceActivity"; - + public static String anyway; public JSONObject pkInfo; + public static LiveAudienceActivity liveAudienceActivity; // 竖直滑动 ViewPager private VerticalViewPager verticalViewPager; @@ -139,7 +140,7 @@ public class LiveAudienceActivity extends LiveActivity { private LiveBean mLiveBean; //当前直播间下标 private int mCurrentItem, mCurrentPage; - private PortraitLiveManager manager; + private static PortraitLiveManager manager; private int mLastPosition = -1; private ViewGroup mViewGroup; @@ -165,6 +166,7 @@ public class LiveAudienceActivity extends LiveActivity { protected void main() { Bus.getOn(this); super.main(); + liveAudienceActivity = this; CrashSaveBean.getInstance().addEnterRoom(); mProcessResultUtil = new ProcessResultUtil(this); Intent intent = getIntent(); @@ -215,12 +217,12 @@ public class LiveAudienceActivity extends LiveActivity { manager.setBackIndex(backIndex); } - public LiveRoomPlayViewHolder getmLivePlayViewHolder() { + public static LiveRoomPlayViewHolder getmLivePlayViewHolder() { return manager == null ? null : manager.getmLivePlayViewHolder(); } - public void setCurrentItem(int index) { + public static void setCurrentItem(int index) { manager.mViewPager.setCurrentItem(index); } @@ -1230,11 +1232,7 @@ public class LiveAudienceActivity extends LiveActivity { } break; - case LEAVE_PK_SCORE: - if (manager != null) { - manager.upDataPkScore(event.getPkScores(), event.getTime()); - } - break; + case PK_TIME_COUNT: if (manager != null) { manager.endDRGif(); diff --git a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java index 0a61d28f8..c754dffa2 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -5,6 +5,8 @@ import static com.tencent.trtc.TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_DISABLE; import static com.tencent.trtc.TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_ENABLE; import static com.yunbao.common.Constants.SOCKET_LIVE_DRPK; import static com.yunbao.common.Constants.SOCKET_LIVE_DRPK_RANDOM; +import static com.yunbao.live.views.AbsRyLivePushViewHolder.mPreView; +import static com.yunbao.live.views.LivePushRyViewHolder.dr_pk_view; import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_dr_pk_nub; import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_start_dr_pk; import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_start_dr_pk_view; @@ -20,6 +22,7 @@ import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -54,9 +57,11 @@ import com.yunbao.common.utils.BitmapUtil; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DateFormatUtil; import com.yunbao.common.utils.DialogUitl; +import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.L; import com.yunbao.common.utils.LogUtil; import com.yunbao.common.utils.MicStatusManager; +import com.yunbao.common.utils.ScreenDimenUtil; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; @@ -305,7 +310,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl if (code == 0) { btn_start_dr_pk.setVisibility(View.VISIBLE); -// dr_pk_view.setVisibility(View.VISIBLE); + dr_pk_view.setVisibility(View.VISIBLE); final SocketSendBean msg1 = new SocketSendBean() .param("_method_", SOCKET_LIVE_DRPK) .param("action", 9) @@ -325,7 +330,18 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl @Override public void onSuccess(Message message) { isDRPK = 1; + btn_start_dr_pk_view.setVisibility(View.VISIBLE); + dr_pk_view.setVisibility(View.VISIBLE); + + ScreenDimenUtil util = ScreenDimenUtil.getInstance(); + int mScreenWdith = util.getScreenWdith(); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); + params.weight = 1; + params.topMargin = DpUtil.dp2px(123); + dr_pk_view.setLayoutParams(params); + mPreView.setLayoutParams(params); + } @Override @@ -1438,11 +1454,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl mLiveRyLinkMicPkPresenter.leaveDRRoom(); } break; - case LEAVE_PK_SCORE: - if (mLiveRyLinkMicPkPresenter != null) { - mLiveRyLinkMicPkPresenter.upDataPkScore(event.getPkScores(), event.getUid(), event.getTime()); - } - break; + case PK_TIME_COUNT: if (mLiveRoomViewHolder != null) { mLiveRoomViewHolder.endDRGif(); @@ -1451,7 +1463,6 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl case DISCONNEXT_PK_TIME: if (mLivePushViewHolder != null) { mLivePushViewHolder.changeToBig(); - mLivePushViewHolder.closeButtonGone(); } break; } 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 dff040b5d..890434509 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -5,7 +5,9 @@ import static com.lzy.okgo.utils.HttpUtils.runOnUiThread; import static com.yunbao.common.Constants.SOCKET_LINK_MIC_PK; import static com.yunbao.common.Constants.SOCKET_LIVE_DRPK; import static com.yunbao.live.activity.LiveRyAnchorActivity.isDRPK; +import static com.yunbao.live.views.AbsRyLivePushViewHolder.mPreView; import static com.yunbao.live.views.LivePushRyViewHolder.contexts; +import static com.yunbao.live.views.LivePushRyViewHolder.dr_pk_view; import static com.yunbao.live.views.LivePushRyViewHolder.rcrtcLiveInfo; import static com.yunbao.live.views.LivePushRyViewHolder.rtcRoom; import static cn.rongcloud.rtc.core.RendererCommon.ScalingType.SCALE_ASPECT_FILL; @@ -60,6 +62,7 @@ import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.bean.LivePKUserListBean; import com.yunbao.live.custom.ProgressTextView; import com.yunbao.live.event.LiveAudienceEvent; +import com.yunbao.live.interfaces.ILiveLinkMicViewHolder; import com.yunbao.live.socket.SocketRyClient; import com.yunbao.live.socket.SocketRyLinkMicPkUtil; import com.yunbao.live.socket.SocketSendBean; @@ -110,7 +113,6 @@ public class LiveRyLinkMicPkPresenter 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 private static final int WHAT_PK_TIME = 2;//pk时间变化 what - private static final int WHAT_PK_TIME2 = 22;//pk时间变化 what private static final int LINK_MIC_COUNT_MAX = 10; private static int PK_TIME_MAX = 60 * 15;//pk时间 15分钟 private static final int PK_TIME_MAX_2 = 60;//惩罚时间 1分钟 @@ -144,12 +146,6 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { private String mSelfStream; private int mPkTimeFromServer; public static TRTCCloud mTRTCCloud1; - private View detailsView1, detailsView2, detailsView3, detailsView4; - private LinearLayout detailsLinearLayout1, detailsLinearLayout2, detailsLinearLayout3, detailsLinearLayout4; - private LinearLayout linearGrade1, linearGrade2, linearGrade3, linearGrade4; - private TextView textPkName1, textPkName2, textPkName3, textPkName4; - private TextView textGrade1, textGrade2, textGrade3, textGrade4; - private ImageView imageGrade1, imageGrade2, imageGrade3, imageGrade4; public LivePushRyViewHolder livePushRyViewHolder; @@ -201,7 +197,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } }; - public LiveRyLinkMicPkPresenter(Context context, LiveRoomPlayViewHolder linkMicViewHolder, boolean isAnchor, View root) { + public LiveRyLinkMicPkPresenter(Context context, ILiveLinkMicViewHolder linkMicViewHolder, boolean isAnchor, View root) { mContext = context; mIsAnchor = isAnchor; mRoot = root; @@ -234,50 +230,6 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { case WHAT_PK_TIME: changePkTime(); break; - - } - } - }; - - } - - public LiveRyLinkMicPkPresenter(Context context, LivePushRyViewHolder linkMicViewHolder, boolean isAnchor, View root) { - mContext = context; - mIsAnchor = isAnchor; - mRoot = root; - mPkContainer = linkMicViewHolder.getPkContainer(); - livePushRyViewHolder = linkMicViewHolder; - mPkTimeString1 = ""; - mPkTimeString2 = WordUtil.getString(R.string.live_pk_time_2); - //从本地取数据 - String pkTime = CommonAppConfig.getInstance().getAnchorPkTime(); - if (!pkTime.isEmpty()) { - try { - int time = Integer.parseInt(pkTime) * 60; - if (time > 0) { - PK_TIME_MAX = time; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - Log.d("PK_TIME_MAX", "" + PK_TIME_MAX); - mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case WHAT_PK_WAIT_RECEIVE: - onApplyPkWait(); - break; - case WHAT_PK_WAIT_SEND: - onSendPkWait(); - break; - case WHAT_PK_TIME2: - pkCountdownTimer(); - break; - case WHAT_PK_TIME: - changePkTime(); - break; } } }; @@ -376,8 +328,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); params.weight = 1; params.topMargin = mContext.getResources().getDimensionPixelOffset(R.dimen.live_top); - livePushRyViewHolder.camera.setLayoutParams(params); - livePushRyViewHolder.mPreView1.setLayoutParams(params); + LivePushRyViewHolder.mPreView.setLayoutParams(params); + LivePushRyViewHolder.mPreView1.setLayoutParams(params); } Log.i("tts", s1); @@ -529,36 +481,35 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 RCRTCVideoView remoteView = new RCRTCVideoView(mContext); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); - livePushRyViewHolder.mPreView1.setVisibility(View.VISIBLE); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.mPreView1.removeAllViews(); + LivePushRyViewHolder.dr1_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.mPreView1.addView(remoteView); + LivePushRyViewHolder.dr1_preview.addView(remoteView); } else if (i == 2) { //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 -// RCRTCVideoView remoteView = new RCRTCVideoView(mContext); -// ((RCRTCVideoInputStream) stream).setVideoView(remoteView); -// //todo 本demo只演示添加1个远端用户的视图 -// LivePushRyViewHolder.dr2_preview.removeAllViews(); -// remoteView.setScalingType(SCALE_ASPECT_FILL); -// LivePushRyViewHolder.dr2_preview.addView(remoteView); + RCRTCVideoView remoteView = new RCRTCVideoView(mContext); + ((RCRTCVideoInputStream) stream).setVideoView(remoteView); + //todo 本demo只演示添加1个远端用户的视图 + LivePushRyViewHolder.dr2_preview.removeAllViews(); + remoteView.setScalingType(SCALE_ASPECT_FILL); + LivePushRyViewHolder.dr2_preview.addView(remoteView); } else if (i == 3) { //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 -// RCRTCVideoView remoteView = new RCRTCVideoView(mContext); -// ((RCRTCVideoInputStream) stream).setVideoView(remoteView); -// //todo 本demo只演示添加1个远端用户的视图 -// LivePushRyViewHolder.dr3_preview.removeAllViews(); -// remoteView.setScalingType(SCALE_ASPECT_FILL); -// LivePushRyViewHolder.dr3_preview.addView(remoteView); + RCRTCVideoView remoteView = new RCRTCVideoView(mContext); + ((RCRTCVideoInputStream) stream).setVideoView(remoteView); + //todo 本demo只演示添加1个远端用户的视图 + LivePushRyViewHolder.dr3_preview.removeAllViews(); + remoteView.setScalingType(SCALE_ASPECT_FILL); + LivePushRyViewHolder.dr3_preview.addView(remoteView); } else if (i == 4) { //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 -// RCRTCVideoView remoteView = new RCRTCVideoView(mContext); -// ((RCRTCVideoInputStream) stream).setVideoView(remoteView); -// //todo 本demo只演示添加1个远端用户的视图 -// LivePushRyViewHolder.dr4_preview.removeAllViews(); -// remoteView.setScalingType(SCALE_ASPECT_FILL); -// LivePushRyViewHolder.dr4_preview.addView(remoteView); + RCRTCVideoView remoteView = new RCRTCVideoView(mContext); + ((RCRTCVideoInputStream) stream).setVideoView(remoteView); + //todo 本demo只演示添加1个远端用户的视图 + LivePushRyViewHolder.dr4_preview.removeAllViews(); + remoteView.setScalingType(SCALE_ASPECT_FILL); + LivePushRyViewHolder.dr4_preview.addView(remoteView); } //如果要订阅所有远端用户的流。保存所有流信息,方便后面统一订阅 inputStreamList.add(stream); @@ -686,9 +637,9 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.mPreView1.removeAllViews(); +// LivePushRyViewHolder.mPreView1.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.mPreView1.addView(remoteView); + LivePushRyViewHolder.mPreView1.addView(remoteView); } //如果要订阅所有远端用户的流。保存所有流信息,方便后面统一订阅 inputStreamList.add(stream); @@ -766,9 +717,9 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); params.weight = 1; params.topMargin = mContext.getResources().getDimensionPixelOffset(R.dimen.live_top); - livePushRyViewHolder.camera.setLayoutParams(params); - livePushRyViewHolder.mPreView1.setLayoutParams(params); - livePushRyViewHolder.mPreView1.setVisibility(View.VISIBLE); + LivePushRyViewHolder.mPreView.setLayoutParams(params); + LivePushRyViewHolder.mPreView1.setLayoutParams(params); + LivePushRyViewHolder.mPreView1.setVisibility(View.VISIBLE); final SocketSendBean msg1 = new SocketSendBean() .param("_method_", SOCKET_LINK_MIC_PK) @@ -810,9 +761,9 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); params.weight = 1; params.topMargin = mContext.getResources().getDimensionPixelOffset(R.dimen.live_top); - livePushRyViewHolder.camera.setLayoutParams(params); - livePushRyViewHolder.mPreView1.setLayoutParams(params); - livePushRyViewHolder.mPreView1.setVisibility(View.VISIBLE); + LivePushRyViewHolder.mPreView.setLayoutParams(params); + LivePushRyViewHolder.mPreView1.setLayoutParams(params); + LivePushRyViewHolder.mPreView1.setVisibility(View.VISIBLE); LivePushRyViewHolder.btn_close.setVisibility(View.VISIBLE); JSONObject msg1 = new JSONObject(); @@ -839,9 +790,9 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.mPreView1.removeAllViews(); +// LivePushRyViewHolder.mPreView1.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.mPreView1.addView(remoteView); + LivePushRyViewHolder.mPreView1.addView(remoteView); } //如果要订阅所有远端用户的流。保存所有流信息,方便后面统一订阅 inputStreamList.add(stream); @@ -1102,7 +1053,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { /** * 退出多人PK */ - public void leaveDRRoom() { + public static void leaveDRRoom() { Log.e("ry", "退出多人OKKK" + inputStreamList.size()); isDRPK = 0; for (int i = 0; i < inputStreamList.size(); i++) { @@ -1172,32 +1123,26 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { } } - leaveHandler.post(leaveRunnable); + new Handler(Looper.getMainLooper()).post(new Runnable() { + public void run() { + //恢复全屏画面 + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + params.topMargin = 0; + mPreView.setLayoutParams(params); + dr_pk_view.setVisibility(View.GONE); + inputStreamList.clear(); + inputStreamList1.clear(); + //删除之前其他主播的画面 + LivePushRyViewHolder.dr1_preview.removeAllViews(); + LivePushRyViewHolder.dr2_preview.removeAllViews(); + LivePushRyViewHolder.dr3_preview.removeAllViews(); + LivePushRyViewHolder.dr4_preview.removeAllViews(); + } + }); + } - private Handler leaveHandler = new Handler(Looper.getMainLooper()); - private Runnable leaveRunnable = new Runnable() { - @Override - public void run() { - //恢复全屏画面 - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); - params.topMargin = 0; - livePushRyViewHolder.camera.setLayoutParams(params); - livePushRyViewHolder.dr_pk_view.setVisibility(View.GONE); - inputStreamList.clear(); - inputStreamList1.clear(); - //删除之前其他主播的画面 - livePushRyViewHolder.dr1_preview.removeAllViews(); - livePushRyViewHolder.dr3_preview.removeAllViews(); - livePushRyViewHolder.cameraPreview3.removeAllViews(); - leaveHandler.removeCallbacks(leaveRunnable); - livePushRyViewHolder.timeTitle.setVisibility(View.GONE); - livePushRyViewHolder.mPreView.removeView(detailsView1); - livePushRyViewHolder.cameraPreview3.setVisibility(View.GONE); - } - }; - /** * 随机PK拒绝对话框 */ @@ -1584,28 +1529,15 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { new Handler(Looper.getMainLooper()).post(new Runnable() { public void run() { //把多人PK的View显示出来 - if (livePushRyViewHolder.dr_pk_view.getVisibility() == View.GONE) { + if (dr_pk_view.getVisibility() == View.GONE) { ScreenDimenUtil util = ScreenDimenUtil.getInstance(); int mScreenWdith = util.getScreenWdith(); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); params.weight = 1; params.topMargin = DpUtil.dp2px(123); - livePushRyViewHolder.dr_pk_view.setLayoutParams(params); - livePushRyViewHolder.camera.setLayoutParams(params); - livePushRyViewHolder.dr_pk_view.setVisibility(View.VISIBLE); - livePushRyViewHolder.dr1_preview.setVisibility(View.GONE); - livePushRyViewHolder.dr2_preview.setVisibility(View.GONE); - livePushRyViewHolder.dr3_preview.setVisibility(View.GONE); - livePushRyViewHolder.dr4_preview.setVisibility(View.GONE); - 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); - imageGrade1.setTag(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId())); - livePushRyViewHolder.mPreView.addView(detailsView1); - detailsLinearLayout1.setVisibility(View.VISIBLE); - linearGrade1.setVisibility(View.GONE); + dr_pk_view.setLayoutParams(params); + mPreView.setLayoutParams(params); + dr_pk_view.setVisibility(View.VISIBLE); } Log.e("ry", "多人接受成功" + mApplyUid); @@ -1618,99 +1550,37 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { Log.e("ry", i + "收到" + stream.getMediaType() + "实打实打算" + rcrtcOtherRoom.getRemoteUsers().get(i).getUserId()); if (stream.getMediaType() == RCRTCMediaType.VIDEO) { if (inputStreamList.size() == 0) { - livePushRyViewHolder.dr1_preview.setVisibility(View.VISIBLE); //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 - RCRTCVideoView remoteView = new RCRTCVideoView(mContext); + RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.dr1_preview.removeAllViews(); + LivePushRyViewHolder.dr1_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.dr1_preview.addView(remoteView); - - - LiveNetManager.get(mContext).getLiveInfo(uid, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - 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(String.valueOf(uid)); - textPkName2.setText(data.getUserNicename()); - livePushRyViewHolder.dr1_preview.addView(detailsView2); - detailsLinearLayout2.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - - } - }); - + LivePushRyViewHolder.dr1_preview.addView(remoteView); } else if (inputStreamList.size() == 1) { - livePushRyViewHolder.dr3_preview.setVisibility(View.VISIBLE); //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 - RCRTCVideoView remoteView = new RCRTCVideoView(mContext); + RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.dr3_preview.removeAllViews(); + LivePushRyViewHolder.dr2_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.dr3_preview.addView(remoteView); - LiveNetManager.get(mContext).getLiveInfo(uid, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - 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(uid); - textPkName4.setText(data.getUserNicename()); - livePushRyViewHolder.dr3_preview.addView(detailsView4); - detailsLinearLayout4.setVisibility(View.VISIBLE); - linearGrade4.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - - } - }); + LivePushRyViewHolder.dr2_preview.addView(remoteView); } else if (inputStreamList.size() == 2) { - livePushRyViewHolder.cameraPreview3.setVisibility(View.VISIBLE); //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 - RCRTCVideoView remoteView = new RCRTCVideoView(mContext); + RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.cameraPreview3.removeAllViews(); + LivePushRyViewHolder.dr3_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.cameraPreview3.addView(remoteView); - - LiveNetManager.get(mContext).getLiveInfo(uid, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - 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(uid); - textPkName3.setText(data.getUserNicename()); - livePushRyViewHolder.cameraPreview3.addView(detailsView3); - detailsLinearLayout3.setVisibility(View.VISIBLE); - linearGrade3.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - - } - }); + LivePushRyViewHolder.dr3_preview.addView(remoteView); + } else if (inputStreamList.size() == 3) { + //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 + RCRTCVideoView remoteView = new RCRTCVideoView(contexts); + ((RCRTCVideoInputStream) stream).setVideoView(remoteView); + //todo 本demo只演示添加1个远端用户的视图 + LivePushRyViewHolder.dr4_preview.removeAllViews(); + remoteView.setScalingType(SCALE_ASPECT_FILL); + LivePushRyViewHolder.dr4_preview.addView(remoteView); } inputStreamList.add(stream); } @@ -1776,31 +1646,6 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { rcrtcOtherRoom.registerOtherRoomEventsListener(otherRoomEventsListener); new Handler(Looper.getMainLooper()).post(new Runnable() { public void run() { - - if (livePushRyViewHolder.dr_pk_view.getVisibility() == View.GONE) { - ScreenDimenUtil util = ScreenDimenUtil.getInstance(); - int mScreenWdith = util.getScreenWdith(); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mScreenWdith * 720 / 960); - params.weight = 1; - params.topMargin = DpUtil.dp2px(123); - livePushRyViewHolder.dr_pk_view.setLayoutParams(params); - livePushRyViewHolder.camera.setLayoutParams(params); - livePushRyViewHolder.dr_pk_view.setVisibility(View.VISIBLE); - livePushRyViewHolder.dr1_preview.setVisibility(View.GONE); - livePushRyViewHolder.dr2_preview.setVisibility(View.GONE); - livePushRyViewHolder.dr3_preview.setVisibility(View.GONE); - livePushRyViewHolder.dr4_preview.setVisibility(View.GONE); - 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); - imageGrade1.setTag(String.valueOf(IMLoginManager.get(mContext).getUserInfo().getId())); - livePushRyViewHolder.mPreView.addView(detailsView1); - detailsLinearLayout1.setVisibility(View.VISIBLE); - linearGrade1.setVisibility(View.GONE); - } - //遍历远端用户列表 for (int i = 0; i < rcrtcOtherRoom.getRemoteUsers().size(); i++) { //遍历远端用户发布的资源列表 @@ -1808,96 +1653,37 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { Log.e("ry111", stream.getMediaType() + ""); if (stream.getMediaType() == RCRTCMediaType.VIDEO) { if (inputStreamList.size() == 0) { - livePushRyViewHolder.dr1_preview.setVisibility(View.VISIBLE); //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.dr1_preview.removeAllViews(); + LivePushRyViewHolder.dr1_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.dr1_preview.addView(remoteView); - LiveNetManager.get(mContext).getLiveInfo(u, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - 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(String.valueOf(u)); - textPkName2.setText(data.getUserNicename()); - livePushRyViewHolder.dr1_preview.addView(detailsView2); - detailsLinearLayout2.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - - } - }); + LivePushRyViewHolder.dr1_preview.addView(remoteView); } else if (inputStreamList.size() == 1) { - livePushRyViewHolder.dr3_preview.setVisibility(View.VISIBLE); //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.dr3_preview.removeAllViews(); + LivePushRyViewHolder.dr2_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.dr3_preview.addView(remoteView); - LiveNetManager.get(mContext).getLiveInfo(u, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - 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(u); - textPkName4.setText(data.getUserNicename()); - livePushRyViewHolder.dr3_preview.addView(detailsView4); - detailsLinearLayout4.setVisibility(View.VISIBLE); - linearGrade4.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - - } - }); + LivePushRyViewHolder.dr2_preview.addView(remoteView); } else if (inputStreamList.size() == 2) { - livePushRyViewHolder.cameraPreview3.setVisibility(View.VISIBLE); //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 RCRTCVideoView remoteView = new RCRTCVideoView(contexts); ((RCRTCVideoInputStream) stream).setVideoView(remoteView); //todo 本demo只演示添加1个远端用户的视图 - livePushRyViewHolder.cameraPreview3.removeAllViews(); + LivePushRyViewHolder.dr3_preview.removeAllViews(); remoteView.setScalingType(SCALE_ASPECT_FILL); - livePushRyViewHolder.cameraPreview3.addView(remoteView); - - LiveNetManager.get(mContext).getLiveInfo(u, new com.yunbao.common.http.base.HttpCallback() { - @Override - public void onSuccess(LiveInfoModel data) { - 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(u); - textPkName3.setText(data.getUserNicename()); - livePushRyViewHolder.cameraPreview3.addView(detailsView3); - detailsLinearLayout3.setVisibility(View.VISIBLE); - linearGrade3.setVisibility(View.GONE); - } - - @Override - public void onError(String error) { - - } - }); + LivePushRyViewHolder.dr3_preview.addView(remoteView); + } else if (inputStreamList.size() == 3) { + //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 + RCRTCVideoView remoteView = new RCRTCVideoView(contexts); + ((RCRTCVideoInputStream) stream).setVideoView(remoteView); + //todo 本demo只演示添加1个远端用户的视图 + LivePushRyViewHolder.dr4_preview.removeAllViews(); + remoteView.setScalingType(SCALE_ASPECT_FILL); + LivePushRyViewHolder.dr4_preview.addView(remoteView); } inputStreamList.add(stream); @@ -1957,9 +1743,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { * @param streams 必须为视频流列表 * @return */ - private RCRTCMixConfig create_Custom_MixConfig(boolean isCrop, List streams) { - Log.e("视频合流", streams.toString()); - Log.e("视频合流", "视频长度:" + streams.size()); + public static RCRTCMixConfig create_Custom_MixConfig(boolean isCrop, List streams) { RCRTCMixConfig config = new RCRTCMixConfig(); //1. 设置自定义合流布局模式 config.setLayoutMode(RCRTCMixConfig.MixLayoutMode.CUSTOM); @@ -1987,92 +1771,62 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { //(请参照画布和声音配置示例代码) //3. 假设以画布设置的宽高为 300 * 300为例(应以真实设置的宽高为准),设置每个视频流小窗口的坐标及宽高 ArrayList list = new ArrayList<>(); - - if (streams.size() == 1) { - //user1的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout1 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout1.setVideoStream(RCRTCEngine.getInstance().getDefaultVideoStream()); // RCRTCStream#MediaType 必须是Video - videoLayout1.setX(0); //X 坐标 - videoLayout1.setY(0); //Y 坐标 - videoLayout1.setWidth(480); // 视频窗口的宽 - videoLayout1.setHeight(720); // 视频窗口的高 - list.add(videoLayout1); - - //user2的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout2 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout2.setVideoStream(streams.get(0)); // RCRTCStream#MediaType 必须是Video - videoLayout2.setX(480); //X 坐标 - videoLayout2.setY(0); //Y 坐标 - videoLayout2.setWidth(480); // 视频窗口的宽 - videoLayout2.setHeight(720); // 视频窗口的高 - list.add(videoLayout2); - - } else if (streams.size() == 2) { - //user1的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout1 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - list.add(videoLayout1); - videoLayout1.setVideoStream(RCRTCEngine.getInstance().getDefaultVideoStream()); // RCRTCStream#MediaType 必须是Video - videoLayout1.setX(0); //X 坐标 - videoLayout1.setY(0); //Y 坐标 - videoLayout1.setWidth(480); // 视频窗口的宽 - videoLayout1.setHeight(720); // 视频窗口的高 - - //user2的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout2 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout2.setVideoStream(streams.get(0)); // RCRTCStream#MediaType 必须是Video - videoLayout2.setX(480); //X 坐标 - videoLayout2.setY(0); //Y 坐标 - videoLayout2.setWidth(480); // 视频窗口的宽 - videoLayout2.setHeight(360); // 视频窗口的高 - list.add(videoLayout2); - - //user3的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout3 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout3.setVideoStream(streams.get(1)); // RCRTCStream#MediaType 必须是Video - videoLayout3.setX(480); //X 坐标 - videoLayout3.setY(360); //Y 坐标 - videoLayout3.setWidth(480); // 视频窗口的宽 - videoLayout3.setHeight(360); // 视频窗口的高 - list.add(videoLayout3); - - } else if (streams.size() == 3) { - //user1的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout1 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout1.setVideoStream(RCRTCEngine.getInstance().getDefaultVideoStream()); // RCRTCStream#MediaType 必须是Video - videoLayout1.setX(0); //X 坐标 - videoLayout1.setY(0); //Y 坐标 - videoLayout1.setWidth(480); // 视频窗口的宽 - videoLayout1.setHeight(720); // 视频窗口的高 - list.add(videoLayout1); - - //user2的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout2 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout2.setVideoStream(streams.get(0)); // RCRTCStream#MediaType 必须是Video - videoLayout2.setX(480); //X 坐标 - videoLayout2.setY(0); //Y 坐标 - videoLayout2.setWidth(480); // 视频窗口的宽 - videoLayout2.setHeight(360); // 视频窗口的高 - list.add(videoLayout2); - - //user3的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout3 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout3.setVideoStream(streams.get(1)); // RCRTCStream#MediaType 必须是Video - videoLayout3.setX(480); //X 坐标 - videoLayout3.setY(360); //Y 坐标 - videoLayout3.setWidth(480); // 视频窗口的宽 - videoLayout3.setHeight(360); // 视频窗口的高 - list.add(videoLayout3); - - //user3的视频流 - RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout4 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); - videoLayout4.setVideoStream(streams.get(2)); // RCRTCStream#MediaType 必须是Video - videoLayout4.setX(0); //X 坐标 - videoLayout4.setY(360); //Y 坐标 - videoLayout4.setWidth(480); // 视频窗口的宽 - videoLayout4.setHeight(360); // 视频窗口的高 - list.add(videoLayout4); - } config.setCustomLayouts(list); + //user1的视频流 + RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout1 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); + list.add(videoLayout1); + videoLayout1.setVideoStream(RCRTCEngine.getInstance().getDefaultVideoStream()); // RCRTCStream#MediaType 必须是Video + videoLayout1.setX(0); //X 坐标 + videoLayout1.setY(0); //Y 坐标 + videoLayout1.setWidth(480); // 视频窗口的宽 + videoLayout1.setHeight(720); // 视频窗口的高 + + for (int i = 0; i < streams.size(); i++) { + Log.e("tttts,", "a" + i + "cccc" + streams.size()); + Log.e("tttts", streams.get(i).getUserId() + ""); + if (i == 0) { + //user2的视频流 + RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout2 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); + list.add(videoLayout2); + videoLayout2.setVideoStream(streams.get(i)); // RCRTCStream#MediaType 必须是Video + videoLayout2.setX(480); //X 坐标 + videoLayout2.setY(0); //Y 坐标 + videoLayout2.setWidth(240); // 视频窗口的宽 + videoLayout2.setHeight(360); // 视频窗口的高 + Log.e("ttt1112", "0" + "VS" + streams.get(i).getUserId()); + } else if (i == 1) { + //user3的视频流 + RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout3 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); + list.add(videoLayout3); + videoLayout3.setVideoStream(streams.get(i)); // RCRTCStream#MediaType 必须是Video + videoLayout3.setX(720); //X 坐标 + videoLayout3.setY(0); //Y 坐标 + videoLayout3.setWidth(240); // 视频窗口的宽 + videoLayout3.setHeight(360); // 视频窗口的高 + Log.e("ttt1112", "1" + "VS" + streams.get(i).getUserId()); + + } else if (i == 2) { + //user3的视频流 + RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout4 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); + list.add(videoLayout4); + videoLayout4.setVideoStream(streams.get(i)); // RCRTCStream#MediaType 必须是Video + videoLayout4.setX(480); //X 坐标 + videoLayout4.setY(360); //Y 坐标 + videoLayout4.setWidth(240); // 视频窗口的宽 + videoLayout4.setHeight(360); // 视频窗口的高 + Log.e("ttt1112", "2" + "VS" + streams.get(i).getUserId()); + } else if (i == 3) { + //user3的视频流 + RCRTCMixConfig.CustomLayoutList.CustomLayout videoLayout4 = new RCRTCMixConfig.CustomLayoutList.CustomLayout(); + list.add(videoLayout4); + videoLayout4.setVideoStream(streams.get(i)); // RCRTCStream#MediaType 必须是Video + videoLayout4.setX(720); //X 坐标 + videoLayout4.setY(360); //Y 坐标 + videoLayout4.setWidth(240); // 视频窗口的宽 + videoLayout4.setHeight(360); // 视频窗口的高 + Log.e("ttt1112", "3" + "VS" + streams.get(i).getUserId()); + } + } return config; } @@ -2196,8 +1950,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { mLiveLinkMicPkViewHolder = new LiveLinkMicPkViewHolder(mContext, mPkContainer); mLiveLinkMicPkViewHolder.addToParent(); mLiveLinkMicPkViewHolder.setIsAnchor(mIsAnchor); - if (mContext instanceof LiveAudienceActivity) { - ((LiveAudienceActivity) mContext).getmLivePlayViewHolder().setPkview(); + if (LiveAudienceActivity.getmLivePlayViewHolder() != null) { + LiveAudienceActivity.getmLivePlayViewHolder().setPkview(); } } @@ -2315,8 +2069,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { public void run() { // try { // Thread.sleep(4000); - if (mContext instanceof LiveAudienceActivity) { - ((LiveAudienceActivity) mContext).getmLivePlayViewHolder().setPkEndview(); + if (mContext instanceof LiveAudienceActivity && LiveAudienceActivity.getmLivePlayViewHolder() != null) { + LiveAudienceActivity.getmLivePlayViewHolder().setPkEndview(); } // } catch (InterruptedException e) { // e.printStackTrace(); @@ -2353,7 +2107,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { if (mIsAnchor) { ((LiveRyAnchorActivity) mContext).setPkBtnVisible(true); } - // ToastUtil.show(R.string.link_mic_refuse_pk); + ToastUtil.show(R.string.link_mic_refuse_pk); } /** @@ -2419,224 +2173,4 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { public void setSelfStream(String selfStream) { mSelfStream = selfStream; } - - /** - * 更新Pk分数 - */ - public void upDataPkScore(JSONArray pkScores, String uid, int time) { - String userID1 = (String) imageGrade1.getTag(); - String userID2 = (String) imageGrade2.getTag(); - String userID4 = (String) imageGrade4.getTag(); - if (livePushRyViewHolder.timeTitle.getVisibility() == View.GONE) { - RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) livePushRyViewHolder.timeTitle.getLayoutParams(); - layoutParams.topMargin = DpUtil.dp2px(123); - livePushRyViewHolder.timeTitle.setLayoutParams(layoutParams); - livePushRyViewHolder.timeTitle.setVisibility(View.VISIBLE); - String pkTime = StringUtil.getDurationText(time * 1000); - livePushRyViewHolder.textTime.setText(String.format(mContext.getString(R.string.pk_time), pkTime)); - mPkTimeCount = time; - pkCountdownTimer(); - } - int pkScoreSize = pkScores.size(); - if (pkScoreSize == 3) { - linearGrade1.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.VISIBLE); - linearGrade4.setVisibility(View.VISIBLE); - //拿到原始数据 - for (int i = 0; i < pkScores.size(); i++) { - JSONObject score = pkScores.getJSONObject(i); - String userID = score.getString("id"); - long userScore = score.getLong("score"); - if (TextUtils.equals(userID, userID1)) { - textGrade1.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade1); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade1); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade1); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade1); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade1); - break; - } - } - } else if (TextUtils.equals(userID, userID2)) { - textGrade2.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade2); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade2); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade2); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade2); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade2); - break; - } - } - } else if (TextUtils.equals(userID, userID4)) { - textGrade4.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade4); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade4); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade4); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade4); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade4); - break; - } - } - } - } - } else { - String userID3 = (String) imageGrade3.getTag(); - linearGrade1.setVisibility(View.VISIBLE); - linearGrade2.setVisibility(View.VISIBLE); - linearGrade3.setVisibility(View.VISIBLE); - linearGrade4.setVisibility(View.VISIBLE); - //拿到原始数据 - for (int i = 0; i < pkScores.size(); i++) { - JSONObject score = pkScores.getJSONObject(i); - String userID = score.getString("id"); - long userScore = score.getLong("score"); - if (TextUtils.equals(userID, userID1)) { - textGrade1.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade1); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade1); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade1); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade1); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade1); - break; - } - } - } else if (TextUtils.equals(userID, userID2)) { - textGrade2.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade2); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade2); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade2); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade2); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade2); - break; - } - } - } else if (TextUtils.equals(userID, userID4)) { - textGrade4.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade4); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade4); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade4); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade4); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade4); - break; - } - } - } else if (TextUtils.equals(userID, userID3)) { - textGrade3.setText(String.valueOf(userScore)); - if (!score.containsKey("paiming")) { - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade3); - } else { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no1, imageGrade3); - break; - case 2: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no2, imageGrade3); - break; - case 3: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no3, imageGrade3); - break; - case 4: - ImgLoader.display(mContext, R.mipmap.icon_livepk_no4, imageGrade3); - break; - } - } - } - - } - } - - } - - - /** - * PK倒计时 - */ - private void pkCountdownTimer() { - - mPkTimeCount--; - if (mPkTimeCount > 0) {// - if (mHandler != null) { - String s1 = StringUtil.getDurationText(mPkTimeCount * 1000); - livePushRyViewHolder.textTime.setText(String.format(mContext.getString(R.string.pk_time), s1)); - mHandler.sendEmptyMessageAtTime(WHAT_PK_TIME2, getNextSecondTime()); - } - } else { - livePushRyViewHolder.timeTitle.setVisibility(View.GONE); - if (mHandler != null) { - mHandler.removeCallbacksAndMessages(null); - } - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.PK_TIME_COUNT)); -// endDRGif(); - } - } - - } 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 4c301fa2d..1921247e3 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java @@ -3,6 +3,8 @@ package com.yunbao.live.socket; import static com.blankj.utilcode.util.SnackbarUtils.dismiss; import static com.blankj.utilcode.util.ViewUtils.runOnUiThread; import static com.yunbao.live.activity.LiveRyAnchorActivity.isDRPK; +import static com.yunbao.live.presenter.LiveRyLinkMicPkPresenter.leaveDRRoom; +import static com.yunbao.live.views.LivePushRyViewHolder.dr_pk_view; import static com.yunbao.live.views.LivePushRyViewHolder.rtcRoom; import static com.yunbao.live.views.LiveRoomViewHolder.getIsHot; @@ -278,58 +280,41 @@ public class SocketRyClient { } //收到对方同意多人PK邀请 else if (action3 == 2) { -// UserBean u = new UserBean(); -//// u.setUserNiceName(map.getString("uname")); -// u.setId(map.getString("uid")); -// mListener.onLinkDRMicPkApplyOk(u); - } else if (action3 == 6) {//开始Pk + UserBean u = new UserBean(); +// u.setUserNiceName(map.getString("uname")); + u.setId(map.getString("uid")); + mListener.onLinkDRMicPkApplyOk(u); + } else if (action3 == 6) { if (LiveRoomViewHolder.mHandler != null) { LiveRoomViewHolder.mHandler.removeCallbacksAndMessages(null); } -// LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, map.getIntValue("drpk_time")); - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.LEAVE_PK_SCORE) - .setPkScores(map.getJSONArray("userlist")) - .setUid(mLiveUid) - .setTime(map.getIntValue("drpk_time"))); + LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, map.getIntValue("drpk_time")); if (livePushRyViewHolder == null) { - // LiveAudienceActivity.getmLivePlayViewHolder().setPkview(); - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.SOCKET_LIVE_DRPK_SET_PK_VIEW) - ); + LiveAudienceActivity.getmLivePlayViewHolder().setPkview(); } } else if (action3 == 5) { // endDRGif(); LiveRoomViewHolder.d_pk_view.setVisibility(View.GONE); if (LiveRyAnchorActivity.mLiveAnchorViewHolder != null) { + dr_pk_view.setVisibility(View.GONE); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); params.topMargin = 0; - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.LEAVE_DR_ROOM)); + LivePushRyViewHolder.mPreView.setLayoutParams(params); + leaveDRRoom(); isDRPK = 0; } else { - // LiveAudienceActivity.getmLivePlayViewHolder().setPkEndview(); - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.SOCKET_LIVE_DRPK_SET_PK_END_VIEW) - ); - + LiveAudienceActivity.getmLivePlayViewHolder().setPkEndview(); } //創建了多人房間 } else if (action3 == 3) { - /* if (LiveAudienceActivity.getmLivePlayViewHolder() != null) { + if (LiveAudienceActivity.getmLivePlayViewHolder() != null) { LiveAudienceActivity.getmLivePlayViewHolder().setPkview(); - }*/ - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.SOCKET_LIVE_DRPK_SET_PK_VIEW) - ); + } isDRPK = 1; } else if (action3 == 10) { if (!map.getString("uid").equals(CommonAppConfig.getInstance().getUid())) { - // LiveAudienceActivity.getmLivePlayViewHolder().setPkview(); - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.SOCKET_LIVE_DRPK_SET_PK_VIEW) - ); + LiveAudienceActivity.getmLivePlayViewHolder().setPkview(); } } @@ -443,7 +428,7 @@ public class SocketRyClient { case Constants.SOCKET_GAME_ZJH://游戏 智勇三张 if (CommonAppConfig.GAME_ENABLE) { mListener.onGameZjh(map); - } + } break; case Constants.SOCKET_GAME_HD://游戏 海盗船长 if (CommonAppConfig.GAME_ENABLE) { @@ -916,12 +901,7 @@ public class SocketRyClient { mListener.onSendGift(receiveGiftBean); } if (map.getIntValue("drpk_status") == 1) { - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.LEAVE_PK_SCORE) - .setPkScores(map.getJSONArray("userlist")) - .setUid(mLiveUid) - .setTime(0)); -// LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, 0); + LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, 0); } } @@ -1070,8 +1050,16 @@ public class SocketRyClient { break; case 5://PK时候断开连麦的回调 if (rtcRoom != null) { - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.DISCONNEXT_PK_TIME)); + if (LivePushRyViewHolder.mPreView1 != null) { + LivePushRyViewHolder.mPreView1.removeAllViews(); + LivePushRyViewHolder.mPreView1.setVisibility(View.GONE); + isDRPK = 0; + leaveDRRoom(); + } + LivePushRyViewHolder.btn_close.setVisibility(View.GONE); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); + params.topMargin = 0; + LivePushRyViewHolder.mPreView.setLayoutParams(params); //断开连麦 HttpClient.getInstance().post("livepk.setliveuserout", "livepk.setliveuserout") .execute(new HttpCallback() { diff --git a/live/src/main/java/com/yunbao/live/views/AbsRyLivePushViewHolder.java b/live/src/main/java/com/yunbao/live/views/AbsRyLivePushViewHolder.java index 2b1c7e4f2..cd95be954 100644 --- a/live/src/main/java/com/yunbao/live/views/AbsRyLivePushViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/AbsRyLivePushViewHolder.java @@ -32,10 +32,9 @@ public class AbsRyLivePushViewHolder extends AbsViewHolder implements ILivePushV protected ViewGroup mLeftContainer; protected ViewGroup mRightContainer; protected ViewGroup mPkContainer; - public FrameLayout mPreView, mPreView1, cameraPreview3, dr1_preview, dr2_preview, dr3_preview, dr4_preview; - public ImageView leave; + public static FrameLayout mPreView,mPreView1,dr1_preview,dr2_preview,dr3_preview,dr4_preview; + public static ImageView leave; protected boolean mOpenCamera;//是否选择了相机 - public LinearLayout camera; //倒计时 protected TextView mCountDownText; 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 70271fc1a..8d979b241 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java @@ -12,23 +12,18 @@ import android.media.AudioManager; import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.lzf.easyfloat.EasyFloat; import com.lzy.okserver.OkDownload; import com.lzy.okserver.download.DownloadTask; @@ -38,23 +33,19 @@ import com.tencent.live2.V2TXLivePlayerObserver; import com.tencent.live2.impl.V2TXLivePlayerImpl; import com.tencent.rtmp.ui.TXCloudVideoView; import com.yunbao.common.bean.CrashSaveBean; -import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.HttpClient; -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.MicStatusManager; import com.yunbao.common.utils.ScreenDimenUtil; -import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.activity.LiveActivity; import com.yunbao.live.activity.LiveAudienceActivity; -import com.yunbao.live.event.LiveAudienceEvent; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -156,7 +147,6 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { mLoading = findViewById(R.id.loading); mLoading2 = findViewById(R.id.loading2); mCover = (ImageView) findViewById(R.id.cover); - ScreenDimenUtil util = ScreenDimenUtil.getInstance(); int mScreenWdith = util.getScreenWdith(); vHeight = mScreenWdith * 720 / 960; @@ -436,7 +426,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { } - public void setViewUP(int i) { + public static void setViewUP(int i) { if (mVideoView == null) return; Log.e("收", "整理" + i); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mVideoView.getLayoutParams(); @@ -542,18 +532,8 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { params.addRule(RelativeLayout.ALIGN_TOP); mVideoView.requestLayout(); } - if (detailsView != null) { - mVideoView.removeView(detailsView); - detailsView = null; - } } - public void removeDetailView(){ - if (detailsView != null) { - mVideoView.removeView(detailsView); - detailsView = null; - } - } @Override public ViewGroup getSmallContainer() { @@ -1040,131 +1020,4 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { } }); } - - private int mPkTimeCount = 0; - private Handler countdownHandler = new Handler(); - private View detailsView = null; - private FrameLayout timeTitle; - private TextView textTime; - private TextView textPkName1, textPkName2, textPkName3, textPkName4; - private TextView textGrade1, textGrade2, textGrade3, textGrade4; - private ImageView imageGrade1, imageGrade2, imageGrade3, imageGrade4; - private LinearLayout linearGrade1, linearGrade2, linearGrade3, linearGrade4; - - /** - * PK倒计时 - */ - public void upDataPkScore(JSONArray pkScores, int time) { - - if (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); - linearGrade2 = detailsView.findViewById(R.id.lin_pk2); - linearGrade3 = detailsView.findViewById(R.id.lin_pk3); - linearGrade4 = detailsView.findViewById(R.id.lin_pk4); - textPkName1 = detailsView.findViewById(R.id.text_pk_name1); - textPkName2 = detailsView.findViewById(R.id.text_pk_name2); - textPkName3 = detailsView.findViewById(R.id.text_pk_name3); - textPkName4 = detailsView.findViewById(R.id.text_pk_name4); - textGrade1 = detailsView.findViewById(R.id.text_grade1); - textGrade2 = detailsView.findViewById(R.id.text_grade2); - textGrade3 = detailsView.findViewById(R.id.text_grade3); - textGrade4 = detailsView.findViewById(R.id.text_grade4); - imageGrade1 = detailsView.findViewById(R.id.image_grade1); - 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); - linearGrade2.setVisibility(View.GONE); - linearGrade3.setVisibility(View.GONE); - linearGrade4.setVisibility(View.GONE); - mVideoView.addView(detailsView); - - } - - for (int i = 0; i < pkScores.size(); i++) { - JSONObject score = pkScores.getJSONObject(i); - String userNiceName = score.getString("user_nicename"); - long userScore = score.getLong("score"); - int resScore = R.mipmap.icon_livepk_no1; - if (userScore == 0 && !score.containsKey("paiming")) { - resScore = R.mipmap.icon_livepk_no1; - } else { - if (score.containsKey("paiming")) { - int ranking = score.getIntValue("paiming"); - switch (ranking) { - case 1: - resScore = R.mipmap.icon_livepk_no1; - break; - case 2: - resScore = R.mipmap.icon_livepk_no2; - break; - case 3: - resScore = R.mipmap.icon_livepk_no3; - break; - case 4: - resScore = R.mipmap.icon_livepk_no4; - break; - } - } - } - if (i == 0) { - linearGrade1.setVisibility(View.VISIBLE); - textPkName1.setText(userNiceName); - ImgLoader.display(mContext, resScore, imageGrade1); - textGrade1.setText(String.valueOf(userScore)); - } else if (i == 1) { - linearGrade2.setVisibility(View.VISIBLE); - textPkName2.setText(userNiceName); - ImgLoader.display(mContext, resScore, imageGrade2); - textGrade2.setText(String.valueOf(userScore)); - } else if (i == 2) { - linearGrade4.setVisibility(View.VISIBLE); - textPkName4.setText(userNiceName); - ImgLoader.display(mContext, resScore, imageGrade4); - textGrade4.setText(String.valueOf(userScore)); - } else if (i == 3) { - linearGrade3.setVisibility(View.VISIBLE); - textPkName3.setText(userNiceName); - ImgLoader.display(mContext, resScore, imageGrade3); - textGrade3.setText(String.valueOf(userScore)); - - } - } - - if (time > 0) { - mPkTimeCount = time; - timeTitle.setVisibility(View.VISIBLE); - countdownHandler.postAtTime(countdownRunnable, getNextSecondTime()); - } - - } - - private Runnable countdownRunnable = new Runnable() { - @Override - public void run() { - mPkTimeCount--; - if (mPkTimeCount > 0) {// - String s1 = StringUtil.getDurationText(mPkTimeCount * 1000); - textTime.setText(String.format(mContext.getString(R.string.pk_time), s1)); - countdownHandler.postAtTime(countdownRunnable, getNextSecondTime()); - } else { - timeTitle.setVisibility(View.GONE); - countdownHandler.removeCallbacks(countdownRunnable); - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.PK_TIME_COUNT)); - } - } - }; - - /** - * 获取下一秒钟的时间 - */ - private long getNextSecondTime() { - long now = SystemClock.uptimeMillis(); - return now + (1000 - now % 1000); - } - } 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 2dc0ba934..e069bf58a 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java @@ -37,7 +37,6 @@ import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.HttpClient; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.manager.IMRTCManager; -import com.yunbao.common.manager.RandomPkManager; import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.L; @@ -92,13 +91,11 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX public TencentTRTCBeautyManager tencentTRTCBeautyManager; public static Context contexts; public static TextView btn_close; - public LinearLayout dr_pk_view; + public static LinearLayout dr_pk_view; public static RCRTCRoom rtcRoom; public static RCRTCLiveInfo rcrtcLiveInfo; private ViewGroup liveActivityContainer; - public FrameLayout timeTitle; - public TextView textTime; public LivePushRyViewHolder(Context context, ViewGroup parentView) { super(context, parentView); @@ -364,19 +361,14 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX public void init() { super.init(); mPreView = (FrameLayout) findViewById(R.id.camera_preview); - camera = (LinearLayout) findViewById(R.id.camera); mPreView1 = (FrameLayout) findViewById(R.id.camera_preview1); - cameraPreview3 = (FrameLayout) findViewById(R.id.camera_preview3); dr1_preview = (FrameLayout) findViewById(R.id.dr1_preview); dr2_preview = (FrameLayout) findViewById(R.id.dr2_preview); dr3_preview = (FrameLayout) findViewById(R.id.dr3_preview); dr4_preview = (FrameLayout) findViewById(R.id.dr4_preview); leave = (ImageView) findViewById(R.id.leave); dr_pk_view = (LinearLayout) findViewById(R.id.dr_pk_view); - timeTitle = (FrameLayout) findViewById(R.id.time_title); - textTime = (TextView) findViewById(R.id.text_time); dr_pk_view.setVisibility(View.GONE); - cameraPreview3.setVisibility(View.GONE); btn_close = (TextView) findViewById(R.id.btn_close); mMainHandler = new Handler(Looper.getMainLooper()); btn_close.setOnClickListener(new View.OnClickListener() { @@ -416,7 +408,6 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX mPreView1.setVisibility(View.GONE); inputStreamList.clear(); inputStreamList1.clear(); - changeToBig(); } }); } @@ -622,28 +613,19 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX params.width = mPreView.getWidth() / 2; params.height = DpUtil.dp2px(250); params.topMargin = DpUtil.dp2px(130); - camera.setLayoutParams(params); + mPreView.setLayoutParams(params); } } @Override public void changeToBig() { - if (camera != null) { - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) camera.getLayoutParams(); + if (mPreView != null) { + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) mPreView.getLayoutParams(); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = ViewGroup.LayoutParams.MATCH_PARENT; params.topMargin = 0; - camera.setLayoutParams(params); + mPreView.setLayoutParams(params); } - if (mPreView1.getVisibility()==View.VISIBLE){ - mPreView1.removeAllViews(); - mPreView1.setVisibility(View.GONE); - inputStreamList.clear(); - inputStreamList1.clear(); - } - } - public void closeButtonGone(){ - btn_close.setVisibility(View.GONE); } @Override diff --git a/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java index 72777ff11..bff0273c6 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java @@ -4,7 +4,9 @@ import static com.yunbao.live.activity.LiveActivity.mLiveUid; import static com.yunbao.live.activity.LiveRyAnchorActivity.PKing; import static com.yunbao.live.activity.LiveRyAnchorActivity.pk_nub; import static com.yunbao.live.event.LiveAudienceEvent.LiveAudienceType.START_MESSAGE; +import static com.yunbao.live.event.LiveAudienceEvent.LiveAudienceType.WISH_LIST; import static com.yunbao.live.event.LiveAudienceEvent.LiveAudienceType.WISH_LIST_UPDATE; +import static com.yunbao.live.presenter.LiveRyLinkMicPkPresenter.leaveDRRoom; import android.content.Context; import android.graphics.drawable.Drawable; @@ -141,8 +143,7 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { .execute(new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { - Bus.get().post(new LiveAudienceEvent() - .setType(LiveAudienceEvent.LiveAudienceType.LEAVE_DR_ROOM)); + leaveDRRoom(); PKing = false; } 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 cf1016722..57f611b6d 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -22,7 +22,6 @@ import androidx.drawerlayout.widget.DrawerLayout; import androidx.viewpager.widget.PagerAdapter; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.GsonUtils; import com.lzf.easyfloat.EasyFloat; @@ -130,7 +129,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe //侧滑布局 // private DrawerLayout drawerLayout; //直播间拆分布局 - private LivePlayRyViewHolder mLivePlayViewHolder; + private LiveRoomPlayViewHolder mLivePlayViewHolder; //头部布局 public LiveRoomViewHolder mLiveRoomViewHolder; //底部布局 @@ -296,7 +295,6 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mask.setVisibility(View.VISIBLE); mLivePlayViewHolder.setLiveBean(mLiveBean); - mLivePlayViewHolder.removeDetailView(); mLivePlayViewHolder.setCover(mLiveBean.getAvatar()); mLivePlayViewHolder.play(mLiveBean.getPull()); mLivePlayViewHolder.setOnMicCallback(new LiveRoomPlayViewHolder.OnMicCallback() { @@ -487,7 +485,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe if (data.getEnterRoomInfo().getIsconnection() != null && data.getEnterRoomInfo().getIsconnection().equals("1")) { - mLivePlayViewHolder.setViewUP(1); + LivePlayRyViewHolder.setViewUP(1); } if (mLiveRoomViewHolder != null) { @@ -495,7 +493,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } if (pkInfo.getIntValue("ifpk") == 1 && pkInfo.getString("end_pk_time").equals("0")) {//pk开始了 - mLivePlayViewHolder.setViewUP(2); + LivePlayRyViewHolder.setViewUP(2); //pk排名数据 LivePKUserListBean livePKUserListBean = JSON.parseObject(pkInfo.getString("pk_top_users"), LivePKUserListBean.class); @@ -509,7 +507,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mLiveRoomViewHolder.pkHandler = true; mLiveRoomViewHolder.initPkRank(null); } - mLivePlayViewHolder.setViewUP(3); + LivePlayRyViewHolder.setViewUP(3); //pk排名数据 LivePKUserListBean livePKUserListBean = JSON.parseObject(pkInfo.getString("pk_top_users"), LivePKUserListBean.class); @@ -524,8 +522,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe if (mLiveRoomViewHolder != null) { mLiveRoomViewHolder.initPkRank(null); } - mLivePlayViewHolder.setViewUP(4); - upDataPkScore(pkInfo.getJSONArray("userlist"), pkInfo.getIntValue("drpk_time")); + LivePlayRyViewHolder.setViewUP(4); + + mLiveRoomViewHolder.UpPkBar(pkInfo.getJSONArray("userlist"), mLiveBean.getUid(), pkInfo.getIntValue("drpk_time")); } //守护相关 mLiveGuardInfo = new LiveGuardInfo(); @@ -1736,31 +1735,6 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mViewPager.setCanScroll(enableScroll); } - /** - * 用户端多人Pk - * - * @param pkScores - * @param time - */ - public void upDataPkScore(JSONArray pkScores, int time) { - if (mLivePlayViewHolder != null) { - String liveId = mLiveBean.getUid(); - JSONObject liveModel = null; - //调整数据 - int index = 0; - for (int i = 0; i < pkScores.size(); i++) { - JSONObject score = pkScores.getJSONObject(i); - if (TextUtils.equals(score.getString("id"), liveId)) { - liveModel = score; - index = i; - } - } - pkScores.remove(index); - pkScores.add(0, liveModel); - mLivePlayViewHolder.upDataPkScore(pkScores, time); - - } - } public void endDRGif() { if (mLiveRoomViewHolder != null) { diff --git a/live/src/main/res/drawable/background_pk_time.xml b/live/src/main/res/drawable/background_pk_time.xml deleted file mode 100644 index b76d2f6c9..000000000 --- a/live/src/main/res/drawable/background_pk_time.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/live/src/main/res/layout/view_live_pk_details.xml b/live/src/main/res/layout/view_live_pk_details.xml deleted file mode 100644 index 3b856255d..000000000 --- a/live/src/main/res/layout/view_live_pk_details.xml +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/live/src/main/res/layout/view_live_push_ry.xml b/live/src/main/res/layout/view_live_push_ry.xml index a90add632..dd8c03d43 100644 --- a/live/src/main/res/layout/view_live_push_ry.xml +++ b/live/src/main/res/layout/view_live_push_ry.xml @@ -1,49 +1,33 @@ - - + android:layout_height="match_parent" + > - - - - - - - - + android:layout_height="match_parent"/> + android:visibility="gone"/> - + android:orientation="vertical"> + android:layout_height="match_parent" + android:background="@mipmap/live_icon_vacancy"/> + android:layout_height="match_parent" + android:background="@mipmap/live_icon_vacancy"/> @@ -75,23 +59,24 @@ + android:background="@mipmap/live_icon_vacancy"/> + android:background="@mipmap/live_icon_vacancy"/> + + + + + android:orientation="vertical"> + android:layout_height="match_parent" + /> - + android:layout_marginTop="130dp" + > + android:layout_marginBottom="20dp" + /> + android:layout_marginBottom="20dp" + /> @@ -142,27 +133,27 @@ android:id="@+id/small_container" android:layout_width="0dp" android:layout_height="0dp" - android:layout_alignParentRight="true" android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" android:layout_marginBottom="120dp" - app:mfl3_ratio="0.25" /> + app:mfl3_ratio="0.25" + /> - + android:textColor="@color/color_white" + android:visibility="gone" + android:background="@drawable/background_dedede"/> - - - - - - + android:visibility="gone" + android:scaleType="centerCrop"/> diff --git a/live/src/main/res/layout/view_ry_live_anchor.xml b/live/src/main/res/layout/view_ry_live_anchor.xml index e7db29e4a..796bfaad5 100644 --- a/live/src/main/res/layout/view_ry_live_anchor.xml +++ b/live/src/main/res/layout/view_ry_live_anchor.xml @@ -36,7 +36,7 @@ @@ -44,7 +44,7 @@ android:id="@+id/btn_dr_pk_nub" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/number_of_remaining_times" + android:text="剩餘次數:0" android:textColor="#ffe1e1e1" android:textSize="8sp" /> @@ -67,7 +67,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" - android:text="@string/invite_anchor" + android:text="邀請 + 主播" android:textColor="#ffffffff" android:textSize="10sp" /> @@ -86,7 +87,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" - android:text="@string/end_pk" + android:text="結束 +PK" android:textColor="#ffb1b1b1" android:textSize="10sp" /> diff --git a/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no1.png b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no1.png deleted file mode 100644 index 03984ca3bf9528a4d339d6e90028e557089762e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1420 zcmV;71#|j|P)Px)MoC0LR9Hu)muqZPMHI*XXYSqY?$)i9QeH&_sijyEs}zaB7%4_RC;`oy7{CV< zu)IXf-P=Zk~XaK1^B_RTph+?UgK6dv$W{$acOS_MD z_imhTn>~-;{O8;`X9yk^bEClT@jD@m5|CaAjUEA0Ily-S#DMAmX&1qK0?^x_cXpt3 zTQ3nfS9r>0z}MG}gOu|iXf{C8!8~$EAA$tqDnQ4;>L7Z>0jhkzJ6nz+0r-5QAH_Wj zpzsa|V*nK7f=&A0*?BL(m!QyqyEh*ta+Jzkg97l?hS3oEdJvWZ@a2(sFw;(@xJd+K zJ88tWo^*o@0KWQ0HHbDdFzbINPIk8l*aeo2H2#A>lmAEo;A^j!v7)_T%mk3LKJo;V zM7$F{##*WxP@+ExUtbnd@z4$;T97TUvJA**CyZ_z(uljJny&zXk}&kb;_OV!juLAz zVawLrHQ@pxgI*7$Q9ivx3#t4x^(D2vk8Us)WDn8HiA+YihM$fNX0*sH`ft zD1=V3F^?*mk2uCIfO%;8uIalCdrr@v#U@s)H674$=bvY5jKQjk7Q=tVH3s z>f8YCj?pS);0fmwB|f>#r^10I5WkfYH7S(Ua}%~!gTg6m0Ll;uF2K3G0D2jy*D5~T zO?+|H7{xdM!ox%1+tE&#T!ldSO8^ms9)t+qm8yUPFm|dZ1)K|kfZal>da};1n5hZ+ zju``*riEc;BYyJ=jDP-c_0vbqN70OpE{uDGjsj;^cm{Bt2$uz9Em`O4Hxki$Pv`(- z>=q0;5#gG~G=O@9%DgGimrH6yv&cSMe+b~&o&n-rFl0Hx)6)P>*CRA$iq|l%9YefH z_UYx<0F3qODIEa5FB9OG*AN<=9{?CT$!=X11vuyxz&5&Iq5|RRO({nZZ(WYUQ4e?x zldvOdA?wtVIM{oqlMaBW%mg^K6rqv%0^oD9PQ2O`NXCL{c4ngTyBMQFtR zUc)46fcayxj=ypoK#f;V+vtX+I{+I}kKklo-T(lL8n`*j+U<0Z`=*aZ(FJR?}V?EA>Iap5aCN*sYS%cB0ElH`cRVhGi2hHu!!oM+6^z^%h|2>Rk6 zZK!dQt|%K%25a}UB?gl75x>>0ZD+>f!7{|-G598}f?hPv1AvL>$wmYN1nN7oG$)G` zFZb7evddMoU&bSmQqvL#fy}lnr3uTnz`5TUZaBZtq4@@mC>el3+Y35m1HG`{OaX9y zn1`OPW}&r!F+S&3^EO~665slST1Zds|Es?kQ|R_ZG_x3UnXm=GJ$dKI>cB^(R1Jl5 zT23XKWxfmcMKr5KPE}HT1ct{UFH2^IV!~e5Xc3HX`_pZcC| zY0dUZ_OvVB7YWA0)<{7#l^IVl(=-s56H^$@EhNwh#;-*5qayi@68u|e*r;}zw!_L* aNB;o>5HDn)%1c-P0000Px)^+`lQR9Hu)muqZP*A<1oeeOIw;~7k9Ok%sTO@soni;TgfrE-cwh!h1u6D0a4 zjVkq_D&Y@Rlu|01hPJ8tQYs{>NL5j)Ds3tnqE@7lNvK0Zz-gdB+CW<)-hqP0kFm!y zp7EV~b~R(L2ix;VbN-&a*Isv@wb!{vsAN5>rfJjV8ta%^V`VAES!vP50ucmN7!;L% zBYMmSm&VjL7;CLdBBJHsrCdP6>1$0s%Oi-a1HBixvuKWphjJ0&sG!}+;nDpAT}uqA#GtXXXt^02w?rj9_ zId!EmOWRfx>?pvCeB%msbPu|#u$aA8z zAxvU|E}!A?rYOr7gs7?VO;s7sTFwt=c;)g4`w}kcn$lWTkzvv7BWG7MyqyEd6Igt# zzrz?_0~%)X_u^?b_+dw9J+-0f!ZYJ?M7H%_qub{o!Qyc@^G-^&tohHVH6MqZ4kdH9`c*t?>o6qNhw zq*Z;QuXEu`vgAapL9)7EkQH;Co}I|D&RDj8Y5`%N;ki>WddEEm6qY;i?Y3Il>q1kh zUpaV@BjFInUrL-gQOQe^)FhQH80Vo8_Uf$9FsGsJ`ij zubqpttuIL+8ms#hcrSuJ@*?Me{eqR`qo0N)|{y;u`aCkRjwv@}Up2v7P$@f~LJlql` zc(c&ukql418{>wAaeQShc)E-#R?J5E%p0Q{5&dJS>o@o1ZYIf3mqmD>rDh7``q%{D zcyEBdv>(5J(wuT@(wWQs?a2-Cv`g+i5MSho`3taUt}a;X5%H32SrXy%ch?m95O05& z;K0=}yn@7>$(|WC4A?5f6h97uKbw$!Tvi{|kc=jFiO5&c*|bMeah~spa(~l2d<8C; zpZl!E@0i<2Wv%ke-}>o^2l1IAMgpbQ2(`ZhxnpJ*2FC{Iez2aV zGWYzgyjuj`8VcfbifKYFSnJ$>bbaVjozPRa^LG(XKbr)d`h_QLEI)kC{ zji5hQrTL@bmyQDZS*;sv|Fml$g=1Ekg+C}A8K*z@>p=uF%Sqj`fdvFC;w!?C}2id*go{|8FXR>mXrQPltd002ovPDHLkV1f+i9RL6T diff --git a/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.png b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.png deleted file mode 100644 index b9a148addde5dbf3d5d8a4f169e32703e50d7757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1746 zcmV;@1}*uCP)Px*j7da6R9Hu)mwSv<^%ciI=g!>Oncdl!%Pj5+2o_r?X()oUG+=qGshUD4N+qSV z39U31f!z`zHWED#CQe?TJ|(}v=Us#K~=uz>ie)(0y!uZgP{4;OFqD6YxxKx<)4d4oeGmth7Kkpf}_e;z`LmXY9eLsTOIjR zcP<-)5{POvP}Ut=i0Y#PwLnomvRC%S^IYk1(a#M->Q{s}9ukoOqcI?XP3`qHj_F%t zpbr3Mp@s*-DRM!T$3tmr*V5{3vA&po1fIO`y9q9`5!IRhkKtajLRwXyF&&LIL^iiv zyVr}rx^oRTnIg}jI#rQDk0)(A#H=)apFuceB7;M-wgh!hc3GNS8NDVFStHRiON#ww zc!$8kzMiWp$)rsx<|El{QmU1VEFMnGj?)}Jg%L~jABTH0gOI-{top2asSMpGHA$a?LlLt9Tf$2(5&X7}q9S2~!v zNQhi;9Og!ApM2Z1lOgcv>17iP!}m8-yln5a;)xWsUE_FQ+%G9HiwE`2RhRe99;NZ? zM!qq;Drfo#ay(@Ef9RE{Ecw?Gv${I`IEJo5=@-AAM2cIi@3466FDUkhNZ3hE_q5QN z>Y_4G&aiMT0bd|%aP>Qn;of+jU{Q|Z5qi|o2cH7tWTx19O4_c66*N>=orrw{Yzww(;ED$7?yyMwXhgR=U|!Xx&Yn{*QdAkh^!p1@=V4xw#UIos3Y~OT!s5rJ{Rw!QdeS`{Yx{uBpFU05ka7&8 zUq9Uc&wmeU`B%D{9 zqI+cF(G^F4+w-FP0BqYPl}b`W6`Q8~A=`|SPKx@&Yv?LUzKBQk&5uFd-Q8+kwV1-@LlprE*OWM0#XIU@Y!%3K(T zh|fy#-Qrt0-2D*}EW+nEGuiJEvwAw&Ie9&`r8i~?Y&fxxW6Z0b&Z05*bGrKsFEsDtWc&gRx~|E zn_(f6BN0XR+fHhc%zw8bWI65@&|jmMi~6!URfnNYfTyOerNk`B{F`)=w8hVncGCom z07FY6n8ww?v;X7)wl+VHFK`Jz;1ZIe^2o$#m0L1hRe4sbEqO>4Z3rnY13Z)u{_O(RB*MkJ&Sm*2cL>#1ivTiGkw zw6~W<%rvi}{l~J`>2Pf-i~!|+lOn^1FZ1e9lIjw3Y&z@&uHnzN<{aVQUe!@m|H4nB zsa^!UA9oyBHbGQg0v&n1eW3unck_GGFzufooU!ff6@0Io@BF>hZSU*a=Ly9t#6v6<37k)bX!wn!V|CU(BF){|PTI ziv-}0C_e$b`I`3~*+;p9(2CEzr8maC@DEV({Od3tIR~WrEjn3 z=aKh7MNa^)`BYy#JbUZ$T(9JUyqdDNA!LV!Z07*qoM6N<$g7*w)GXMYp diff --git a/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.png b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.png deleted file mode 100644 index a9879e4f93c8a803fba4baccc29e518abb0fff90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmVPx)ut`KgR9Hu?mwRkebri?H=l0%P+V0V{-Ed$~3^AyGkRg(o49Et8K%77zJ`fW@ zLJ&!qfCMvR5m^XK0iBTH25NxGLL@^E7+*8BrudM(vx5s!h{rwm;tH>(|KZXT84bZ zAJ*zK7vu#9U^Dk*rqJ?5%^*!vroe)6V2lLN-@rx(<1!I`WEKZCQuk%f$@Lq>=n;Uc zs#JfYdnS|gE`R|5tY)ws?}-@90e~(@phYQjMxUbCe@P@MKwa6vY=z_^iKMvE5Z>=Mb?76=B_H;0DR>&IV7kA%=!N_aHoV&gc(~Es9wjs(KkE$O#ryF>BvBZ zqLmEf0x+$QJ_70hDl}bP+&L2+L2i`ov)iKbW+Ix|8^__syNJrsggTeV0;@FzlHB92 zMF?VX+Wd*7?KKexU}kFEcwiZrR{+sj!LiW;^Av@C&bp7Z4f`8X3IQkoPYHY_%G<*NhEM+7?lw^Qobv zDp!)|I5V5BK5)AhX)ojz znS~YzLVq9)+4H7%sQOO)0{f6bunufZc`O4>Umblo<_^DUqKnEaJ@P?5nx+2>=}ve*^_S~>?YsJ@(_cPpLEP~3ai})l8k2>G4G{@6=ih*Jjo~{Aq~=qq3}$*S0d3y zKO(-SxVoe&@eUwGjz8;xmUw4`E?tLq;tW)aF@Rv+PQLdx{>;Er$pEyF26@bIxF?S4 z-JZ5-1^&2%=Bh(bO)f+Xd_Z@KN=u2bpeFz&Z^VBB@b9dK%EADgK_nGWUD5giiD^%= zvf&oo)^$CXZY^0mSWzrT z01Qrs8-oz-Be#n})a8VG_SA$TY}~R3{rV}8V&mE1MnO#9OR&x&F8s*Wpz;PVzuwnN zNZ6SU_nc{o02RAox2c9TLqM1r%UzD<4ROZ$rE8uAcn5&qjj%TN;S5)Ifbwr(x3zYK zf&3#0OJ2r@ORltDNW4{Qec<9I2%c?b+4;Se=0xiA`H*8LBY@!f%LsjU1Xi`@y(drv z#Pi%G?`&-yhHc_sSezM_#X*2gkL7k7oh;C8c5vIkp-2QuC-`*yz-|T}?n@?mrORMQI4WfEO4eHMt#+FPR-Q4#QlI@;0U)gdaqH~8PeM$m zgoH(z>%C_>yX=;%7{r}{PYfenF9##%KExLws)VdB^Q>ESy{o?-ckAZD<(Z0*R|8@y z0B7tD)i)T{0lEz#N;O^GFkrJcn9SbLDSN$YLv1u4;Au>p59UXDF)MT?I!8b?1G_w* z7N0fxO77LFt`!#AQd+G2bqfy@LVAY4BbYFR1X7ux6W{~$pG4A60ysn#{h~*^TSuEW cN6fPJFAFVAekm6>FaQ7m07*qoM6N<$f=@TWcK`qY