diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1de4e7c45..210add6e1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -78,7 +78,6 @@
-
diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml
index 800292db6..b2b9d3a5c 100644
--- a/common/src/main/res/values/strings.xml
+++ b/common/src/main/res/values/strings.xml
@@ -965,4 +965,10 @@
更多設置
查看更多
礼物正在获取中...
+ 開始PK
+ 剩餘次數:%s
+ 是否確認進行多人PK(確認後扣除1點次數)當日剩餘次數: %s
+ 邀請\n主播
+ 結束\nPK
+ 時間 %s
diff --git a/config.gradle b/config.gradle
index 0993db55d..e4e02bc72 100644
--- a/config.gradle
+++ b/config.gradle
@@ -4,8 +4,8 @@ ext {
buildToolsVersion: "28.0.3",
minSdkVersion : 21,
targetSdkVersion : 31,
- versionCode : 310,
- versionName : "6.4.5"
+ versionCode : 311,
+ versionName : "6.4.6"
]
manifestPlaceholders = [
//正式
@@ -27,6 +27,6 @@ ext {
// true表示谷歌支付 false
isGooglePlay : false,
//是否上报异常日志
- isUploadLog : true
+ isUploadLog : false
]
}
\ No newline at end of file
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 f9b61a9a4..590052024 100644
--- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java
+++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java
@@ -4,8 +4,6 @@ import static com.blankj.utilcode.util.SnackbarUtils.dismiss;
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.live.views.AbsRyLivePushViewHolder.mPreView;
-import static com.yunbao.live.views.LivePushRyViewHolder.dr_pk_view;
import static com.yunbao.live.views.LivePushRyViewHolder.rtcRoom;
import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_dr_pk_nub;
import static com.yunbao.live.views.LiveRyAnchorViewHolder.btn_start_dr_pk;
@@ -22,7 +20,6 @@ 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;
@@ -41,6 +38,8 @@ import com.yunbao.common.Constants;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.LiveBean;
+import com.yunbao.common.bean.LiveUserGiftBean;
+import com.yunbao.common.bean.MicUserBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.NotCancelableDialog;
import com.yunbao.common.event.LoginInvalidEvent;
@@ -48,16 +47,14 @@ import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
-import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
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.ScreenDimenUtil;
+import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
@@ -66,10 +63,7 @@ import com.yunbao.live.R;
import com.yunbao.live.bean.LiveGuardInfo;
import com.yunbao.live.bean.LiveKsyConfigBean;
import com.yunbao.live.bean.LiveReceiveGiftBean;
-import com.yunbao.common.bean.LiveUserGiftBean;
-import com.yunbao.common.bean.MicUserBean;
import com.yunbao.live.dialog.LiveLinkMicListDialogFragment;
-import com.yunbao.live.dialog.LiveMicAnchorDialogFragment;
import com.yunbao.live.dialog.LiveNewFunctionDialogFragment;
import com.yunbao.live.dialog.LiveNewWishListDialogFragment;
import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience;
@@ -86,7 +80,6 @@ import com.yunbao.live.presenter.LiveRyLinkMicPkPresenter;
import com.yunbao.live.socket.SocketRyChatUtil;
import com.yunbao.live.socket.SocketRyClient;
import com.yunbao.live.socket.SocketSendBean;
-import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.live.views.LiveEndViewHolder;
import com.yunbao.live.views.LiveMusicViewHolder;
import com.yunbao.live.views.LiveNewReadyRyViewHolder;
@@ -98,9 +91,7 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
-import java.util.ArrayList;
import java.util.List;
-import java.util.TreeMap;
import cn.rongcloud.rtc.api.RCRTCEngine;
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
@@ -260,8 +251,9 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
if (code == 0) {
JSONObject obj = JSONObject.parseObject(info[0]);
pk_nub = Integer.valueOf(obj.getString("pk_num_day"));
- btn_dr_pk_nub.setText("剩餘次數:" + pk_nub);
- DialogUitl.showSimpleDialog(mContext, "是否確認進行多人PK(確認後扣除1點次數)當日剩餘次數:" + pk_nub,
+
+ btn_dr_pk_nub.setText(String.format(getString(R.string.number_of_remaining_times), String.valueOf(pk_nub)));
+ DialogUitl.showSimpleDialog(mContext, String.format(getString(R.string.confirmed_to_proceed), String.valueOf(pk_nub)),
false,
new DialogUitl.SimpleCallback2() {
@Override
@@ -275,7 +267,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)
@@ -295,18 +287,7 @@ 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
@@ -651,7 +632,6 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
if (mLiveRyLinkMicPkPresenter != null) {
mLiveRyLinkMicPkPresenter.setSelfStream(mStream);
}
-// }
//开始推流
if (mLivePushViewHolder != null) {
@@ -1352,9 +1332,9 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
}
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.updataMicList(list);
- Log.i("多人连麦", "onOpenDrawer: "+list.size());
+ Log.i("多人连麦", "onOpenDrawer: " + list.size());
for (LinkMicUserBean userBean : list) {
- Log.i("多人连麦", "u list: "+userBean.toString());
+ Log.i("多人连麦", "u list: " + userBean.toString());
}
}
break;
@@ -1365,12 +1345,23 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
}
break;
case LINK_MIC_CLOSE:
- if(mLiveRoomViewHolder!=null){
+ if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.updataCleanMic();
}
break;
+ case LEAVE_DR_ROOM:
+ if (mLiveRyLinkMicPkPresenter != null) {
+ mLiveRyLinkMicPkPresenter.leaveDRRoom();
+ }
+ break;
+ case LEAVE_PK_SCORE:
+ if (mLiveRyLinkMicPkPresenter != null) {
+ mLiveRyLinkMicPkPresenter.upDataPkScore(event.getPkScores(), event.getUid(), event.getTime());
+ }
+ break;
}
}
+
/**
* 检查指定直播间连麦人数
*
diff --git a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java
index 9f4fdec6a..ebc8a7017 100644
--- a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java
+++ b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java
@@ -1,5 +1,6 @@
package com.yunbao.live.event;
+import com.alibaba.fastjson.JSONArray;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.AiAutomaticSpeechModel;
import com.yunbao.common.bean.AnchorRecommendItemModel;
@@ -23,6 +24,36 @@ public class LiveAudienceEvent extends BaseModel {
private AiAutomaticSpeechModel aiAutomaticSpeechModel;//机器人消息
private boolean voicePress = false;
private boolean isActivity = false;//是否展示趣味活动和增值权益
+ private JSONArray pkScores;
+ private String uid;
+ private int time;
+
+ public JSONArray getPkScores() {
+ return pkScores;
+ }
+
+ public LiveAudienceEvent setPkScores(JSONArray pkScores) {
+ this.pkScores = pkScores;
+ return this;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public LiveAudienceEvent setUid(String uid) {
+ this.uid = uid;
+ return this;
+ }
+
+ public int getTime() {
+ return time;
+ }
+
+ public LiveAudienceEvent setTime(int time) {
+ this.time = time;
+ return this;
+ }
public boolean isActivity() {
return isActivity;
@@ -196,7 +227,8 @@ public class LiveAudienceEvent extends BaseModel {
LINK_MIC_CLOSE(43, "主播关闭连麦房"),
SOCKET_LIVE_DRPK_SET_PK_VIEW(44, "setPkview"),
SOCKET_LIVE_DRPK_SET_PK_END_VIEW(45, "setPkEndview"),
- ;
+ LEAVE_DR_ROOM(44, "结束多人PK"),
+ LEAVE_PK_SCORE(45, "PK排名");
private int type;
private String name;
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 753250175..4a6b49f57 100644
--- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java
+++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java
@@ -1,5 +1,14 @@
package com.yunbao.live.presenter;
+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.LivePushRyViewHolder.contexts;
+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;
+
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -16,16 +25,23 @@ import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.tencent.trtc.TRTCCloud;
import com.yunbao.common.CommonAppConfig;
+import com.yunbao.common.bean.LiveInfoModel;
import com.yunbao.common.bean.UserBean;
+import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
+import com.yunbao.common.http.live.LiveNetManager;
+import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ScreenDimenUtil;
@@ -38,12 +54,14 @@ 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;
import com.yunbao.live.views.LiveLinkMicPkViewHolder;
import com.yunbao.live.views.LivePushRyViewHolder;
+import com.yunbao.live.views.LiveRoomPlayViewHolder;
+
+import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.Arrays;
@@ -69,21 +87,6 @@ import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.message.TextMessage;
-import static cn.rongcloud.rtc.core.RendererCommon.ScalingType.SCALE_ASPECT_FILL;
-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.leave;
-import static com.yunbao.live.views.AbsRyLivePushViewHolder.mPreView;
-import static com.yunbao.live.views.AbsRyLivePushViewHolder.mPreView1;
-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 org.greenrobot.eventbus.EventBus;
-
//import cn.rongcloud.rtc.jni.video.RCRect;
/**
@@ -129,7 +132,14 @@ 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;
public static List inputStreamList = new ArrayList<>();
public static List inputStreamList1 = new ArrayList<>();
@@ -179,7 +189,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
}
};
- public LiveRyLinkMicPkPresenter(Context context, ILiveLinkMicViewHolder linkMicViewHolder, boolean isAnchor, View root) {
+ public LiveRyLinkMicPkPresenter(Context context, LiveRoomPlayViewHolder linkMicViewHolder, boolean isAnchor, View root) {
mContext = context;
mIsAnchor = isAnchor;
mRoot = root;
@@ -218,6 +228,46 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
}
+ 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_TIME:
+ changePkTime();
+ break;
+ }
+ }
+ };
+
+ }
+
public void setSocketRyClient(SocketRyClient SocketRyClient) {
mSocketRyClient = SocketRyClient;
}
@@ -310,8 +360,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.mPreView.setLayoutParams(params);
- LivePushRyViewHolder.mPreView1.setLayoutParams(params);
+ livePushRyViewHolder.mPreView.setLayoutParams(params);
+ livePushRyViewHolder.mPreView1.setLayoutParams(params);
}
Log.i("tts", s1);
@@ -463,35 +513,36 @@ 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.dr1_preview.removeAllViews();
+ livePushRyViewHolder.mPreView1.removeAllViews();
remoteView.setScalingType(SCALE_ASPECT_FILL);
- LivePushRyViewHolder.dr1_preview.addView(remoteView);
+ livePushRyViewHolder.mPreView1.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);
@@ -615,9 +666,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);
@@ -695,9 +746,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.mPreView.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)
@@ -739,9 +790,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.mPreView.setLayoutParams(params);
- LivePushRyViewHolder.mPreView1.setLayoutParams(params);
- 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();
@@ -768,9 +819,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);
@@ -1070,7 +1121,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
/**
* 退出多人PK
*/
- public static void leaveDRRoom() {
+ public void leaveDRRoom() {
Log.e("ry", "退出多人OKKK" + inputStreamList.size());
isDRPK = 0;
for (int i = 0; i < inputStreamList.size(); i++) {
@@ -1139,25 +1190,31 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
});
}
}
- 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();
- }
- });
+
+ leaveHandler.post(leaveRunnable);
}
+ 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);
+
+ }
+ };
+
/**
* 显示申请多人PK的弹窗
*/
@@ -1215,7 +1272,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onSuccess(int code, String msg, String[] info) {
- Log.i("多人PK","code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info));
+ Log.i("多人PK", "code = " + code + ", msg = " + msg + ", info = " + Arrays.deepToString(info));
final SocketSendBean msg1 = new SocketSendBean()
.param("_method_", SOCKET_LIVE_DRPK)
@@ -1246,17 +1303,12 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
Log.e("ry", "发送失敗");
}
});
- if(info.length==0){
+ 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") + "列表");
@@ -1417,15 +1469,28 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
//把多人PK的View显示出来
- if (dr_pk_view.getVisibility() == View.GONE) {
+ 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);
- dr_pk_view.setLayoutParams(params);
- mPreView.setLayoutParams(params);
- dr_pk_view.setVisibility(View.VISIBLE);
+ 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);
}
Log.e("ry", "多人接受成功" + mApplyUid);
@@ -1438,37 +1503,99 @@ 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(contexts);
+ RCRTCVideoView remoteView = new RCRTCVideoView(mContext);
((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);
+ 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) {
+
+ }
+ });
+
} else if (inputStreamList.size() == 1) {
+ livePushRyViewHolder.dr3_preview.setVisibility(View.VISIBLE);
//如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示
- RCRTCVideoView remoteView = new RCRTCVideoView(contexts);
+ RCRTCVideoView remoteView = new RCRTCVideoView(mContext);
((RCRTCVideoInputStream) stream).setVideoView(remoteView);
//todo 本demo只演示添加1个远端用户的视图
- LivePushRyViewHolder.dr2_preview.removeAllViews();
+ livePushRyViewHolder.dr3_preview.removeAllViews();
remoteView.setScalingType(SCALE_ASPECT_FILL);
- LivePushRyViewHolder.dr2_preview.addView(remoteView);
+ 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) {
+
+ }
+ });
} else if (inputStreamList.size() == 2) {
+ livePushRyViewHolder.cameraPreview3.setVisibility(View.VISIBLE);
//如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示
- RCRTCVideoView remoteView = new RCRTCVideoView(contexts);
+ RCRTCVideoView remoteView = new RCRTCVideoView(mContext);
((RCRTCVideoInputStream) stream).setVideoView(remoteView);
//todo 本demo只演示添加1个远端用户的视图
- LivePushRyViewHolder.dr3_preview.removeAllViews();
+ livePushRyViewHolder.cameraPreview3.removeAllViews();
remoteView.setScalingType(SCALE_ASPECT_FILL);
- 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);
+ 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) {
+
+ }
+ });
}
inputStreamList.add(stream);
}
@@ -1534,6 +1661,31 @@ 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++) {
//遍历远端用户发布的资源列表
@@ -1541,37 +1693,96 @@ 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);
+ 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) {
+
+ }
+ });
} 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.dr2_preview.removeAllViews();
+ livePushRyViewHolder.dr3_preview.removeAllViews();
remoteView.setScalingType(SCALE_ASPECT_FILL);
- LivePushRyViewHolder.dr2_preview.addView(remoteView);
+ 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) {
+
+ }
+ });
} else if (inputStreamList.size() == 2) {
+ livePushRyViewHolder.cameraPreview3.setVisibility(View.VISIBLE);
//如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示
RCRTCVideoView remoteView = new RCRTCVideoView(contexts);
((RCRTCVideoInputStream) stream).setVideoView(remoteView);
//todo 本demo只演示添加1个远端用户的视图
- LivePushRyViewHolder.dr3_preview.removeAllViews();
+ livePushRyViewHolder.cameraPreview3.removeAllViews();
remoteView.setScalingType(SCALE_ASPECT_FILL);
- 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);
+ 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) {
+
+ }
+ });
}
inputStreamList.add(stream);
@@ -1679,8 +1890,8 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
videoLayout2.setVideoStream(streams.get(i)); // RCRTCStream#MediaType 必须是Video
videoLayout2.setX(480); //X 坐标
videoLayout2.setY(0); //Y 坐标
- videoLayout2.setWidth(240); // 视频窗口的宽
- videoLayout2.setHeight(360); // 视频窗口的高
+ videoLayout2.setWidth(480); // 视频窗口的宽
+ videoLayout2.setHeight(720); // 视频窗口的高
Log.e("ttt1112", "0" + "VS" + streams.get(i).getUserId());
} else if (i == 1) {
//user3的视频流
@@ -2061,4 +2272,196 @@ 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);
+ }
+ 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;
+ }
+ }
+ }
+
+ }
+ }
+
+ }
+
+
}
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 f1b4f4e0c..2a5eb60ee 100644
--- a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java
+++ b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java
@@ -3,8 +3,6 @@ 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;
@@ -19,7 +17,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.GsonUtils;
-import com.google.gson.reflect.TypeToken;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
@@ -278,15 +275,20 @@ 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) {
+// UserBean u = new UserBean();
+//// u.setUserNiceName(map.getString("uname"));
+// u.setId(map.getString("uid"));
+// mListener.onLinkDRMicPkApplyOk(u);
+ } else if (action3 == 6) {//开始Pk
if (LiveRoomViewHolder.mHandler != null) {
LiveRoomViewHolder.mHandler.removeCallbacksAndMessages(null);
}
- LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, map.getIntValue("drpk_time"));
+// 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")));
if (livePushRyViewHolder == null) {
// LiveAudienceActivity.getmLivePlayViewHolder().setPkview();
Bus.get().post(new LiveAudienceEvent()
@@ -298,11 +300,10 @@ public class SocketRyClient {
// 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;
- LivePushRyViewHolder.mPreView.setLayoutParams(params);
- leaveDRRoom();
+ Bus.get().post(new LiveAudienceEvent()
+ .setType(LiveAudienceEvent.LiveAudienceType.LEAVE_DR_ROOM));
isDRPK = 0;
} else {
// LiveAudienceActivity.getmLivePlayViewHolder().setPkEndview();
@@ -912,7 +913,12 @@ public class SocketRyClient {
mListener.onSendGift(receiveGiftBean);
}
if (map.getIntValue("drpk_status") == 1) {
- LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, 0);
+ 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);
}
}
@@ -1058,16 +1064,16 @@ public class SocketRyClient {
break;
case 5://PK时候断开连麦的回调
if (rtcRoom != null) {
- if (LivePushRyViewHolder.mPreView1 != null) {
- LivePushRyViewHolder.mPreView1.removeAllViews();
- LivePushRyViewHolder.mPreView1.setVisibility(View.GONE);
- isDRPK = 0;
- leaveDRRoom();
- }
+// 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);
+// 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 b0e368932..2b1c7e4f2 100644
--- a/live/src/main/java/com/yunbao/live/views/AbsRyLivePushViewHolder.java
+++ b/live/src/main/java/com/yunbao/live/views/AbsRyLivePushViewHolder.java
@@ -8,22 +8,16 @@ import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
-import android.widget.RelativeLayout;
+import android.widget.LinearLayout;
import android.widget.TextView;
-
import com.yunbao.common.CommonAppConfig;
-import com.yunbao.common.bean.ConfigBean;
-import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.L;
-import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.AbsViewHolder;
import com.yunbao.live.R;
import com.yunbao.live.interfaces.ILivePushViewHolder;
import com.yunbao.live.interfaces.LivePushListener;
-import cn.qqtheme.framework.util.ScreenUtils;
-
public class AbsRyLivePushViewHolder extends AbsViewHolder implements ILivePushViewHolder {
@@ -38,9 +32,10 @@ public class AbsRyLivePushViewHolder extends AbsViewHolder implements ILivePushV
protected ViewGroup mLeftContainer;
protected ViewGroup mRightContainer;
protected ViewGroup mPkContainer;
- public static FrameLayout mPreView,mPreView1,dr1_preview,dr2_preview,dr3_preview,dr4_preview;
- public static ImageView leave;
+ public FrameLayout mPreView, mPreView1, cameraPreview3, dr1_preview, dr2_preview, dr3_preview, dr4_preview;
+ public ImageView leave;
protected boolean mOpenCamera;//是否选择了相机
+ public LinearLayout camera;
//倒计时
protected TextView mCountDownText;
@@ -67,7 +62,7 @@ public class AbsRyLivePushViewHolder extends AbsViewHolder implements ILivePushV
mRightContainer = (ViewGroup) findViewById(R.id.right_container);
mPkContainer = (ViewGroup) findViewById(R.id.pk_container);
mCameraFront = true;
- String mBeautySdkType= CommonAppConfig.getInstance().getBeautySdkType();
+ String mBeautySdkType = CommonAppConfig.getInstance().getBeautySdkType();
}
@@ -208,7 +203,7 @@ public class AbsRyLivePushViewHolder extends AbsViewHolder implements ILivePushV
}
- public boolean isFlashOpen(){
+ public boolean isFlashOpen() {
return mFlashOpen;
}
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 e25f4cca7..79bbe9d18 100644
--- a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java
+++ b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java
@@ -5,7 +5,6 @@ import static com.yunbao.common.Constants.SOCKET_LIVE_DRPK;
import static com.yunbao.live.activity.LiveActivity.mLiveRyLinkMicPkPresenter;
import static com.yunbao.live.presenter.LiveRyLinkMicPkPresenter.inputStreamList;
import static com.yunbao.live.presenter.LiveRyLinkMicPkPresenter.inputStreamList1;
-import static com.yunbao.live.presenter.LiveRyLinkMicPkPresenter.leaveDRRoom;
import static cn.rongcloud.rtc.base.RCRTCLiveRole.BROADCASTER;
import android.app.Dialog;
@@ -89,11 +88,12 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
public TencentTRTCBeautyManager tencentTRTCBeautyManager;
public static Context contexts;
public static TextView btn_close;
- public static LinearLayout dr_pk_view;
+ public LinearLayout dr_pk_view;
public static RCRTCRoom rtcRoom;
public static RCRTCLiveInfo rcrtcLiveInfo;
private ViewGroup liveActivityContainer;
+ public FrameLayout timeTitle;
public LivePushRyViewHolder(Context context, ViewGroup parentView) {
super(context, parentView);
@@ -315,7 +315,9 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
@Override
public void onFinishOtherRoom(String roomId, String userId) {
super.onFinishOtherRoom(roomId, userId);
- leaveDRRoom();
+ if (mLiveRyLinkMicPkPresenter != null) {
+ mLiveRyLinkMicPkPresenter.leaveDRRoom();
+ }
}
/**
@@ -332,14 +334,18 @@ 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);
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() {
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 bff0273c6..72777ff11 100644
--- a/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java
+++ b/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java
@@ -4,9 +4,7 @@ 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;
@@ -143,7 +141,8 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder {
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
- leaveDRRoom();
+ Bus.get().post(new LiveAudienceEvent()
+ .setType(LiveAudienceEvent.LiveAudienceType.LEAVE_DR_ROOM));
PKing = false;
}
diff --git a/live/src/main/res/drawable/background_pk_time.xml b/live/src/main/res/drawable/background_pk_time.xml
new file mode 100644
index 000000000..b76d2f6c9
--- /dev/null
+++ b/live/src/main/res/drawable/background_pk_time.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 000000000..7ba5e065e
--- /dev/null
+++ b/live/src/main/res/layout/view_live_pk_details.xml
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 dd8c03d43..a430d9b42 100644
--- a/live/src/main/res/layout/view_live_push_ry.xml
+++ b/live/src/main/res/layout/view_live_push_ry.xml
@@ -1,33 +1,49 @@
-
+ android:layout_height="match_parent">
+
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+ android:visibility="gone" />
-
+ android:orientation="vertical"
+ android:visibility="gone">
+ android:layout_weight="1"
+ android:background="@mipmap/live_icon_vacancy" />
+ android:layout_weight="1"
+ android:background="@mipmap/live_icon_vacancy" />
@@ -59,24 +75,23 @@
+ android:background="@mipmap/live_icon_vacancy" />
+ android:background="@mipmap/live_icon_vacancy" />
-
-
-
-
+ android:orientation="vertical"
+ android:visibility="gone">
+ android:layout_height="match_parent" />
+
+ android:layout_marginTop="130dp">
+ android:layout_marginBottom="20dp" />
+ android:layout_marginBottom="20dp" />
@@ -133,27 +142,27 @@
android:id="@+id/small_container"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
+ android:layout_alignParentBottom="true"
android:layout_marginBottom="120dp"
- app:mfl3_ratio="0.25"
- />
+ app:mfl3_ratio="0.25" />
-
+ android:textSize="13sp"
+ android:visibility="gone" />
+ android:visibility="gone" />
+
+
+
+
+
+
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 796bfaad5..e7db29e4a 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="剩餘次數:0"
+ android:text="@string/number_of_remaining_times"
android:textColor="#ffe1e1e1"
android:textSize="8sp" />
@@ -67,8 +67,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
- android:text="邀請
- 主播"
+ android:text="@string/invite_anchor"
android:textColor="#ffffffff"
android:textSize="10sp" />
@@ -87,8 +86,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
- android:text="結束
-PK"
+ android:text="@string/end_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
new file mode 100644
index 000000000..03984ca3b
Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no1.png differ
diff --git a/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no2.png b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no2.png
new file mode 100644
index 000000000..3a0becb0f
Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no2.png differ
diff --git a/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.png b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.png
new file mode 100644
index 000000000..b9a148add
Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no3.png differ
diff --git a/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.png b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.png
new file mode 100644
index 000000000..a9879e4f9
Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/icon_livepk_no4.png differ
diff --git a/live/src/main/res/mipmap-xxxhdpi/live_pk_time_bg.png b/live/src/main/res/mipmap-xxxhdpi/live_pk_time_bg.png
new file mode 100644
index 000000000..b07adf791
Binary files /dev/null and b/live/src/main/res/mipmap-xxxhdpi/live_pk_time_bg.png differ