From 5dd5b2e0eabfcc1b875d14cc267bdf3d0d01c4ae Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 6 Feb 2023 16:28:39 +0800 Subject: [PATCH 01/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=9B=B4=E6=92=AD?= =?UTF-8?q?=E9=97=B4PK=E6=97=B6=E9=80=9A=E8=BF=87=E5=8F=B3=E4=B8=8A?= =?UTF-8?q?=E8=A7=92=E8=A7=92=E6=A0=87-=E5=AF=B9=E6=96=B9=E9=A6=96?= =?UTF-8?q?=E9=A1=B5(web)-=E8=B7=B3=E8=BD=AC=E7=9B=B4=E6=92=AD=E9=97=B4?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E6=AE=8B=E7=95=99pk=E6=9D=A1=E8=A7=82?= =?UTF-8?q?=E4=BC=97=E5=A4=B4=E5=83=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/main/activity/MyWebViewActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java index 8c8297b59..ce9cc40c5 100644 --- a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java @@ -264,7 +264,7 @@ public class MyWebViewActivity extends AbsActivity { MicStatusManager.getInstance().showDownMicDialog(mContext); return; } - EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal))); + EventBus.getDefault().post(new LiveRoomChangeEvent(liveBean, liveType, Integer.parseInt(liveTypeVal)).setLiveEnd(true)); } else { RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveTypeVal), Integer.parseInt(liveSdk)); } From 894e264fb35f55ebe0f24b46ffdca18b2d19cb27 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Mon, 6 Feb 2023 18:12:16 +0800 Subject: [PATCH 02/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E4=BA=BAPK?= =?UTF-8?q?=E7=BB=93=E6=9D=9FPK=E9=80=81=E7=A4=BC=E4=BB=8D=E7=84=B6?= =?UTF-8?q?=E5=B1=95=E7=A4=BAPK=E7=BB=93=E6=9D=9F=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 4 ++-- .../yunbao/live/presenter/LiveRyLinkMicPkPresenter.java | 1 + .../java/com/yunbao/live/views/LivePushRyViewHolder.java | 8 ++++++-- .../java/com/yunbao/live/views/LiveRoomViewHolder.java | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/config.gradle b/config.gradle index 66e026ffe..5628c118a 100644 --- a/config.gradle +++ b/config.gradle @@ -10,9 +10,9 @@ ext { manifestPlaceholders = [ //正式 - serverHost : "https://napi.yaoulive.com", +// serverHost : "https://napi.yaoulive.com", // -// serverHost : "https://ceshi.yaoulive.com", + serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", 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 efa31c2e4..ef1b75824 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -2457,6 +2457,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { * 更新Pk分数 */ public void upDataPkScore(JSONArray pkScores, String uid, int time) { + if (time <= 0) return; String userID1 = (String) imageGrade1.getTag(); String userID2 = (String) imageGrade2.getTag(); String userID4 = (String) imageGrade4.getTag(); 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 488a16729..ed02b4b79 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java @@ -460,6 +460,9 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX inputStreamList.clear(); inputStreamList1.clear(); changeToBig(); + //清理PK上面对方的头像 + EventBus.getDefault().post(new AnchorInfoEvent(true, "", "", "")); + closeButtonGone(); } }); } @@ -691,14 +694,15 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX params.topMargin = 0; camera.setLayoutParams(params); } - if (mPreView1.getVisibility()==View.VISIBLE){ + if (mPreView1.getVisibility() == View.VISIBLE) { mPreView1.removeAllViews(); mPreView1.setVisibility(View.GONE); inputStreamList.clear(); inputStreamList1.clear(); } } - public void closeButtonGone(){ + + public void closeButtonGone() { btn_close.setVisibility(View.GONE); } diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 2c630a09f..d144f8573 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -3937,7 +3937,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis customFullServiceNotify(event.getCustomFullServiceNotifyEvent()); break; case PK_TIME_COUNT: - endDRGif(); +// endDRGif(); break; case UP_PK_TWO: pkUid = (String) event.getObject(); From cd0067d77bd87e3c5c71105a5ff1c338a9c14786 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Tue, 7 Feb 2023 14:19:10 +0800 Subject: [PATCH 03/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E4=BA=BAPK?= =?UTF-8?q?=E7=BB=93=E6=9D=9FPK=E9=80=81=E7=A4=BC=E4=BB=8D=E7=84=B6?= =?UTF-8?q?=E5=B1=95=E7=A4=BAPK=E7=BB=93=E6=9D=9F=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/common/http/PDLiveApi.java | 5 +++++ .../com/yunbao/common/http/live/LiveNetManager.java | 12 ++++++++++++ .../yunbao/live/activity/LiveRyAnchorActivity.java | 2 ++ .../live/presenter/LiveRyLinkMicPkPresenter.java | 10 +++++++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index 50fd3d6a0..dee1a5e78 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -537,4 +537,9 @@ public interface PDLiveApi { Observable> getLiveStetUpStatus( @Query("liveuid") String liveUid ); + + @GET("/api/public/?service=live.jieshuDRPK") + Observable> jieshuDRPK( + @Query("roomid") String roomId, + @Query("uid") String uid); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index fee7cbbc5..a1aa6c25d 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -1063,6 +1063,18 @@ public class LiveNetManager { }).isDisposed(); } + public void jieshuDRPK(String uID) { + API.get().pdLiveApi(mContext) + .jieshuDRPK(uID, uID) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(baseModelResponseModel -> { + + }, throwable -> { + + }).isDisposed(); + } + /** * 直播间取消网络请求 */ 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 06dd88fe3..a673b8630 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -163,6 +163,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl public static int backIndex = 0;//0=未判断,1=已判断 private FaceManager manager; private ImageView leave_img; + private final RandomPkManager.OnRandomPkTimer onRandomPkTimer = new RandomPkManager.OnRandomPkTimer() { @Override public void onTimer(String time) { @@ -422,6 +423,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl public void onSuccess(Message message) { isDRPK = 1; btn_start_dr_pk_view.setVisibility(View.VISIBLE); + mLiveRyLinkMicPkPresenter.setDRInitiator(true); } @Override 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 ef1b75824..26205c2d8 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -155,6 +155,12 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { public static List inputStreamList = new ArrayList<>(); public static List inputStreamList1 = new ArrayList<>(); + private boolean DRInitiator = false;//是否是duorenPK发起人 + + public LiveRyLinkMicPkPresenter setDRInitiator(boolean DRInitiator) { + this.DRInitiator = DRInitiator; + return this; + } private IRCRTCOtherRoomEventsListener otherRoomEventsListener = new IRCRTCOtherRoomEventsListener() { @@ -2457,7 +2463,6 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { * 更新Pk分数 */ public void upDataPkScore(JSONArray pkScores, String uid, int time) { - if (time <= 0) return; String userID1 = (String) imageGrade1.getTag(); String userID2 = (String) imageGrade2.getTag(); String userID4 = (String) imageGrade4.getTag(); @@ -2669,6 +2674,9 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { Bus.get().post(new LiveAudienceEvent() .setType(LiveAudienceEvent.LiveAudienceType.PK_TIME_COUNT)); // endDRGif(); + if (DRInitiator) { + LiveNetManager.get(mContext).jieshuDRPK("" + IMLoginManager.get(mContext).getUserInfo().getId()); + } } } From a808cd13c0cd7fb42de59509aa3ece63738c2b97 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Tue, 7 Feb 2023 17:04:51 +0800 Subject: [PATCH 04/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=9B=B4=E6=92=AD?= =?UTF-8?q?=E9=97=B4PK=E6=97=B6=E6=BB=91=E5=8A=A8=E5=88=B0=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E4=B8=AAPK=E7=9B=B4=E6=92=AD=E9=97=B4=EF=BC=8C?= =?UTF-8?q?=E4=BC=9A=E6=AE=8B=E7=95=99pk=E6=9D=A1=E8=A7=82=E4=BC=97?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/live/views/PortraitLiveManager.java | 3 +++ 1 file changed, 3 insertions(+) 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 9e47a6884..6f1dbd1c9 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -256,6 +256,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe public synchronized void onAdd(LiveBean data, int liveType, int liveTypeVal, int liveSdk) { isEnterRoom = false; openParametersModel = new OpenParametersModel(); + if(mLiveRoomViewHolder!=null){ + mLiveRoomViewHolder.UpPkTwo(); + } mContext.runOnUiThread(new Runnable() { @Override From 859f54b1e1f1dc4e66ff95027f4aa54a4169f08c Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Thu, 9 Feb 2023 14:14:02 +0800 Subject: [PATCH 05/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 4 ++-- .../src/main/java/com/yunbao/main/activity/EntryActivity.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.gradle b/config.gradle index 5628c118a..66e026ffe 100644 --- a/config.gradle +++ b/config.gradle @@ -10,9 +10,9 @@ ext { manifestPlaceholders = [ //正式 -// serverHost : "https://napi.yaoulive.com", + serverHost : "https://napi.yaoulive.com", // - serverHost : "https://ceshi.yaoulive.com", +// serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", diff --git a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java index 74fbdbd92..ed4935535 100644 --- a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java @@ -611,7 +611,7 @@ public class EntryActivity extends AppCompatActivity { JSONObject obj = JSON.parseObject(info[0]); String uid = obj.getString("id"); String token = obj.getString("token"); - if (obj.getString("need_bind").equals("0")) { + if (obj.containsKey("need_bind") && obj.getString("need_bind").equals("0")) { mFirstLogin = obj.getIntValue("first_login") == 1; mShowInvite = obj.getIntValue("isagent") == 1; CommonAppConfig.getInstance().setLoginInfo(uid, token, true); @@ -687,7 +687,7 @@ public class EntryActivity extends AppCompatActivity { new LiveRoomCheckLivePresenter(activity, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() { @Override public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) { - RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal)); + RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal)); } @Override From 3549c25ccac6e6570899d753d5e1b88e31dc3f7b Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Thu, 9 Feb 2023 14:15:05 +0800 Subject: [PATCH 06/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E9=97=AE=E9=A2=98=20Fatal=20Excepti?= =?UTF-8?q?on:=20java.lang.RuntimeException=20java.lang.NullPointerExcepti?= =?UTF-8?q?on:=20Attempt=20to=20invoke=20virtual=20method=20'boolean=20jav?= =?UTF-8?q?a.lang.String.equals(java.lang.Object)'=20on=20a=20null=20objec?= =?UTF-8?q?t=20reference?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/src/main/java/com/yunbao/main/activity/EntryActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java index ed4935535..a14825137 100644 --- a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java @@ -608,6 +608,7 @@ public class EntryActivity extends AppCompatActivity { private void onLoginSuccess(int code, String msg, String[] info) { Log.e("他", code + "code" + info.toString()); if (code == 0 && info.length > 0) { + JSONObject obj = JSON.parseObject(info[0]); String uid = obj.getString("id"); String token = obj.getString("token"); From d3268e57bc8c5af652b676602f5a8f9d6628423d Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Thu, 9 Feb 2023 16:21:19 +0800 Subject: [PATCH 07/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=9B=B4=E6=92=AD=E9=97=B4=E6=BB=91=E5=8A=A8=E4=BB=A5?= =?UTF-8?q?=E5=90=8E=E4=B8=BA=E4=BD=A0=E6=8E=A8=E8=8D=90=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=9B=B4=E6=92=AD=E9=97=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/activity/LiveAudienceActivity.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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 aa96bdef8..cb93c9155 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -690,7 +690,7 @@ public class LiveAudienceActivity extends LiveActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void onLiveRoomChangeEvent(LiveRoomChangeEvent e) { - if (verticalViewPager.ismEnableScroll()) { + LiveBean liveBean = e.getLiveBean(); if (e.isLiveEnd()) { manager.removeLiveEnd(); @@ -709,9 +709,7 @@ public class LiveAudienceActivity extends LiveActivity { mAncherIcon = liveBean.getAvatar(); manager.onAdd(liveBean, mLiveType, mLiveTypeVal, mLiveSDK); } - } else { - verticalViewPager.setEnableScroll(IMLoginManager.get(mContext).isSlide()); - } + } @Override From 3d5ac05d36b21a88082a162b95aa986bfb311c7a Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Mon, 13 Feb 2023 15:09:54 +0800 Subject: [PATCH 08/63] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E9=9D=9E=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E6=8F=90=E7=A4=BA=E5=BD=B1=E5=93=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BD=93=E9=AA=8C=E6=84=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/activity/LiveAudienceActivity.java | 2 -- 1 file changed, 2 deletions(-) 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 cb93c9155..629ddb15f 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -1244,13 +1244,11 @@ public class LiveAudienceActivity extends LiveActivity { } break; case SOCKET_LIVE_DRPK_SET_PK_VIEW: - ToastUtil.show("setPkView"); if (manager.getmLivePlayViewHolder() != null) { manager.getmLivePlayViewHolder().setPkview(); } break; case SOCKET_LIVE_DRPK_SET_PK_END_VIEW: - ToastUtil.show("setPkEndview"); if (manager.getmLivePlayViewHolder() != null) { manager.getmLivePlayViewHolder().setPkEndview(); } From 11cf971514cfd6c23c4a6d23ade4f3c48354ab78 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 13 Feb 2023 16:25:04 +0800 Subject: [PATCH 09/63] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8D=95=E8=8E=B7=E5=90=8E=E6=9D=80=E6=AD=BB?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/shayu/phonelive/AppContext.java | 8 ++++---- .../main/java/com/shayu/phonelive/NeverCrashUtils.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/shayu/phonelive/AppContext.java b/app/src/main/java/com/shayu/phonelive/AppContext.java index 4cc9e4c31..af69b040a 100644 --- a/app/src/main/java/com/shayu/phonelive/AppContext.java +++ b/app/src/main/java/com/shayu/phonelive/AppContext.java @@ -278,17 +278,17 @@ public class AppContext extends CommonAppContext { Log.e("ApplicationError", "主线程异常");//此处log只是展示,当debug为true时,主类内部log会打印异常信息 e.printStackTrace(); //闪退后finish所有Activity并且杀死进程 - for (WeakReference activity : activities) { + /* for (WeakReference activity : activities) { if (activity != null && activity.get() != null) { activity.get().finish(); } } - /* Process.killProcess(Process.myPid()); - System.exit(0);*/ + *//* Process.killProcess(Process.myPid()); + System.exit(0);*//* setFirebaseCrashData(); new Handler(Looper.getMainLooper()).postDelayed(() -> { throw new RuntimeException(e); - }, 100); + }, 100);*/ }) .setUncaughtCrashHandler((t, e) -> { Log.e("ApplicationError", "子线程异常");//此处log只是展示,当debug为true时,主类内部log会打印异常信息 diff --git a/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java b/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java index f99f3a492..676852fd0 100644 --- a/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java +++ b/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java @@ -101,10 +101,10 @@ public class NeverCrashUtils { Log.e(TAG, "未捕获的主线程异常行为", e); } e.printStackTrace(); - Toast.makeText(application, "发生闪退", Toast.LENGTH_SHORT).show(); + Toast.makeText(application, "发生闪退:"+e.getMessage(), Toast.LENGTH_SHORT).show(); FileUtil.saveStringToFile(new File(application.getDir("files", Context.MODE_PRIVATE).getAbsolutePath()), throwableToString(e), "error.log"); getMainCrashHandler().mainException(Looper.getMainLooper().getThread(), e); - return; + // return; } } }); From d36ece4c54d08d2e8438d2819bc37dfabaf27d0b Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 13 Feb 2023 16:28:11 +0800 Subject: [PATCH 10/63] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=97=AA=E9=80=80=E5=85=A5=E5=8F=A3=EF=BC=9A=E5=9C=A8=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E9=95=BF=E6=8C=89=E6=8E=92=E8=A1=8C=E6=A6=9C=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E8=A7=A6=E5=8F=91=E7=A9=BA=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/main/views/MainHomeViewHolder.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index 2ff16a0d5..a2a259a94 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -1,6 +1,7 @@ package com.yunbao.main.views; import android.content.Context; +import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; @@ -37,6 +38,12 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { super.init(); img_trophy = (ImageView) findViewById(R.id.img_trophy); + img_trophy.setOnLongClickListener(v -> { + if(true){ + throw new NullPointerException("test"); + } + return false; + }); ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy); From 4d86317ec8c2f786f2dd3f674568b98a96f0e9b8 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Tue, 14 Feb 2023 14:42:58 +0800 Subject: [PATCH 11/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E9=97=AA=E9=80=80=E6=97=B6=E4=BC=9A=E5=9B=9E=E5=88=B0=E7=A4=BE?= =?UTF-8?q?=E5=8C=BA=E4=B8=94=E8=BF=9E=E4=B8=8D=E4=B8=8AIM=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/common/custom/TabButtonGroup.java | 3 +++ .../main/java/com/yunbao/main/activity/MainActivity.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/common/src/main/java/com/yunbao/common/custom/TabButtonGroup.java b/common/src/main/java/com/yunbao/common/custom/TabButtonGroup.java index 6f8d14c52..d2e0c7682 100644 --- a/common/src/main/java/com/yunbao/common/custom/TabButtonGroup.java +++ b/common/src/main/java/com/yunbao/common/custom/TabButtonGroup.java @@ -75,6 +75,9 @@ public class TabButtonGroup extends LinearLayout implements View.OnClickListener } } + public int getCurPosition() { + return mCurPosition; + } @Override public void onClick(View v) { diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 584273828..987edb8f7 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -312,6 +312,12 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene @Override public void onPageSelected(int position) { + if(mTabButtonGroup.getCurPosition()!=position){ + System.err.println("重连IM"); + RongcloudIMManager.connectIM(mContext.getApplication()); + position = 0; + mTabButtonGroup.setCurPosition(0); + } if (position != 0) { loadPageData(position, true); } From e97a4e607c54e8c56ed857e3f90c197970af06ff Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Tue, 14 Feb 2023 15:04:58 +0800 Subject: [PATCH 12/63] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=9A=E4=BA=BAPK?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E7=82=B9=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/activity/LiveAudienceActivity.java | 40 +++-- .../live/views/LivePlayRyViewHolder.java | 161 ++++------------- .../yunbao/live/views/LiveRoomViewHolder.java | 164 +++++++++++++++++- .../live/views/PortraitLiveManager.java | 21 ++- .../main/res/layout/view_live_pk_details.xml | 4 + 5 files changed, 238 insertions(+), 152 deletions(-) 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 629ddb15f..5ff617e85 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -691,24 +691,24 @@ public class LiveAudienceActivity extends LiveActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void onLiveRoomChangeEvent(LiveRoomChangeEvent e) { - LiveBean liveBean = e.getLiveBean(); - if (e.isLiveEnd()) { - manager.removeLiveEnd(); - } - if (liveBean != null) { - LiveHttpUtil.cancel(LiveHttpConsts.CHECK_LIVE); - LiveHttpUtil.cancel(LiveHttpConsts.ENTER_ROOM); - LiveHttpUtil.cancel(LiveHttpConsts.ROOM_CHARGE); - manager.onRemove(false); - mLiveType = e.getLiveType(); - mLiveTypeVal = e.getLiveTypeVal(); - mLiveBean = liveBean; - mLiveUid = liveBean.getUid(); - mStream = liveBean.getStream(); - mAncherName = liveBean.getUserNiceName(); - mAncherIcon = liveBean.getAvatar(); - manager.onAdd(liveBean, mLiveType, mLiveTypeVal, mLiveSDK); - } + LiveBean liveBean = e.getLiveBean(); + if (e.isLiveEnd()) { + manager.removeLiveEnd(); + } + if (liveBean != null) { + LiveHttpUtil.cancel(LiveHttpConsts.CHECK_LIVE); + LiveHttpUtil.cancel(LiveHttpConsts.ENTER_ROOM); + LiveHttpUtil.cancel(LiveHttpConsts.ROOM_CHARGE); + manager.onRemove(false); + mLiveType = e.getLiveType(); + mLiveTypeVal = e.getLiveTypeVal(); + mLiveBean = liveBean; + mLiveUid = liveBean.getUid(); + mStream = liveBean.getStream(); + mAncherName = liveBean.getUserNiceName(); + mAncherIcon = liveBean.getAvatar(); + manager.onAdd(liveBean, mLiveType, mLiveTypeVal, mLiveSDK); + } } @@ -1251,6 +1251,10 @@ public class LiveAudienceActivity extends LiveActivity { case SOCKET_LIVE_DRPK_SET_PK_END_VIEW: if (manager.getmLivePlayViewHolder() != null) { manager.getmLivePlayViewHolder().setPkEndview(); + + } + if (manager != null) { + manager.removeDetailView(); } break; 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 e4dedb4c0..aef91f2bc 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java @@ -1,13 +1,13 @@ package com.yunbao.live.views; import static com.lzy.okgo.utils.HttpUtils.runOnUiThread; -import static cn.rongcloud.rtc.core.RendererCommon.ScalingType.SCALE_ASPECT_FILL; import android.Manifest; import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.media.AudioManager; +import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.SystemClock; @@ -35,6 +35,7 @@ import com.lxj.xpopup.core.BasePopupView; import com.lxj.xpopup.interfaces.XPopupCallback; import com.lzf.easyfloat.EasyFloat; import com.lzy.okserver.OkDownload; +import com.yunbao.common.Constants; import com.yunbao.common.bean.EnterRoomNewModel; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.HttpCallback; @@ -53,6 +54,7 @@ import com.yunbao.common.views.LiveClarityCustomPopup; import com.yunbao.live.R; import com.yunbao.live.activity.LiveActivity; import com.yunbao.live.activity.LiveAudienceActivity; +import com.yunbao.live.dialog.LiveUserDialogFragment; import com.yunbao.live.event.LiveAudienceEvent; import com.yunbao.live.utils.LiveExoPlayerManager; @@ -89,7 +91,6 @@ import cn.rongcloud.rtc.base.RCRTCRemoteVideoFrame; import cn.rongcloud.rtc.base.RCRTCRoomType; import cn.rongcloud.rtc.base.RCRTCStreamType; import cn.rongcloud.rtc.base.RTCErrorCode; -import cn.rongcloud.rtc.center.stream.RCRTCAudioInputStreamImpl; import cn.rongcloud.rtc.core.RendererCommon; public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { @@ -393,7 +394,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { mVideoView.requestLayout(); RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams) ry_view.getLayoutParams(); - params1.height = ViewGroup.LayoutParams.WRAP_CONTENT; + params1.height = ViewGroup.LayoutParams.WRAP_CONTENT; params1.topMargin = mContext.getResources().getDimensionPixelOffset(R.dimen.live_top); params1.addRule(RelativeLayout.ALIGN_TOP); ry_view.setLayoutParams(params1); @@ -556,17 +557,17 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { params.addRule(RelativeLayout.ALIGN_TOP); mVideoView.requestLayout(); } - if (detailsView != null) { - mVideoView.removeView(detailsView); - detailsView = null; - } +// if (detailsView != null) { +// mVideoView.removeView(detailsView); +// detailsView = null; +// } } - public void removeDetailView(){ - if (detailsView != null) { - mVideoView.removeView(detailsView); - detailsView = null; - } + public void removeDetailView() { +// if (detailsView != null) { +// mVideoView.removeView(detailsView); +// detailsView = null; +// } } @Override @@ -1221,129 +1222,33 @@ 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) { + private int mPkTimeCount = 0; - 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); - } + public interface PlayViewLayoutInterface { + void playViewLayout(int width, int height); + } - 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; - } + private PlayViewLayoutInterface layoutInterface; + + public void setLayoutInterface(PlayViewLayoutInterface layoutInterface) { + mVideoView.post(new Runnable() { + @Override + public void run() { + int width = mVideoView.getMeasuredWidth(); + int height = mVideoView.getMeasuredHeight(); + if (layoutInterface != null) { + layoutInterface.playViewLayout(width, height); } } - 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/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index d144f8573..8c00cec5b 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -36,7 +36,6 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.SimpleItemAnimator; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -116,7 +115,6 @@ import com.yunbao.live.activity.LiveAudienceActivity; import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.activity.ZhuangBanActivity; import com.yunbao.live.adapter.LiveChatAdapter; -import com.yunbao.live.adapter.LiveChatRecyclerViewLayoutManager; import com.yunbao.live.adapter.LiveRoomFastMessageRecyclerViewAdapter; import com.yunbao.live.adapter.LiveUserAdapter; import com.yunbao.live.bean.DrPkbean; @@ -3904,10 +3902,11 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis mLiveChatAdapter.insertItem(bean); } } + /** * 幸运100%活动 */ - public void lucky100(MsgModel model){ + public void lucky100(MsgModel model) { if (mLiveChatAdapter != null) { LiveChatBean bean = new LiveChatBean(); bean.setType(LiveChatBean.LUCKY_100_CHECK); @@ -4009,4 +4008,163 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } }; + 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倒计时 + */ + private String userId2, userId3 = "", userId4; + + 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); + mRoot.addView(detailsView); + mRoot.post(new Runnable() { + @Override + public void run() { + int mScreenWdith = ScreenDimenUtil.getInstance().getScreenWdith(); + int vHeight = mScreenWdith * 720 / 960; + RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) detailsView.getLayoutParams(); + params.height = vHeight; + params.width = mScreenWdith; + params.topMargin = DpUtil.dp2px(105); + params.addRule(RelativeLayout.ALIGN_TOP); + detailsView.setLayoutParams(params); + } + }); + + + + } + + for (int i = 0; i < pkScores.size(); i++) { + JSONObject score = pkScores.getJSONObject(i); + String userNiceName = score.getString("user_nicename"); + long userScore = score.getLong("score"); + String userId = score.getString("id"); + 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)); + userId2 = userId; + } else if (i == 2) { + linearGrade4.setVisibility(View.VISIBLE); + textPkName4.setText(userNiceName); + ImgLoader.display(mContext, resScore, imageGrade4); + textGrade4.setText(String.valueOf(userScore)); + userId4 = userId; + } else if (i == 3) { + linearGrade3.setVisibility(View.VISIBLE); + textPkName3.setText(userNiceName); + ImgLoader.display(mContext, resScore, imageGrade3); + textGrade3.setText(String.valueOf(userScore)); + userId3 = userId; + } + } + + if (time > 0) { + mPkTimeCount = time; + timeTitle.setVisibility(View.VISIBLE); + countdownHandler.postAtTime(countdownRunnable, getNextSecondTime()); + } + textPkName2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showUserDialog(userId2); + } + }); + textPkName4.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showUserDialog(userId4); + } + }); + textPkName3.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showUserDialog(userId3); + } + }); + } + + 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)); + } + } + }; + public void removeDetailView() { + if (detailsView != null) { + mRoot.removeView(detailsView); + detailsView = null; + } + } + } 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 6f1dbd1c9..4402f42f3 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -256,7 +256,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe public synchronized void onAdd(LiveBean data, int liveType, int liveTypeVal, int liveSdk) { isEnterRoom = false; openParametersModel = new OpenParametersModel(); - if(mLiveRoomViewHolder!=null){ + if (mLiveRoomViewHolder != null) { mLiveRoomViewHolder.UpPkTwo(); } mContext.runOnUiThread(new Runnable() { @@ -581,6 +581,15 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe upDataPkScore(pkInfo.getJSONArray("userlist"), pkInfo.getIntValue("drpk_time")); } +// mLivePlayViewHolder.setLayoutInterface(new LivePlayRyViewHolder.PlayViewLayoutInterface() { +// @Override +// public void playViewLayout(int width, int height) { +// Log.e("播放器的宽高", "宽:" + width + " 高:" + height); +// ScreenDimenUtil util = ScreenDimenUtil.getInstance(); +// int mScreenWdith = util.getScreenWdith(); +// Log.e("播放器的宽高", "mScreenWdith:" + mScreenWdith + " mScreenheight :" + mScreenWdith * 720 / 960); +// } +// }); //守护相关 mLiveGuardInfo = new LiveGuardInfo(); int guardNum = Integer.parseInt(data.getEnterRoomInfo().getGuardNums()); @@ -1830,7 +1839,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe * @param time */ public void upDataPkScore(JSONArray pkScores, int time) { - if (mLivePlayViewHolder != null) { + if (mLiveRoomViewHolder != null) { String liveId = mLiveBean.getUid(); JSONObject liveModel = null; //调整数据 @@ -1844,7 +1853,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } pkScores.remove(index); pkScores.add(0, liveModel); - mLivePlayViewHolder.upDataPkScore(pkScores, time); + mLiveRoomViewHolder.upDataPkScore(pkScores, time); } } @@ -1855,4 +1864,10 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } } + public void removeDetailView() { + if (mLiveRoomViewHolder != null) { + mLiveRoomViewHolder.removeDetailView(); + } + } + } diff --git a/live/src/main/res/layout/view_live_pk_details.xml b/live/src/main/res/layout/view_live_pk_details.xml index 3b856255d..0cf81b157 100644 --- a/live/src/main/res/layout/view_live_pk_details.xml +++ b/live/src/main/res/layout/view_live_pk_details.xml @@ -50,6 +50,7 @@ android:maxLines="1" android:ellipsize="end" android:maxWidth="50dp" + android:clickable="true" android:paddingStart="6dp" android:paddingTop="4.33dp" android:paddingEnd="6dp" @@ -110,6 +111,7 @@ android:maxLines="1" android:paddingStart="6dp" android:paddingTop="4.33dp" + android:clickable="true" android:paddingEnd="6dp" android:paddingBottom="4.33dp" android:text="我方" @@ -134,6 +136,7 @@ android:background="@drawable/background_pk_time" android:maxLines="1" android:ellipsize="end" + android:clickable="true" android:maxWidth="50dp" android:paddingStart="6dp" android:paddingTop="4.33dp" @@ -193,6 +196,7 @@ android:maxLines="1" android:ellipsize="end" android:maxWidth="50dp" + android:clickable="true" android:paddingStart="6dp" android:paddingTop="4.33dp" android:paddingEnd="6dp" From f2cff3b93fa9070ed60881c9f7192a5b079f1ef1 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Wed, 15 Feb 2023 14:05:16 +0800 Subject: [PATCH 13/63] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=97=AA=E9=80=80?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/main/views/MainHomeViewHolder.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index a2a259a94..4cc0b3327 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -38,12 +38,6 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { super.init(); img_trophy = (ImageView) findViewById(R.id.img_trophy); - img_trophy.setOnLongClickListener(v -> { - if(true){ - throw new NullPointerException("test"); - } - return false; - }); ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy); From d86e16c9f59538610c65a569afee8cb0099a0c9a Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Wed, 15 Feb 2023 15:57:53 +0800 Subject: [PATCH 14/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E9=80=89=E6=8B=A9=E5=9B=BD=E5=AE=B6=E5=8C=BA?= =?UTF-8?q?=E5=8F=B7=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=9B=BD?= =?UTF-8?q?=E5=AE=B6=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/main/res/values-en/strings.xml | 1 + common/src/main/res/values/strings.xml | 1 + .../com/yunbao/main/activity/RegisterActivity.java | 11 ++++++++--- main/src/main/res/layout/activity_register.xml | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index 2bcde64f0..4b0d7b828 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -1002,4 +1002,5 @@ Limited ride And limited avatar frame There is no choice, the anchor is not turned on FHD live. There is no choice, the anchor is not turned on HD live. Sorry, this feature is on hold. + phone diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index f3b7113f3..bcfe413f2 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1022,4 +1022,5 @@ 無法選擇,該主播未開啟超高清直播。 無法選擇,該主播未開啟高清直播。 抱歉,該功能暫停使用中。 + 手機號 diff --git a/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java b/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java index 916ace264..a56ccfc9f 100644 --- a/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/RegisterActivity.java @@ -190,9 +190,12 @@ public class RegisterActivity extends AbsActivity { allCountries.addAll(Country.getAll(mContext, null)); String ct = Locale.getDefault().getCountry(); + ct = TextUtils.equals("CN", ct) ? "HK" : ct; for (int i = 0; i < allCountries.size(); i++) { if (allCountries.get(i).locale.equals(ct)) { - mTvCountryCode.setText("+" + allCountries.get(i).code); + String countryName = allCountries.get(i).name; + countryName = countryName.length() > 4 ? countryName.substring(0, 4) : countryName; + mTvCountryCode.setText("+" + allCountries.get(i).code + " " + countryName); mCountryCode = allCountries.get(i).code; return; } @@ -260,7 +263,9 @@ public class RegisterActivity extends AbsActivity { CountryPicker.newInstance(null, new OnPick() { @Override public void onPick(Country country) { - mTvCountryCode.setText("+" + country.code); + String countryName = country.name; + countryName = countryName.length() > 4 ? countryName.substring(0, 4) + "..." : countryName; + mTvCountryCode.setText(" +" + country.code + " " + countryName); mCountryCode = country.code; } }).show(getSupportFragmentManager(), "country"); @@ -506,7 +511,7 @@ public class RegisterActivity extends AbsActivity { new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() { @Override public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) { - RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal)); + RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal)); NoviceInstructorManager.get(mContext).setFrist(false); } diff --git a/main/src/main/res/layout/activity_register.xml b/main/src/main/res/layout/activity_register.xml index fa2fc5da6..a0db7a625 100644 --- a/main/src/main/res/layout/activity_register.xml +++ b/main/src/main/res/layout/activity_register.xml @@ -96,7 +96,7 @@ android:layout_height="match_parent" android:layout_marginLeft="15dp" android:background="@null" - android:hint="@string/reg_input_phone" + android:hint="@string/phone_number" android:inputType="number" android:maxLength="11" android:textColor="@color/textColor" From 79ded6bff443f9058a116e7a8e166310370ddbb7 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Fri, 17 Feb 2023 17:14:01 +0800 Subject: [PATCH 15/63] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=AF=B9=E8=AF=9D=E6=A1=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/bean/LiveTaskModel.java | 71 ++++++ .../common/dialog/AbsDialogPopupWindow.java | 27 +++ config.gradle | 4 +- .../yunbao/live/activity/LiveActivity.java | 2 +- .../live/adapter/LiveTaskRecyclerAdapter.java | 105 +++++++++ .../yunbao/live/dialog/LiveTaskDialog.java | 202 ++++++++++++++++++ .../live/dialog/LiveTaskInfoDialog.java | 34 +++ .../main/res/drawable/background_151515.xml | 9 + .../main/res/drawable/background_595959.xml | 9 + .../main/res/drawable/background_6cbe53.xml | 9 + live/src/main/res/layout/dialog_live_task.xml | 91 ++++++++ .../main/res/layout/dialog_live_task_info.xml | 66 ++++++ live/src/main/res/layout/item_live_task.xml | 89 ++++++++ .../main/res/mipmap-xhdpi/dialog_task_hot.png | Bin 0 -> 1480 bytes .../res/mipmap-xhdpi/dialog_task_info.png | Bin 0 -> 24962 bytes .../res/mipmap-xhdpi/dialog_task_new_star.png | Bin 0 -> 28755 bytes .../res/mipmap-xhdpi/dialog_task_star.png | Bin 0 -> 1217 bytes live/src/main/res/values-en/strings.xml | 11 + live/src/main/res/values/strings.xml | 13 +- .../yunbao/main/activity/TestActivity.java | 40 +++- .../yunbao/main/views/MainHomeViewHolder.java | 6 + 21 files changed, 779 insertions(+), 9 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java create mode 100644 common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java create mode 100644 live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java create mode 100644 live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java create mode 100644 live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java create mode 100644 live/src/main/res/drawable/background_151515.xml create mode 100644 live/src/main/res/drawable/background_595959.xml create mode 100644 live/src/main/res/drawable/background_6cbe53.xml create mode 100644 live/src/main/res/layout/dialog_live_task.xml create mode 100644 live/src/main/res/layout/dialog_live_task_info.xml create mode 100644 live/src/main/res/layout/item_live_task.xml create mode 100644 live/src/main/res/mipmap-xhdpi/dialog_task_hot.png create mode 100644 live/src/main/res/mipmap-xhdpi/dialog_task_info.png create mode 100644 live/src/main/res/mipmap-xhdpi/dialog_task_new_star.png create mode 100644 live/src/main/res/mipmap-xhdpi/dialog_task_star.png diff --git a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java new file mode 100644 index 000000000..b159fcad1 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java @@ -0,0 +1,71 @@ +package com.yunbao.common.bean; + + +public class LiveTaskModel extends BaseModel { + public static final int TASK_TYPE_TIP=0; + public static final int TASK_TYPE_ITEM=1; + + int type; + String title; + int hot; + int xp; + int taskTarget; + int task; + boolean complete; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getHot() { + return hot; + } + + public void setHot(int hot) { + this.hot = hot; + } + + public int getXp() { + return xp; + } + + public void setXp(int xp) { + this.xp = xp; + } + + public int getTaskTarget() { + return taskTarget; + } + + public void setTaskTarget(int taskTarget) { + this.taskTarget = taskTarget; + } + + public int getTask() { + return task; + } + + public void setTask(int task) { + this.task = task; + } + + public boolean isComplete() { + return complete; + } + + public void setComplete(boolean complete) { + this.complete = complete; + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java new file mode 100644 index 000000000..c1da205e2 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java @@ -0,0 +1,27 @@ +package com.yunbao.common.dialog; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.XPopup; +import com.lxj.xpopup.core.BottomPopupView; + + +public abstract class AbsDialogPopupWindow extends BottomPopupView { + private final Context mContext; + + public AbsDialogPopupWindow(@NonNull Context context) { + super(context); + this.mContext = context; + } + + public abstract void buildDialog(XPopup.Builder builder); + + public void showDialog() { + XPopup.Builder builder = new XPopup.Builder(mContext); + builder.isDestroyOnDismiss(true); + buildDialog(builder); + builder.asCustom(this).show(); + } +} diff --git a/config.gradle b/config.gradle index 66e026ffe..5628c118a 100644 --- a/config.gradle +++ b/config.gradle @@ -10,9 +10,9 @@ ext { manifestPlaceholders = [ //正式 - serverHost : "https://napi.yaoulive.com", +// serverHost : "https://napi.yaoulive.com", // -// serverHost : "https://ceshi.yaoulive.com", + serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index 9ec322ca1..7d0ad33b5 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -866,7 +866,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL private void showTaskDialog() { final Dialog dialog = new Dialog(LiveActivity.this, com.yunbao.live.R.style.dialog); - dialog.setContentView(R.layout.dialog_task); + dialog.setContentView(R.layout.dialog_live_task); dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(true); diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java new file mode 100644 index 000000000..c9d1d4ac2 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java @@ -0,0 +1,105 @@ +package com.yunbao.live.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.bean.LiveTaskModel; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.live.R; + +import java.util.List; + +public class LiveTaskRecyclerAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List tasks; + + public LiveTaskRecyclerAdapter(Context mContext) { + this.mContext = mContext; + } + + public void setTasks(List tasks) { + this.tasks = tasks; + notifyDataSetChanged(); + } + + @NonNull + @Override + public TaskHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == LiveTaskModel.TASK_TYPE_TIP) { + return new TaskHolder(new TextView(mContext)); + } else { + return new TaskHolder(LayoutInflater.from(mContext).inflate(R.layout.item_live_task, parent, false)); + } + } + + @Override + public int getItemViewType(int position) { + return tasks.get(position).getType(); + + } + + @Override + public void onBindViewHolder(@NonNull TaskHolder holder, int position) { + holder.setDate(tasks.get(position)); + } + + @Override + public int getItemCount() { + return tasks.size(); + } + + + public static class TaskHolder extends RecyclerView.ViewHolder { + private TextView title; + private TextView complete; + private TextView hot; + private TextView xp; + private ImageView hotIcon; + private ImageView xpIcon; + + public TaskHolder(@NonNull View itemView) { + super(itemView); + if (itemView instanceof TextView) { + title = (TextView) itemView; + title.setTextColor(Color.parseColor("#B3B3B3")); + title.setTextSize(12); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + params.setMarginStart(DpUtil.dp2px(27)); + params.setMargins(DpUtil.dp2px(27), DpUtil.dp2px(16), 0, DpUtil.dp2px(16)); + title.setLayoutParams(params); + } else { + title = itemView.findViewById(R.id.item_task_title); + complete = itemView.findViewById(R.id.item_task_complete); + hot = itemView.findViewById(R.id.item_task_hot); + xp = itemView.findViewById(R.id.item_task_xp); + hotIcon = itemView.findViewById(R.id.item_task_hot_img); + xpIcon = itemView.findViewById(R.id.item_task_xp_img); + hotIcon.setImageResource(R.mipmap.dialog_task_hot); + xpIcon.setImageResource(R.mipmap.dialog_task_star); + } + } + + public void setDate(LiveTaskModel task) { + title.setText(task.getTitle()); + if (task.getType() == LiveTaskModel.TASK_TYPE_TIP) { + return; + } + complete.setText(task.isComplete() ? R.string.live_task_item_complete_true : R.string.live_task_item_complete_false); + complete.setBackgroundResource(task.isComplete() ? R.drawable.background_6cbe53 : R.drawable.background_595959); + hot.setText(Html.fromHtml(""+ WordUtil.getString(R.string.live_task_item_hot) +"  " + task.getHot() + "")); + xp.setText(Html.fromHtml(""+WordUtil.getString(R.string.live_task_item_xp)+"  " + task.getXp() + "")); + } + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java new file mode 100644 index 000000000..50d4465f2 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -0,0 +1,202 @@ +package com.yunbao.live.dialog; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import com.google.android.material.tabs.TabLayout; +import com.google.android.material.tabs.TabLayoutMediator; +import com.lxj.xpopup.XPopup; +import com.yunbao.common.bean.LiveTaskModel; +import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; +import com.yunbao.live.R; +import com.yunbao.live.adapter.LiveTaskRecyclerAdapter; + +import java.util.ArrayList; +import java.util.List; + +/** + * 主播直播任务弹框 + */ +public class LiveTaskDialog extends AbsDialogPopupWindow { + private TextView newStarTime; + private ImageView newStarImg; + private ImageView taskInfoImg; + private ImageView tipImg; + private TabLayout tabLayout; + + private ViewPager2 viewPager; + + + private TabLayoutMediator mediator; + + + private Context mContext; + + public LiveTaskDialog(Context context) { + super(context); + this.mContext = context; + + } + + @Override + public void buildDialog(XPopup.Builder builder) { + builder.enableDrag(false); + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + } + + @Override + protected int getImplLayoutId() { + return R.layout.dialog_live_task; + } + + private void initView() { + newStarTime = findViewById(R.id.task_new_star_time); + newStarImg = findViewById(R.id.live_task_banner1); + taskInfoImg = findViewById(R.id.live_task_banner2); + tipImg = findViewById(R.id.live_task_tip); + tabLayout = findViewById(R.id.live_task_menu); + viewPager = findViewById(R.id.live_task_viewpager); + + newStarTime.setText("新秀主播時效截止至 2023/1/01 12:00"); + + initImgView(); + initTabLayout(); + + } + + private void initImgView() { + newStarImg.setImageResource(R.mipmap.dialog_task_new_star); + taskInfoImg.setImageResource(R.mipmap.dialog_task_info); + tipImg.setImageResource(R.mipmap.icon_guize); + tipImg.setOnClickListener(v -> new LiveTaskInfoDialog(mContext).showDialog()); + } + + private void initTabLayout() { + TabLayout.Tab liveTaskTag = tabLayout.newTab(); + TabLayout.Tab userTaskTag = tabLayout.newTab(); + liveTaskTag.setText(R.string.live_task_tab1); + userTaskTag.setText(R.string.live_task_tab2); + tabLayout.addTab(liveTaskTag); + tabLayout.addTab(userTaskTag); + + viewPager.setAdapter(new FragmentStateAdapter(((AppCompatActivity) mContext).getSupportFragmentManager(), getLifecycle()) { + + @Override + public int getItemCount() { + return 2; + } + + @NonNull + @Override + public Fragment createFragment(int position) { + TaskFragment fragment = new TaskFragment(); + Bundle bundle = new Bundle(); + bundle.putInt("position", position); + fragment.setArguments(bundle); + return fragment; + } + + }); + + mediator = new TabLayoutMediator(tabLayout, viewPager, true, new TabLayoutMediator.TabConfigurationStrategy() { + @Override + public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) { + if (position == 0) { + tab.setText(R.string.live_task_tab1); + } else { + tab.setText(R.string.live_task_tab2); + } + } + + }); + mediator.attach(); + } + + + public static class TaskFragment extends Fragment { + private RecyclerView taskList; + private LiveTaskRecyclerAdapter adapter; + private List tasks; + private int position; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return new RecyclerView(getActivity()); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + this.position = getArguments().getInt("position", -1); + taskList = (RecyclerView) view; + initTaskList(); + createTask(); + } + + private void initTaskList() { + adapter = new LiveTaskRecyclerAdapter(getContext()); + taskList.setAdapter(adapter); + taskList.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false)); + } + + private void createTask() { + tasks = new ArrayList<>(); + for (int i = 0; i < 4; i++) { + LiveTaskModel model = new LiveTaskModel(); + if (i == 0) { + model.setType(LiveTaskModel.TASK_TYPE_TIP); + model.setTitle(WordUtil.getString(R.string.live_task_no1)); + } else { + model.setType(LiveTaskModel.TASK_TYPE_ITEM); + model.setTitle("开播测试标题"); + } + model.setTask(30); + model.setXp(3000); + model.setHot(5000); + tasks.add(model); + + } + for (int i = 0; i < 4; i++) { + LiveTaskModel model = new LiveTaskModel(); + if (i == 0) { + model.setType(LiveTaskModel.TASK_TYPE_TIP); + model.setTitle(WordUtil.getString(R.string.live_task_no2)); + } else { + model.setType(LiveTaskModel.TASK_TYPE_ITEM); + model.setTitle("PK测试标题"); + } + model.setTask(30); + model.setXp(3000); + model.setHot(5000); + tasks.add(model); + + } + adapter.setTasks(tasks); + } + + } + +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java new file mode 100644 index 000000000..6a83d645b --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java @@ -0,0 +1,34 @@ +package com.yunbao.live.dialog; + +import android.content.Context; +import android.widget.ImageView; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.live.R; + +public class LiveTaskInfoDialog extends AbsDialogPopupWindow { + public LiveTaskInfoDialog(@NonNull Context context) { + super(context); + } + + @Override + protected int getImplLayoutId() { + return R.layout.dialog_live_task_info; + } + + @Override + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + protected void onCreate() { + super.onCreate(); + ImageView back = findViewById(R.id.live_task_info_back); + back.setImageResource(R.mipmap.icon_back); + back.setOnClickListener(v -> dismiss()); + } +} diff --git a/live/src/main/res/drawable/background_151515.xml b/live/src/main/res/drawable/background_151515.xml new file mode 100644 index 000000000..cd3ed4522 --- /dev/null +++ b/live/src/main/res/drawable/background_151515.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/live/src/main/res/drawable/background_595959.xml b/live/src/main/res/drawable/background_595959.xml new file mode 100644 index 000000000..c90524801 --- /dev/null +++ b/live/src/main/res/drawable/background_595959.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/background_6cbe53.xml b/live/src/main/res/drawable/background_6cbe53.xml new file mode 100644 index 000000000..47302db9d --- /dev/null +++ b/live/src/main/res/drawable/background_6cbe53.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_live_task.xml b/live/src/main/res/layout/dialog_live_task.xml new file mode 100644 index 000000000..02e632c14 --- /dev/null +++ b/live/src/main/res/layout/dialog_live_task.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_live_task_info.xml b/live/src/main/res/layout/dialog_live_task_info.xml new file mode 100644 index 000000000..178791b53 --- /dev/null +++ b/live/src/main/res/layout/dialog_live_task_info.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_live_task.xml b/live/src/main/res/layout/item_live_task.xml new file mode 100644 index 000000000..8208faf8f --- /dev/null +++ b/live/src/main/res/layout/item_live_task.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_hot.png b/live/src/main/res/mipmap-xhdpi/dialog_task_hot.png new file mode 100644 index 0000000000000000000000000000000000000000..5f15996599a51cdc78671eb0cb8c9b8052c7bbe8 GIT binary patch literal 1480 zcmV;(1vmPMP)Px&08mU+MMrQ<{;FdC%@Y2^Lgg1m=_EeGFg@+ORQ;(- z?2SAAy+Zi8f%s=u{;M?pjYsxaRO2v6{;DqH6*Ku^S^8>d{+>boxkmq}LjIpS*$qJc zmN@>8KH?ZN6*Tl)Rr-TV`;bTSEmi-%O8?b8_FPl@!&CW;QTcCA^Hf&-!!`fTG5_5x z|Bhz-a8LF&Ug9J{`OG=$FHil|H2uCa{m3!@*E#>vM)NXJ{g^=Qx|!k-GW~pB=SnsA zV@v5dS^G0*{cKwND`fRrZTo3p{V-?wGhF>HW&AN`{VZkvge(4iE&hTp{(3O}Xfghp zFaCck{)sC7bu9gBGX9Y%{*NsEQJeo`GyYgL^UQMnaWDOMG5(h@{#}&*pfCQ5F#Tqb z|7(u^Q6v32h~Qde{*)>9{I&RSg8hdt{)a05t1$gQasF^I|6?%zON;)LF#dBq{cRKedBjE z^o%g`;eGjUi|$@{{yk^@T#o-+U;RdC{ViYrd^i1(K>vg{|3pCeJwo+*mHj|}{bhdY zOl18^lj=b=T*o}PjcHK4(Vb;>y%;f!kqNU zqyAtd{V+$`9xL#OM*VT5+(1t2eoX7Gef@@U^W~}a_M!Lxt@*P)>q|AU3LQ(lOCh^FA^z3r&WGME|klb1;_1$&; zi!$h=XX$N1^4o&;>yzS#OY75t`HMK_nO64Gj{E6zeuLEVo(^_^VYomckx zdhD27_1Kp7*O~Uqf}!K;p8x;=T69uQQvgW^Tp0@o0%rtk5QEpjHvjQ`{`j$bhsPB1 z>&)3dwCwbv(oTi?H;Rh0-JL_t(I%VS_538)iNplid9Ux8h#Gkygw&8`fboVev3 z1)G@}Jlt@~n+TS++B5K5SMFAva%V`6!0{p*Ve|> z)V~4ou3mQAD7OEqKx=!^!I{R?)?UIs` z$@_$NZd$E`s({6*=Vb4p&Vs_i!j6uuJ-z+qa%e#*v~5pQb$eS|Zf@?XmNiY~@)#*b zud8$ImhEXkP*=TjxvV5+lG7B}++JKfX;N`r!3r4`Y^l=0dvC#+>C+FiIH|H>Pu6T< i5s{(cK>;izWq1H4t-QL2FCyyz0000*I literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_info.png b/live/src/main/res/mipmap-xhdpi/dialog_task_info.png new file mode 100644 index 0000000000000000000000000000000000000000..7627e345e9b6ac236c6689317afb9c5a60207896 GIT binary patch literal 24962 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 Rq5}W`002ovPDHLkV1i4x!9D;0 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_new_star.png b/live/src/main/res/mipmap-xhdpi/dialog_task_new_star.png new file mode 100644 index 0000000000000000000000000000000000000000..6673b3e8973b3dc3cee8dd042990163dda886365 GIT binary patch literal 28755 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

s4Udd%!w%n2Y zbj!FW7*WsUmUlI@c4z^mN>zHhl@Awu+fplVVBfi_8{6tB4i|;HCyHS}l*GM>7@A4$ zROc2pIUoBlW%{zo6>m8$r{d%Eq6l|Y-70#csjLOB_j|+s`eHvzQSE;Z>VGWy_m)%Z zeHFd`_eM-DmZ0P1p4S3pu-d%qMrNqMDf81)aMV_z;Iv<5e`1^>sGQT{3qW

z`Uv z#z^%B{8buLOB=Pvw#zA&2@TZ#_&F7B66*gJ)(;JQJZa!_O1&BN*3ui6_^S_|lSE95 z7~|_ygf2GO0#mgeRVrojuAkQ6f>f>4@55dGJU`tO!N0guRQjjZ0xt_x5*Tk@9vMc}kJB1cun^8HK!bt4I#3!yEBatS2nl%_>* ziTym&W~90oY?Kbv)$g09r-15_;Iwz7>-|@7BUSh!%4S0$l^JST_D`+JFHd{DQxek8 zu{mWSsA-t2^xfuRt=_NFa*}o6tB7>)Cpe8*G+c>^sHSPtCP|Nx*pjvKy!@28Df83A z=S@!Odh@8lIc+gc<8QNXs*Nh+wA0vBK?PKOgHB?Te@UdLE~-mQ2cV63vDv9skyDsp%%7sLRJ_

dFV4=+K6v@^R|cvbf*MN507KQZnHWjkAYrFAMNS#0=ehG-DR-zh zbi5%9E^`b}HeFAxRVu9-*eNsAmgDpfleO3NMx&!( zTIS=ZshskO6MAuWdAYZ@KN!q{y4~*e7m#GIgNB@j0#HTZ2Spx`#h}<0=@b>L+Lp9a zmY?QU1*V)-mZs`)Zl=I#&2gMsGWlD*+HiAJ5%_`B@~%4wHN^h4-5nRvZRVi^L1?#o z)xEm9y8iZ4I2upIQ;VS{TXW<=MAOEQ>UwI5Ih*DB>AC1XU3Rg=;1A4l#cLG?YVU2E z5AEY`OO-jN(45-kLr;KVn%SFse|>%@kRk|JatKhBYvc4Rpb=ne$R29u|IVP{fMccvxZv+XIvCtUsTcj<&F8qI z@)HOvYhuNk`(|`T8`gBxGzcL32N=Y0r69C=~dJl$fLrL5i5d zPuGk5z$l-tAIZQUR@bC@DIta#oz_NcDiSjdfHk1=L?)3-loE+JQ!*|kX=P!b-x{p~ z!QTN;q1oR7N_o3!`=O%QhqJRtD*Eb&sE^<`K}d##nqV1*8H-G*Z2kpLfT5Px(dr3q=R9M69m)~y`RTRfR_s-1z-lePE0;N)fHZ3KoHX%{*N5mgRiK#)OZ~Ej5 z_&`7&&?o)?qlrIad@|9unm~9lL81~7jRq@7k?^Cflr7y-D73pfvpYL;uMe|r7o%NT z z=3*xl2YQ-~ROT~8i+dLl+@bEcuoBzxB`CmiA<<4`*%-=~#8U2_I|?AvnR-K5=_L5`6w(ol#v~F4 z3-#K>!M^2p41fqnci~&00j&d9E~Gk$B*st`(~5?@-TxU0v-_XEH`!2bi>78eWl}sN ztcF&U3RYg*KQe*Y6eGeIx{}yY{JyVHDm0vNO40L9Bs9{#^~0H4ZbN5aQ>&FKd>~}F zM_R@ztf<6{fsTR>SEtmtsBWS(K)9f6@TZ|-L&-%szUN$S$ySW?3CFf~Hurrwy5J6k zGu9`IjuaD&TtozW8dSw(%;JN9vML*_RF@{F*?_ zdG>0BU3*K|g(4`;v|Z-Sw;Zx#`J0m~9VFI(_R!acDCRv}r*y0?2Xdcx$Cp3k9VNb@ z2d(F8?E!fp1B9aB_z(->Ib}>+f~g@KstGGW3iPEzjGt@5b&@CZlargf-#&G{?pZM2 z-;-IGH(62Q1ZF}^ub4yNOLWI4YQS~K5M!}&36iz7|~FGSS__5|teWcT zYqfzI7jr;lD1yL8Xt7S$Df5B=tf<=&C}M4o&n6P{K=j`LSs{e*0G%HExVL4=0L+9~ zk1}c!F|YsSTostSS$LEND~=&t&=3#NxpWQ)s{2m-%DF3rjw3}c*8jlv1B12SUH-H= zmcCEyjWo6HA=((#+2dqKTeIa#?EUr~-@NyqU(5f^ZuEEGuS&TsGj`j_)?Dw;V&6V> f_s{39)w90Only those who have the room code can watch Submit The number of voices has reached 3, and no more can be added. + 當日連續開播時長(分鐘) + 當日累計PK次數(不限模式) + 直播互動 + 粉絲增漲 + 主播任務特別說明 + 所有主播在開播後,即可獲得一系列的當日任務,當根據相應的要求完成任務後,主播即可在第二天開播後,獲得前一天的任務獎勵。 + ● 所有任務數值將由系統進行實時計算,如因個人手機電腦設備問題、網絡問題或是沒有正常進行下播導致數據出現錯誤等問題,為此相關主播可進行聯系相關平臺工作人員或是在線客服,進行反饋,待相關部分確認後,將會再進行補償處理。\n● 所有任務數據的正常結算周期將會在每日的淩晨6點進行結算,若開播時間超過淩晨6點,將會出現獎勵無法正常結算的情況,請知悉。\n● 當主播規範分低於90時,主播任務中心的所有獎勵,將僅能獲得50%的,當主播規範分低於80以下時,將無法獲得主播任務獎勵。 + 已完成 + 未完成 + 直播熱度 + 主播經驗 \ No newline at end of file diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index c994ee24a..733d6c89d 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -49,6 +49,15 @@ 請輸入您要pk的主播昵稱或id 對方正在PK中 PK次數已用完 - - + 當日連續開播時長(分鐘) + 當日累計PK次數(不限模式) + 直播互動 + 粉絲增漲 + 主播任務特別說明 + 所有主播在開播後,即可獲得一系列的當日任務,當根據相應的要求完成任務後,主播即可在第二天開播後,獲得前一天的任務獎勵。 + ● 所有任務數值將由系統進行實時計算,如因個人手機電腦設備問題、網絡問題或是沒有正常進行下播導致數據出現錯誤等問題,為此相關主播可進行聯系相關平臺工作人員或是在線客服,進行反饋,待相關部分確認後,將會再進行補償處理。\n● 所有任務數據的正常結算周期將會在每日的淩晨6點進行結算,若開播時間超過淩晨6點,將會出現獎勵無法正常結算的情況,請知悉。\n● 當主播規範分低於90時,主播任務中心的所有獎勵,將僅能獲得50%的,當主播規範分低於80以下時,將無法獲得主播任務獎勵。 + 已完成 + 未完成 + 直播熱度 + 主播經驗 diff --git a/main/src/main/java/com/yunbao/main/activity/TestActivity.java b/main/src/main/java/com/yunbao/main/activity/TestActivity.java index d4094b529..dcc14551c 100644 --- a/main/src/main/java/com/yunbao/main/activity/TestActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/TestActivity.java @@ -1,23 +1,55 @@ package com.yunbao.main.activity; +import android.content.Intent; import android.os.Bundle; +import android.os.Environment; import android.text.SpannableStringBuilder; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; -import com.yunbao.main.R; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.live.dialog.LiveTaskDialog; + + +import java.io.File; public class TestActivity extends AppCompatActivity { private TextView contextLayout; + private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_test); - contextLayout = findViewById(R.id.context_layout); - SpannableStringBuilder builder = new SpannableStringBuilder(); + listView = new ListView(this); + setContentView(listView); + String[] strs = new String[]{ + "弹出主播任务" + }; + + listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, strs)); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + switch (position) { + case 0: + new LiveTaskDialog(TestActivity.this).showDialog(); + break; + + } + } + }); + } + + @Override + protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { + super.onActivityResult(requestCode, resultCode, data); } } \ No newline at end of file diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index 4cc0b3327..a6ec4e727 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -1,6 +1,7 @@ package com.yunbao.main.views; import android.content.Context; +import android.content.Intent; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -11,6 +12,7 @@ import com.yunbao.common.utils.WordUtil; import com.yunbao.live.dialog.LiveRobotSettingDialogFragment; import com.yunbao.main.R; import com.yunbao.main.activity.MainActivity; +import com.yunbao.main.activity.TestActivity; /** * Created by cxf on 2018/9/22. @@ -38,6 +40,10 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { super.init(); img_trophy = (ImageView) findViewById(R.id.img_trophy); + img_trophy.setOnLongClickListener(v -> { + mContext.startActivity(new Intent(mContext, TestActivity.class)); + return true; + }); ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy); From b2f779f58a2c47b41208bd871e80f4f61abd8df5 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Sat, 18 Feb 2023 11:03:49 +0800 Subject: [PATCH 16/63] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/dialog/AbsDialogPopupWindow.java | 6 ++ .../adapter/LiveDataInfoRecyclerAdapter.java | 66 +++++++++++++++++ .../yunbao/live/bean/LiveDataInfoModel.java | 33 +++++++++ .../live/dialog/LiveDataInfoDialog.java | 65 ++++++++++++++++ .../yunbao/live/dialog/LiveTaskDialog.java | 11 ++- .../live/dialog/LiveTaskInfoDialog.java | 8 +- live/src/main/res/layout/dialog_live_data.xml | 74 +++++++++++++++++++ live/src/main/res/layout/item_live_data.xml | 44 +++++++++++ .../yunbao/main/activity/TestActivity.java | 9 ++- 9 files changed, 304 insertions(+), 12 deletions(-) create mode 100644 live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java create mode 100644 live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java create mode 100644 live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java create mode 100644 live/src/main/res/layout/dialog_live_data.xml create mode 100644 live/src/main/res/layout/item_live_data.xml diff --git a/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java index c1da205e2..150ca86e7 100644 --- a/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java @@ -17,6 +17,12 @@ public abstract class AbsDialogPopupWindow extends BottomPopupView { } public abstract void buildDialog(XPopup.Builder builder); + public abstract int bindLayoutId(); + + @Override + protected int getImplLayoutId() { + return bindLayoutId(); + } public void showDialog() { XPopup.Builder builder = new XPopup.Builder(mContext); diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java new file mode 100644 index 000000000..0e58c2e75 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java @@ -0,0 +1,66 @@ +package com.yunbao.live.adapter; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.live.R; +import com.yunbao.live.bean.LiveDataInfoModel; + +import java.util.List; + +public class LiveDataInfoRecyclerAdapter extends RecyclerView.Adapter { + private Context mContext; + private List list; + + public LiveDataInfoRecyclerAdapter(Context mContext) { + this.mContext = mContext; + } + + public void setList(List list) { + this.list = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public LiveDataHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new LiveDataHolder(LayoutInflater.from(mContext).inflate(R.layout.item_live_data, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull LiveDataHolder holder, int position) { + holder.setData(list.get(position)); + } + + @Override + public int getItemCount() { + return list.size(); + } + + public static class LiveDataHolder extends RecyclerView.ViewHolder { + private TextView title, data; + + public LiveDataHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.item_title); + data = itemView.findViewById(R.id.item_data); + } + + public void setData(LiveDataInfoModel model) { + if (model.getColor() != null) { + data.setText(Html.fromHtml("" + model.getData() + "")); + } else { + data.setText(model.getData()); + } + title.setText(model.getTitle()); + } + + } +} diff --git a/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java b/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java new file mode 100644 index 000000000..80f3f283a --- /dev/null +++ b/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java @@ -0,0 +1,33 @@ +package com.yunbao.live.bean; + +import com.yunbao.common.bean.BaseModel; + +public class LiveDataInfoModel extends BaseModel { + private String color; + private String title; + private String data; + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java new file mode 100644 index 000000000..87392a0fb --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java @@ -0,0 +1,65 @@ +package com.yunbao.live.dialog; + +import android.content.Context; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.live.R; +import com.yunbao.live.adapter.LiveDataInfoRecyclerAdapter; +import com.yunbao.live.bean.LiveDataInfoModel; + + +import java.util.ArrayList; +import java.util.List; + +public class LiveDataInfoDialog extends AbsDialogPopupWindow { + private ImageView img; + private RecyclerView recyclerView; + private LiveDataInfoRecyclerAdapter adapter; + private List list; + + public LiveDataInfoDialog(@NonNull Context context) { + super(context); + } + + + @Override + public void buildDialog(XPopup.Builder builder) { + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_live_data; + } + + @Override + protected void onCreate() { + super.onCreate(); + img = findViewById(R.id.live_data_img); + img.setImageResource(R.mipmap.icon_free_pk_waring); + recyclerView = findViewById(R.id.live_data_list); + adapter = new LiveDataInfoRecyclerAdapter(getContext()); + recyclerView.setAdapter(adapter); + initData(); + } + + private void initData() { + list = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + LiveDataInfoModel model = new LiveDataInfoModel(); + if (i == 0) { + model.setColor("#00FFFF"); + } else if (i == 1) { + model.setColor("#FFF69F"); + } + model.setTitle("标题:" + i); + model.setData("数据:" + i); + list.add(model); + } + adapter.setList(list); + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java index 50d4465f2..f044839df 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -1,6 +1,5 @@ package com.yunbao.live.dialog; -import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; @@ -23,7 +22,6 @@ import com.google.android.material.tabs.TabLayoutMediator; import com.lxj.xpopup.XPopup; import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.dialog.AbsDialogPopupWindow; -import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.LiveTaskRecyclerAdapter; @@ -60,16 +58,17 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { builder.enableDrag(false); } + @Override + public int bindLayoutId() { + return R.layout.dialog_live_task; + } + @Override protected void onCreate() { super.onCreate(); initView(); } - @Override - protected int getImplLayoutId() { - return R.layout.dialog_live_task; - } private void initView() { newStarTime = findViewById(R.id.task_new_star_time); diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java index 6a83d645b..1b6423f49 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java @@ -15,13 +15,13 @@ public class LiveTaskInfoDialog extends AbsDialogPopupWindow { } @Override - protected int getImplLayoutId() { - return R.layout.dialog_live_task_info; + public void buildDialog(XPopup.Builder builder) { + } @Override - public void buildDialog(XPopup.Builder builder) { - + public int bindLayoutId() { + return R.layout.dialog_live_task_info; } @Override diff --git a/live/src/main/res/layout/dialog_live_data.xml b/live/src/main/res/layout/dialog_live_data.xml new file mode 100644 index 000000000..ba1c8b8a1 --- /dev/null +++ b/live/src/main/res/layout/dialog_live_data.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_live_data.xml b/live/src/main/res/layout/item_live_data.xml new file mode 100644 index 000000000..f46e318f4 --- /dev/null +++ b/live/src/main/res/layout/item_live_data.xml @@ -0,0 +1,44 @@ + + + + + + + + + + \ No newline at end of file diff --git a/main/src/main/java/com/yunbao/main/activity/TestActivity.java b/main/src/main/java/com/yunbao/main/activity/TestActivity.java index dcc14551c..e62419001 100644 --- a/main/src/main/java/com/yunbao/main/activity/TestActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/TestActivity.java @@ -14,6 +14,7 @@ import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.live.dialog.LiveDataInfoDialog; import com.yunbao.live.dialog.LiveTaskDialog; @@ -30,7 +31,8 @@ public class TestActivity extends AppCompatActivity { listView = new ListView(this); setContentView(listView); String[] strs = new String[]{ - "弹出主播任务" + "弹出主播任务", + "直播數據" }; listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, strs)); @@ -39,7 +41,10 @@ public class TestActivity extends AppCompatActivity { public void onItemClick(AdapterView parent, View view, int position, long id) { switch (position) { case 0: - new LiveTaskDialog(TestActivity.this).showDialog(); + new LiveTaskDialog(TestActivity.this).showDialog(); + break; + case 1: + new LiveDataInfoDialog(TestActivity.this).showDialog(); break; } From eaed7e448b4968afda1cbfe2fa18f01926d0306b Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Sat, 18 Feb 2023 11:05:06 +0800 Subject: [PATCH 17/63] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config.gradle b/config.gradle index 5628c118a..00ea7a5b8 100644 --- a/config.gradle +++ b/config.gradle @@ -9,9 +9,8 @@ ext { ] manifestPlaceholders = [ //正式 - // serverHost : "https://napi.yaoulive.com", -// + //测试 serverHost : "https://ceshi.yaoulive.com", //腾讯地图 From 6d458d0c7f8f4a5b6525b0d27c48fa6e6388883c Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Sat, 18 Feb 2023 11:09:27 +0800 Subject: [PATCH 18/63] =?UTF-8?q?=E6=9B=B4=E6=96=B0string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- live/src/main/res/layout/dialog_live_data.xml | 4 ++-- live/src/main/res/values-en/strings.xml | 2 ++ live/src/main/res/values/strings.xml | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/live/src/main/res/layout/dialog_live_data.xml b/live/src/main/res/layout/dialog_live_data.xml index ba1c8b8a1..d381e7a2e 100644 --- a/live/src/main/res/layout/dialog_live_data.xml +++ b/live/src/main/res/layout/dialog_live_data.xml @@ -31,7 +31,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="本場直播數據統計" + android:text="@string/live_data_msg1" android:textColor="#808080" android:textSize="16sp" /> @@ -52,7 +52,7 @@ diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index 68fa24ddd..eb96a0f00 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -29,4 +29,6 @@ 未完成 直播熱度 主播經驗 + 本場直播數據統計 + 歷史數據可在主播中心查看 \ No newline at end of file diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index 733d6c89d..981f1095a 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -60,4 +60,6 @@ 未完成 直播熱度 主播經驗 + 本場直播數據統計 + 歷史數據可在主播中心查看 From 8d823f7a079e0851e183f59171307d33bc67b648 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 18 Feb 2023 13:21:59 +0800 Subject: [PATCH 19/63] =?UTF-8?q?=E4=B8=BB=E6=92=AD=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E5=8A=9F=E8=83=BD=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/LiveSystemMessageAdapter.java | 52 ++ .../common/bean/ListInfoMessageModel.java | 96 +++ .../com/yunbao/common/http/PDLiveApi.java | 6 + .../common/http/live/LiveNetManager.java | 13 + .../views/LiveAnchorMessageCustomPopup.java | 72 ++ .../views/LiveSystemMessageViewHolder.java | 47 ++ .../src/main/res/drawable/bg_live_anchor.xml | 5 + .../res/drawable/bg_live_anchor_message.xml | 7 + .../res/layout/dialog_live_anchor_message.xml | 21 + .../res/layout/dialog_live_new_function.xml | 656 ++++++++++-------- .../res/layout/view_live_system_message.xml | 94 +++ .../src/main/res/mipmap-xxhdpi}/icon_more.png | Bin .../main/res/mipmap-xxhdpi/live_icon_data.png | Bin 0 -> 3872 bytes .../main/res/mipmap-xxhdpi/live_icon_news.png | Bin 0 -> 3188 bytes common/src/main/res/values-en/strings.xml | 112 +-- common/src/main/res/values/strings.xml | 3 + .../dialog/LiveNewFunctionDialogFragment.java | 24 +- 17 files changed, 874 insertions(+), 334 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java create mode 100644 common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java create mode 100644 common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java create mode 100644 common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java create mode 100644 common/src/main/res/drawable/bg_live_anchor.xml create mode 100644 common/src/main/res/drawable/bg_live_anchor_message.xml create mode 100644 common/src/main/res/layout/dialog_live_anchor_message.xml create mode 100644 common/src/main/res/layout/view_live_system_message.xml rename {live/src/main/res/mipmap-xhdpi => common/src/main/res/mipmap-xxhdpi}/icon_more.png (100%) create mode 100644 common/src/main/res/mipmap-xxhdpi/live_icon_data.png create mode 100644 common/src/main/res/mipmap-xxhdpi/live_icon_news.png diff --git a/common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java b/common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java new file mode 100644 index 000000000..2fb288925 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/adapter/LiveSystemMessageAdapter.java @@ -0,0 +1,52 @@ +package com.yunbao.common.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.R; +import com.yunbao.common.bean.ListInfoMessageModel; +import com.yunbao.common.views.LiveSystemMessageViewHolder; + +import java.util.ArrayList; +import java.util.List; + +/** + * 主播消息中心适配器 + */ +public class LiveSystemMessageAdapter extends RecyclerView.Adapter { + private Context mContext; + private LayoutInflater mInflater; + private List listInfoMessageModels = new ArrayList<>(); + + public LiveSystemMessageAdapter(Context mContext) { + this.mContext = mContext; + mInflater = LayoutInflater.from(mContext); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new LiveSystemMessageViewHolder(mInflater.inflate(R.layout.view_live_system_message, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + LiveSystemMessageViewHolder messageViewHolder = (LiveSystemMessageViewHolder) holder; + messageViewHolder.setViewData(listInfoMessageModels.get(position)); + } + + @Override + public int getItemCount() { + return listInfoMessageModels.size(); + } + + public void addData(List list) { + listInfoMessageModels.addAll(list); + notifyDataSetChanged(); + + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java b/common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java new file mode 100644 index 000000000..3261a8c1b --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/ListInfoMessageModel.java @@ -0,0 +1,96 @@ +package com.yunbao.common.bean; + +import android.text.TextUtils; + +import com.google.gson.annotations.SerializedName; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class ListInfoMessageModel extends BaseModel { + @SerializedName("id") + private int id; + @SerializedName("title") + private String title; + @SerializedName("banner") + private String banner; + @SerializedName("content") + private String content; + @SerializedName("link") + private String link; + @SerializedName("addtime") + private String addtime; + + public int getId() { + return id; + } + + public ListInfoMessageModel setId(int id) { + this.id = id; + return this; + } + + public String getTitle() { + return title; + } + + public ListInfoMessageModel setTitle(String title) { + this.title = title; + return this; + } + + public String getBanner() { + return banner; + } + + public ListInfoMessageModel setBanner(String banner) { + this.banner = banner; + return this; + } + + public String getContent() { + return content; + } + + public ListInfoMessageModel setContent(String content) { + this.content = content; + return this; + } + + public String getLink() { + return link; + } + + public ListInfoMessageModel setLink(String link) { + this.link = link; + return this; + } + + public String getAddtime() { + return addtime; + } + + public ListInfoMessageModel setAddtime(String addtime) { + this.addtime = addtime; + return this; + } + + /** + * 会话列表展示时间 + */ + public String getLastDate(String type) { + if (!TextUtils.isEmpty(addtime) && !TextUtils.equals(addtime, "0")) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date currenTimeZone; + if (TextUtils.equals(type, "-1")) { + currenTimeZone = new Date(Long.parseLong(addtime)); + } else { + currenTimeZone = new Date(Long.parseLong(addtime + "000")); + } + return sdf.format(currenTimeZone); + } else { + return ""; + } + + } +} diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index dee1a5e78..fc686a611 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -12,6 +12,7 @@ import com.yunbao.common.bean.HourRank; import com.yunbao.common.bean.HttpCallbackModel; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.LinkMicUserBeanV2; +import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.bean.LiveAiRobotBean; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; @@ -542,4 +543,9 @@ public interface PDLiveApi { Observable> jieshuDRPK( @Query("roomid") String roomId, @Query("uid") String uid); + + @GET("/api/public/?service=Message.getListInfo") + Observable>> getListInfo( + @Query("type") String type, + @Query("p") int p); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index a1aa6c25d..fcdcbb48f 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -14,6 +14,7 @@ import com.yunbao.common.bean.EnterRoomNewModel; import com.yunbao.common.bean.HttpCallbackModel; import com.yunbao.common.bean.LinkMicUserBean; import com.yunbao.common.bean.LinkMicUserBeanV2; +import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.bean.LiveAiRobotBean; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; @@ -1075,6 +1076,18 @@ public class LiveNetManager { }).isDisposed(); } + public void getListInfo(String type, int p, HttpCallback> callback) { + API.get().pdLiveApi(mContext) + .getListInfo(type, p) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + callback.onSuccess(listResponseModel.getData().getInfo()); + }, throwable -> { + callback.onError(throwable.getMessage()); + }).isDisposed(); + } + /** * 直播间取消网络请求 */ diff --git a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java new file mode 100644 index 000000000..ff91ff65a --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java @@ -0,0 +1,72 @@ +package com.yunbao.common.views; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.core.BottomPopupView; +import com.yunbao.common.R; +import com.yunbao.common.adapter.LiveSystemMessageAdapter; +import com.yunbao.common.bean.ListInfoMessageModel; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.ToastUtil; + +import java.util.List; + +/** + * 主播消息中心 + */ +public class LiveAnchorMessageCustomPopup extends BottomPopupView { + private LiveSystemMessageAdapter adapter; + private RecyclerView liveMessage; + + public LiveAnchorMessageCustomPopup(@NonNull Context context) { + super(context); + } + + // 返回自定义弹窗的布局 + @Override + protected int getImplLayoutId() { + return R.layout.dialog_live_anchor_message; + } + + // 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑 + @Override + protected void onCreate() { + super.onCreate(); + initView(); + initDate(); + } + + private void initDate() { + LiveNetManager.get(getContext()) + .getListInfo("1", 1, new HttpCallback>() { + @Override + public void onSuccess(List data) { + adapter.addData(data); + } + + @Override + public void onError(String error) { + ToastUtil.show(error); + } + }); + + } + + private void initView() { + liveMessage = findViewById(R.id.live_message); + liveMessage.setHasFixedSize(false); + liveMessage.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false)); + adapter = new LiveSystemMessageAdapter(getContext()); + liveMessage.setAdapter(adapter); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } +} diff --git a/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java b/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java new file mode 100644 index 000000000..e1ffea244 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java @@ -0,0 +1,47 @@ +package com.yunbao.common.views; + +import android.text.TextUtils; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.R; +import com.yunbao.common.bean.ListInfoMessageModel; +import com.yunbao.common.glide.ImgLoader; + +public class LiveSystemMessageViewHolder extends RecyclerView.ViewHolder { + private TextView titleText, timeText, contextLayout, toView; + private CardView bannerCard; + private ImageView bannerImage; + + public LiveSystemMessageViewHolder(@NonNull View itemView) { + super(itemView); + titleText = itemView.findViewById(R.id.title_text); + timeText = itemView.findViewById(R.id.time_text); + contextLayout = itemView.findViewById(R.id.context_layout); + toView = itemView.findViewById(R.id.to_view); + bannerCard = itemView.findViewById(R.id.banner_card); + bannerImage = itemView.findViewById(R.id.banner_image); + } + + public void setViewData(ListInfoMessageModel model) { + titleText.setText(model.getTitle()); + timeText.setText(model.getLastDate("1")); + if (TextUtils.isEmpty(model.getBanner())) { + bannerCard.setVisibility(View.GONE); + } else { + bannerCard.setVisibility(View.VISIBLE); + ImgLoader.display(itemView.getContext(), model.getBanner(), bannerImage); + } + contextLayout.setText(model.getContent()); + if (TextUtils.isEmpty(model.getLink())) { + toView.setVisibility(View.GONE); + } else { + toView.setVisibility(View.VISIBLE); + } + } +} diff --git a/common/src/main/res/drawable/bg_live_anchor.xml b/common/src/main/res/drawable/bg_live_anchor.xml new file mode 100644 index 000000000..97e93b52b --- /dev/null +++ b/common/src/main/res/drawable/bg_live_anchor.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/common/src/main/res/drawable/bg_live_anchor_message.xml b/common/src/main/res/drawable/bg_live_anchor_message.xml new file mode 100644 index 000000000..9ff74fedd --- /dev/null +++ b/common/src/main/res/drawable/bg_live_anchor_message.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/common/src/main/res/layout/dialog_live_anchor_message.xml b/common/src/main/res/layout/dialog_live_anchor_message.xml new file mode 100644 index 000000000..1c017ccf9 --- /dev/null +++ b/common/src/main/res/layout/dialog_live_anchor_message.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/layout/dialog_live_new_function.xml b/common/src/main/res/layout/dialog_live_new_function.xml index 4182a2fc9..6a9271e98 100644 --- a/common/src/main/res/layout/dialog_live_new_function.xml +++ b/common/src/main/res/layout/dialog_live_new_function.xml @@ -1,329 +1,433 @@ - - - - + android:layout_marginBottom="8dp" + android:orientation="horizontal"> + android:layout_marginStart="10dp" + android:background="@drawable/bg_live_anchor" + android:gravity="center" + android:paddingStart="6dp" + android:paddingTop="4dp" + android:paddingEnd="6dp" + android:paddingBottom="4dp"> - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginStart="5dp" + android:text="00:00" + android:textColor="@color/white" + android:textSize="12sp" /> - - - - - + + android:layout_marginStart="10dp" + android:background="@drawable/bg_live_anchor" + android:gravity="center_vertical" + android:paddingStart="6dp" + android:paddingTop="4dp" - + + + + + - - - - - - - - - - - - - - - - - - - - + android:layout_marginStart="6dp" + android:text="@string/broadcast_data" + android:textColor="@color/white" + android:textSize="10sp" /> - - - - + + + + + + + + + + + + android:layout_marginTop="30dp" + android:text="@string/value_added_benefits" + android:textColor="@color/white" + android:textSize="14sp" /> + + + android:layout_marginStart="16dp" + android:layout_marginTop="10dp" + android:paddingEnd="16dp"> - - - + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginStart="16dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="20dp" + android:paddingEnd="16dp"> - - - - - + android:gravity="center" + android:orientation="vertical"> - + - + + + + android:layout_marginStart="23dp" + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + android:layout_marginStart="16dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="20dp" + android:paddingEnd="16dp"> - - - - + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file diff --git a/common/src/main/res/layout/view_live_system_message.xml b/common/src/main/res/layout/view_live_system_message.xml new file mode 100644 index 000000000..968f41186 --- /dev/null +++ b/common/src/main/res/layout/view_live_system_message.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/icon_more.png b/common/src/main/res/mipmap-xxhdpi/icon_more.png similarity index 100% rename from live/src/main/res/mipmap-xhdpi/icon_more.png rename to common/src/main/res/mipmap-xxhdpi/icon_more.png diff --git a/common/src/main/res/mipmap-xxhdpi/live_icon_data.png b/common/src/main/res/mipmap-xxhdpi/live_icon_data.png new file mode 100644 index 0000000000000000000000000000000000000000..f23f08440a7952a00cc7abd90f1558e5c6c3b079 GIT binary patch literal 3872 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 a!~X#`C#Z=Q(NG%z0000 In a batch Chat - Congratulations %s have won %s in the Lucky Angel! The next lucky angel will be you! - Congratulations on %s winning %s in Luck 100 %%! Go pass on the good luck! - Guardian group %s people - receive - To complete - Already collected - Image quality selection - More Settings + Congratulations %s have won %s in the Lucky Angel! The next lucky angel will be you! + Congratulations on %s winning %s in Luck 100 %%! Go pass on the good luck! + Guardian group %s people + receive + To complete + Already collected + Image quality selection + More Settings view more The gift is on the way... The gift is on the way @@ -955,52 +955,54 @@ Limited ride And limited avatar frame End \nPK Time %s - accept - refuse - Persist in refusing - Random PK hint + accept + refuse + Persist in refusing + Random PK hint - Automatic speech robot setup - Robot switch - Robot name setting - The word limit is 2 to 8 word - Automatic greeting setting - Number of configured items - Set automatic message sending - Go to set - Thank you for sending gifts, PK start, PK end automatic robot message, \n does not support customization. - Add content - At regular intervals, the robot automatically says the following sentence at random。 - Fill in the content recommendation, such as: send wish list, add fan group, etc - Automatic speech interval (minutes) - At least once every 5 minutes - When a user enters the studio, the robot will @the user and automatically - The following sentence is random. Set a minimum of 1 to a maximum of 20. - Robot setup - High definition - fluency - Ultra hd - After determining the definition of the broadcast, you need to restart the broadcast to change - Confirmation of broadcast Settings - clarity - Live channel - broadcast - robot - set - Not set - no - yes - Ultra HD hint - In the case of unstable network speed, the selection of ultra HD may lead to the delay of the picture in the broadcast room. Do you confirm the selection? - Stick to choice - Network prompt - The system detects that your network is unstable and insufficient device memory will affect the fluency of your live broadcast. Therefore, it is recommended that you choose fluency and clarity. - check version - Update - Latest Version - updating - There is no choice, the anchor is not turned on FHD live. - There is no choice, the anchor is not turned on HD live. - Sorry, this feature is on hold. - phone + Automatic speech robot setup + Robot switch + Robot name setting + The word limit is 2 to 8 word + Automatic greeting setting + Number of configured items + Set automatic message sending + Go to set + Thank you for sending gifts, PK start, PK end automatic robot message, \n does not support customization. + Add content + At regular intervals, the robot automatically says the following sentence at random。 + Fill in the content recommendation, such as: send wish list, add fan group, etc + Automatic speech interval (minutes) + At least once every 5 minutes + When a user enters the studio, the robot will @the user and automatically + The following sentence is random. Set a minimum of 1 to a maximum of 20. + Robot setup + High definition + fluency + Ultra hd + After determining the definition of the broadcast, you need to restart the broadcast to change + Confirmation of broadcast Settings + clarity + Live channel + broadcast + robot + set + Not set + no + yes + Ultra HD hint + In the case of unstable network speed, the selection of ultra HD may lead to the delay of the picture in the broadcast room. Do you confirm the selection? + Stick to choice + Network prompt + The system detects that your network is unstable and insufficient device memory will affect the fluency of your live broadcast. Therefore, it is recommended that you choose fluency and clarity. + check version + Update + Latest Version + updating + There is no choice, the anchor is not turned on FHD live. + There is no choice, the anchor is not turned on HD live. + Sorry, this feature is on hold. + phone + Broadcast + Click To View diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index bcfe413f2..af39ae8b1 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -785,6 +785,7 @@ 暫時還沒有人給予作者鼓勵T_T 點擊查看更多 + 客服 設定 每日13:00PM-1:00AM @@ -1023,4 +1024,6 @@ 無法選擇,該主播未開啟高清直播。 抱歉,該功能暫停使用中。 手機號 + 開播數據 + 點擊查看 diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java index 48e7168ef..f022040d8 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java @@ -1,6 +1,16 @@ package com.yunbao.live.dialog; -import static com.yunbao.common.Constants.*; +import static com.yunbao.common.Constants.LIVE_FUNC_BEAUTY; +import static com.yunbao.common.Constants.LIVE_FUNC_CAMERA; +import static com.yunbao.common.Constants.LIVE_FUNC_DR; +import static com.yunbao.common.Constants.LIVE_FUNC_LINK_MIC; +import static com.yunbao.common.Constants.LIVE_FUNC_MIC; +import static com.yunbao.common.Constants.LIVE_FUNC_RANDOM_PK; +import static com.yunbao.common.Constants.LIVE_FUNC_WISHLIST; +import static com.yunbao.common.Constants.LIVE_FUNC_WKS; +import static com.yunbao.common.Constants.LIVE_FUNC_ZG; +import static com.yunbao.common.Constants.LIVE_FUNC_ZSLK; +import static com.yunbao.common.Constants.LIVE_ROBOT; import android.os.Bundle; import android.view.Gravity; @@ -10,10 +20,11 @@ import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; +import com.lxj.xpopup.XPopup; import com.yunbao.common.Constants; import com.yunbao.common.dialog.AbsDialogFragment; -import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.views.LiveAnchorMessageCustomPopup; import com.yunbao.live.R; import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.interfaces.LiveFunctionClickListener; @@ -92,6 +103,8 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements mMultiPkView.setOnClickListener(this); mMicView.setOnClickListener(this); mRandomPk.setOnClickListener(this); + findViewById(R.id.message_linear).setOnClickListener(this); + findViewById(R.id.live_tool_robot).setOnClickListener(this); if (leave == 0) { @@ -146,9 +159,14 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements mFunctionClickListener.onClick(LIVE_FUNC_MIC); } else if (id == R.id.live_tool_random_pk) { mFunctionClickListener.onClick(LIVE_FUNC_RANDOM_PK); - }else if (id==R.id.live_tool_robot){ + } else if (id == R.id.live_tool_robot) { mFunctionClickListener.onClick(LIVE_ROBOT); dismiss(); + } else if (id == R.id.message_linear) { + new XPopup.Builder(getContext()) + .asCustom(new LiveAnchorMessageCustomPopup(getContext())) + .show(); + dismiss(); } } } From 7cb72582105e78eb72407ad9aa235285b86d4da7 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 18 Feb 2023 13:57:37 +0800 Subject: [PATCH 20/63] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E8=AE=A1=E6=97=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/dialog_live_new_function.xml | 1 + .../live/activity/LiveRyAnchorActivity.java | 1 + .../dialog/LiveNewFunctionDialogFragment.java | 61 ++++++++++++++++++- .../live/views/LiveRyAnchorViewHolder.java | 3 + 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/common/src/main/res/layout/dialog_live_new_function.xml b/common/src/main/res/layout/dialog_live_new_function.xml index 6a9271e98..bb29373b0 100644 --- a/common/src/main/res/layout/dialog_live_new_function.xml +++ b/common/src/main/res/layout/dialog_live_new_function.xml @@ -30,6 +30,7 @@ app:cardElevation="0dp" /> Date: Sat, 18 Feb 2023 15:01:16 +0800 Subject: [PATCH 21/63] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=B4=E6=92=AD?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=92=8C=E7=9B=B4=E6=92=AD=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/layout/dialog_live_new_function.xml | 24 ++++++++++++++++++ .../res/mipmap-xxhdpi/live_more_icon_task.png | Bin 0 -> 22368 bytes common/src/main/res/values-en/strings.xml | 1 + common/src/main/res/values/strings.xml | 1 + .../dialog/LiveNewFunctionDialogFragment.java | 9 +++++++ 5 files changed, 35 insertions(+) create mode 100644 common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png diff --git a/common/src/main/res/layout/dialog_live_new_function.xml b/common/src/main/res/layout/dialog_live_new_function.xml index bb29373b0..431285898 100644 --- a/common/src/main/res/layout/dialog_live_new_function.xml +++ b/common/src/main/res/layout/dialog_live_new_function.xml @@ -45,6 +45,7 @@ android:layout_weight="1" /> + + + + + + + + diff --git a/common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png b/common/src/main/res/mipmap-xxhdpi/live_more_icon_task.png new file mode 100644 index 0000000000000000000000000000000000000000..6265b8b3aa48d5220d1557bfcdd928c8ee7af20d GIT binary patch literal 22368 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 z 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 phone Broadcast Click To View + Anchor Task diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index af39ae8b1..9fc8b1987 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1026,4 +1026,5 @@ 手機號 開播數據 點擊查看 + 主播任務 diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java index dc0bbe21e..f28434947 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java @@ -109,6 +109,8 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements mMicView.setOnClickListener(this); mRandomPk.setOnClickListener(this); findViewById(R.id.message_linear).setOnClickListener(this); + findViewById(R.id.broadcast_data).setOnClickListener(this); + findViewById(R.id.anchor_task).setOnClickListener(this); findViewById(R.id.live_tool_robot).setOnClickListener(this); @@ -174,6 +176,13 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements .asCustom(new LiveAnchorMessageCustomPopup(getContext())) .show(); dismiss(); + } else if (id == R.id.broadcast_data) { + //主播数据 + new LiveDataInfoDialog(mContext).showDialog(); + dismiss(); + } else if (id == R.id.anchor_task) { + //主播任务 + new LiveTaskDialog(mContext).showDialog(); } } From 1d66a9b7fbd3dde8fd49f6ab33458aec561277f3 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Mon, 20 Feb 2023 16:43:36 +0800 Subject: [PATCH 22/63] =?UTF-8?q?=E4=B8=BB=E6=92=AD=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/drawable/selector_protocol_check.xml | 5 +++ .../res/mipmap-xxhdpi/icon_protocol_check.png | Bin 0 -> 1595 bytes .../mipmap-xxhdpi/icon_protocol_uncheck.png | Bin 0 -> 1147 bytes common/src/main/res/values-en/strings.xml | 3 ++ common/src/main/res/values/strings.xml | 3 ++ config.gradle | 4 +-- .../live/views/LiveNewReadyRyViewHolder.java | 22 ++++++++++-- .../main/res/layout/view_new_live_ready.xml | 33 ++++++++++++++++-- 8 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 common/src/main/res/drawable/selector_protocol_check.xml create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png create mode 100644 common/src/main/res/mipmap-xxhdpi/icon_protocol_uncheck.png diff --git a/common/src/main/res/drawable/selector_protocol_check.xml b/common/src/main/res/drawable/selector_protocol_check.xml new file mode 100644 index 000000000..a4042e2f1 --- /dev/null +++ b/common/src/main/res/drawable/selector_protocol_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png b/common/src/main/res/mipmap-xxhdpi/icon_protocol_check.png new file mode 100644 index 0000000000000000000000000000000000000000..07d294e380824694152ae79cdb7261ba425c749b GIT binary patch literal 1595 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 Broadcast Click To View Anchor Task + I have read and agreed to the + Please read and agree to the PDLIVE Host Agreement + PDLIVE Host Agreement diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 9fc8b1987..0d846e4e7 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1027,4 +1027,7 @@ 開播數據 點擊查看 主播任務 + 我已閱讀並同意 + 請閱讀並同意《PDLIVE主播協議》 + 《PDLIVE主播協議》 diff --git a/config.gradle b/config.gradle index 00ea7a5b8..d755abbee 100644 --- a/config.gradle +++ b/config.gradle @@ -9,9 +9,9 @@ ext { ] manifestPlaceholders = [ //正式 -// serverHost : "https://napi.yaoulive.com", + serverHost : "https://napi.yaoulive.com", //测试 - serverHost : "https://ceshi.yaoulive.com", +// serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", diff --git a/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java index 9312232bc..71f803ca0 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java @@ -8,6 +8,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; +import android.text.Html; import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -76,7 +77,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl private EditText mEditTitle; private ProcessImageUtil mImageUtil; private File mAvatarFile; - private TextView mLiveClass; + private TextView mLiveClass, anchorAgreement; private TextView mLiveTypeTextView, liveClarity;//房间类型TextView private TextView mLiveWishListTextView;//心愿单TextView private int mLiveClassID;//直播频道id @@ -88,9 +89,10 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl private LiveClassBean classBean; private FaceManager manager; private TextView faceTextView;//提示人脸未检测到的TextView - private ImageView imgClarity; + private ImageView imgClarity, selectorProtocol; private int selectClarity = 1; private LiveOpenCustomPopup liveOpenCustomPopup; + private boolean selector = false; public LiveNewReadyRyViewHolder(Context context, ViewGroup parentView, int liveSdk) { super(context, parentView, liveSdk); @@ -112,7 +114,9 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl public void init() { mRootView = (ConstraintLayout) findViewById(R.id.traceroute_rootview); imgClarity = (ImageView) findViewById(R.id.img_clarity); + selectorProtocol = (ImageView) findViewById(R.id.selector_protocol); liveClarity = (TextView) findViewById(R.id.live_clarity); + anchorAgreement = (TextView) findViewById(R.id.anchor_agreement); mRootView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -121,6 +125,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } }); + mAvatar = (ConstraintLayout) findViewById(R.id.avatar); mAvatar.setOnClickListener(this); UserBean u = CommonAppConfig.getInstance().getUserBean(); @@ -271,6 +276,19 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl .asCustom(liveClarityCustomPopup) .show(); }); + String keywordHtml2 = "" + mContext.getString(R.string.anchor_hint) + ""; + String contextHtml = "" + mContext.getString(R.string.anchor_agreement) + ""; + anchorAgreement.setText(Html.fromHtml(contextHtml + keywordHtml2)); + selectorProtocol.setPressed(true); + selectorProtocol.setSelected(true); + selector = selectorProtocol.isSelected(); + selectorProtocol.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + selector = !selector; + selectorProtocol.setSelected(selector); + } + }); } private void setSelectClarity(int selectClarity) { diff --git a/live/src/main/res/layout/view_new_live_ready.xml b/live/src/main/res/layout/view_new_live_ready.xml index eadb2a80c..43961a227 100644 --- a/live/src/main/res/layout/view_new_live_ready.xml +++ b/live/src/main/res/layout/view_new_live_ready.xml @@ -267,7 +267,7 @@ android:layout_width="30dp" android:layout_height="30dp" android:layout_marginStart="50dp" - android:layout_marginBottom="53dp" + android:layout_marginBottom="83dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:srcCompat="@mipmap/icon_beauty" /> @@ -276,7 +276,7 @@ android:id="@+id/btn_start_live" android:layout_width="189dp" android:layout_height="42dp" - android:layout_marginBottom="47dp" + android:layout_marginBottom="77dp" android:background="@drawable/bg_live_ready_btn" android:text="@string/live_start" android:textColor="@color/white" @@ -303,9 +303,36 @@ android:layout_width="30dp" android:layout_height="30dp" android:layout_marginEnd="50dp" - android:layout_marginBottom="53dp" + android:layout_marginBottom="83dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:srcCompat="@mipmap/icon_robot" /> + + + + + + + \ No newline at end of file From cca8f43f61a2e25dad16b5fbfeab9d3c6dcce110 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 20 Feb 2023 17:16:37 +0800 Subject: [PATCH 23/63] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/bean/LiveTaskModel.java | 234 +++++++++++++++--- .../com/yunbao/common/http/PDLiveApi.java | 10 + .../common/http/live/LiveNetManager.java | 17 ++ .../live/activity/LiveRyAnchorActivity.java | 9 +- .../live/adapter/LiveTaskRecyclerAdapter.java | 28 ++- .../dialog/LiveNewFunctionDialogFragment.java | 10 +- .../yunbao/live/dialog/LiveTaskDialog.java | 128 +++++++--- live/src/main/res/layout/dialog_live_task.xml | 7 +- live/src/main/res/values-en/strings.xml | 2 + live/src/main/res/values/strings.xml | 2 + 10 files changed, 357 insertions(+), 90 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java index b159fcad1..1ead7dd8c 100644 --- a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java +++ b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java @@ -1,17 +1,23 @@ package com.yunbao.common.bean; +import com.google.gson.annotations.SerializedName; + +import java.io.Serializable; +import java.util.List; + public class LiveTaskModel extends BaseModel { - public static final int TASK_TYPE_TIP=0; - public static final int TASK_TYPE_ITEM=1; + public static final int TASK_TYPE_TIP = 0; + public static final int TASK_TYPE_ITEM = 1; int type; - String title; - int hot; - int xp; - int taskTarget; - int task; - boolean complete; + @SerializedName("new") + NewUser user; + @SerializedName("list") + List> list; + + public LiveTaskModel() { + } public int getType() { return type; @@ -21,51 +27,205 @@ public class LiveTaskModel extends BaseModel { this.type = type; } - public String getTitle() { - return title; + public NewUser getUser() { + return user; } - public void setTitle(String title) { - this.title = title; + public void setUser(NewUser user) { + this.user = user; } - public int getHot() { - return hot; + public List> getList() { + return list; } - public void setHot(int hot) { - this.hot = hot; + public void setList(List> list) { + this.list = list; } - public int getXp() { - return xp; + @Override + public String toString() { + return "LiveTaskModel{" + + "type=" + type + + ", user=" + user + + ", list=" + list + + '}'; } - public void setXp(int xp) { - this.xp = xp; + public static class NewUser { + @SerializedName("isNew") + private int isNew; + @SerializedName("endTime") + private String endTime; + + public NewUser() { + } + + public boolean isNew() { + return isNew == 1; + } + + public void setNew(int aNew) { + isNew = aNew; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + @Override + public String toString() { + return "NewUser{" + + "isNew=" + isNew + + ", endTime='" + endTime + '\'' + + '}'; + } } - public int getTaskTarget() { - return taskTarget; - } + public static class Task implements Serializable { + @SerializedName("id") + private int id; + @SerializedName("type") + private int type; + @SerializedName("task_type") + private int taskType; + @SerializedName("task_name") + private String taskName; + @SerializedName("task_num") + private int taskNum; + @SerializedName("hot") + private long hot; + @SerializedName("exp") + private long exp; + @SerializedName("new_hot") + private long newUserHot; + @SerializedName("new_exp") + private long newUserExp; + @SerializedName("sort") + private int sort; + @SerializedName("status") + private int status; - public void setTaskTarget(int taskTarget) { - this.taskTarget = taskTarget; - } + private int nowValue; - public int getTask() { - return task; - } + public Task() { + } - public void setTask(int task) { - this.task = task; - } + public int getId() { + return id; + } - public boolean isComplete() { - return complete; - } + public void setId(int id) { + this.id = id; + } - public void setComplete(boolean complete) { - this.complete = complete; + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public int getTaskType() { + return taskType; + } + + public void setTaskType(int taskType) { + this.taskType = taskType; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public int getTaskNum() { + return taskNum; + } + + public void setTaskNum(int taskNum) { + this.taskNum = taskNum; + } + + public long getHot() { + return hot; + } + + public void setHot(long hot) { + this.hot = hot; + } + + public long getExp() { + return exp; + } + + public void setExp(long exp) { + this.exp = exp; + } + + public long getNewUserHot() { + return newUserHot; + } + + public void setNewUserHot(long newUserHot) { + this.newUserHot = newUserHot; + } + + public long getNewUserExp() { + return newUserExp; + } + + public void setNewUserExp(long newUserExp) { + this.newUserExp = newUserExp; + } + + public int getSort() { + return sort; + } + + public void setSort(int sort) { + this.sort = sort; + } + + public boolean getStatus() { + return status==1; + } + + public void setStatus(int status) { + this.status = status; + } + + public int getNowValue() { + return nowValue; + } + + public void setNowValue(int nowValue) { + this.nowValue = nowValue; + } + + @Override + public String toString() { + return "Task{" + + "id=" + id + + ", type=" + type + + ", taskType=" + taskType + + ", taskName='" + taskName + '\'' + + ", taskNum=" + taskNum + + ", hot=" + hot + + ", exp=" + exp + + ", newUserHot=" + newUserHot + + ", newUserExp=" + newUserExp + + ", sort=" + sort + + ", status=" + status + + '}'; + } } } diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index fc686a611..f90f9e761 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -17,6 +17,7 @@ import com.yunbao.common.bean.LiveAiRobotBean; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; import com.yunbao.common.bean.LiveStetUpStatusModel; +import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.bean.MsgSwitchDetailModel; import com.yunbao.common.bean.NewPeopleInfo; import com.yunbao.common.bean.NobleRankHideUserListModel; @@ -548,4 +549,13 @@ public interface PDLiveApi { Observable>> getListInfo( @Query("type") String type, @Query("p") int p); + + /** + * 获取主播任务列表 + */ + @GET("/api/public/?service=Live.getLiveTaskStatus") + Observable> getLiveTaskList( + @Query("type") int type, + @Query("liveuid") String liveUid + ); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index fcdcbb48f..1bb664ab2 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -19,6 +19,7 @@ import com.yunbao.common.bean.LiveAiRobotBean; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; import com.yunbao.common.bean.LiveStetUpStatusModel; +import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.PkRankBean; @@ -1088,6 +1089,22 @@ public class LiveNetManager { }).isDisposed(); } + /** + * 获取直播任务 + * @param type 1 直播任务 2粉丝任务 + */ + public void getLiveTask(int type, String liveUid, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .getLiveTaskList(type, liveUid) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + callback.onSuccess(listResponseModel.getData().getInfo()); + }, throwable -> { + callback.onError(throwable.getMessage()); + }).isDisposed(); + } + /** * 直播间取消网络请求 */ 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 9ea7f5961..9b031e2c4 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -673,6 +673,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } bundle.putBoolean(Constants.HAS_GAME, hasGame); bundle.putInt("leave", leave); + bundle.putString("liveUid", mLiveUid); bundle.putBoolean("isPk", isDRPK == 1 || PKing || mLivePushViewHolder.isPking()); bundle.putLong("liveTime", mLiveAnchorViewHolder.getmAnchorLiveTime()); bundle.putBoolean(Constants.OPEN_FLASH, mLivePushViewHolder != null && mLivePushViewHolder.isFlashOpen()); @@ -938,9 +939,11 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl if (code == 0) { JSONObject obj = JSON.parseObject(info[0]); JSONObject datas = obj.getJSONObject("data"); - - SocketRyChatUtil.closeLive(datas.getString("votes"), datas.getString("length"), datas.getString("nums"), mLiveUid, mSocketRyClient); - + try { + SocketRyChatUtil.closeLive(datas.getString("votes"), datas.getString("length"), datas.getString("nums"), mLiveUid, mSocketRyClient); + } catch (Exception e) { + e.printStackTrace(); + } if (mLiveEndViewHolder == null) { mLiveEndViewHolder = new LiveEndViewHolder(mContext, mRoot, mLiveBean.getUid()); diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java index c9d1d4ac2..86b1408b8 100644 --- a/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java @@ -18,18 +18,19 @@ import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; +import java.util.ArrayList; import java.util.List; public class LiveTaskRecyclerAdapter extends RecyclerView.Adapter { private Context mContext; - private List tasks; + private List tasks = new ArrayList<>(); public LiveTaskRecyclerAdapter(Context mContext) { this.mContext = mContext; } - public void setTasks(List tasks) { + public void setTasks(List tasks) { this.tasks = tasks; notifyDataSetChanged(); } @@ -91,15 +92,26 @@ public class LiveTaskRecyclerAdapter extends RecyclerView.Adapter"+ WordUtil.getString(R.string.live_task_item_hot) +"  " + task.getHot() + "")); - xp.setText(Html.fromHtml(""+WordUtil.getString(R.string.live_task_item_xp)+"  " + task.getXp() + "")); + if (task.getStatus() || task.getNowValue() >= task.getTaskNum()) { + task.setNowValue(task.getTaskNum()); + } + title.setText(String.format("%s (%s/%s)", + task.getTaskName(), + task.getNowValue(), + task.getTaskNum()) + ); + if (task.getNowValue() == task.getTaskNum()) { + task.setStatus(1); + } + complete.setText(task.getStatus() ? R.string.live_task_item_complete_true : R.string.live_task_item_complete_false); + complete.setBackgroundResource(task.getStatus() ? R.drawable.background_6cbe53 : R.drawable.background_595959); + hot.setText(Html.fromHtml("" + WordUtil.getString(R.string.live_task_item_hot) + "  " + task.getHot() + "")); + xp.setText(Html.fromHtml("" + WordUtil.getString(R.string.live_task_item_xp) + "  " + task.getExp() + "")); } } } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java index f28434947..bf647b326 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java @@ -46,6 +46,8 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements private boolean isPk; private TextView mLiveTimeTextView;//主播的直播时长 + private String liveUid; + // boolean isRy = false; @Override protected int getLayoutId() { @@ -86,6 +88,7 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements isPk = bundle.getBoolean("isPk", false); // isRy = bundle.getBoolean("isRy", false); mAnchorLiveTime = bundle.getLong("liveTime"); + liveUid = bundle.getString("liveUid"); } mWishView = findViewById(R.id.live_tool_wish); mPrankView = findViewById(R.id.live_tool_prank); @@ -182,13 +185,18 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements dismiss(); } else if (id == R.id.anchor_task) { //主播任务 - new LiveTaskDialog(mContext).showDialog(); + taskDialog = new LiveTaskDialog(mContext); + taskDialog.setLiveUid(liveUid); + taskDialog.updateLiveTimer(mAnchorLiveTime); + taskDialog.showDialog(); + } } private final int WHAT_ANCHOR_LIVE_TIME = 3;//直播间主播计时 private LiveRoomHandler mLiveRoomHandler; private long mAnchorLiveTime;//主播直播时间 + private LiveTaskDialog taskDialog; /** * 主播显示直播时间 diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java index f044839df..34354c5b9 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -2,6 +2,7 @@ package com.yunbao.live.dialog; import android.content.Context; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -22,6 +23,9 @@ import com.google.android.material.tabs.TabLayoutMediator; import com.lxj.xpopup.XPopup; import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.LiveTaskRecyclerAdapter; @@ -46,11 +50,12 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { private Context mContext; + String liveUid; + int liveTimer; public LiveTaskDialog(Context context) { super(context); this.mContext = context; - } @Override @@ -69,6 +74,9 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { initView(); } + public void setLiveUid(String liveUid) { + this.liveUid = liveUid; + } private void initView() { newStarTime = findViewById(R.id.task_new_star_time); @@ -77,11 +85,8 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { tipImg = findViewById(R.id.live_task_tip); tabLayout = findViewById(R.id.live_task_menu); viewPager = findViewById(R.id.live_task_viewpager); - - newStarTime.setText("新秀主播時效截止至 2023/1/01 12:00"); - initImgView(); - initTabLayout(); + createTask(); } @@ -112,7 +117,9 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { public Fragment createFragment(int position) { TaskFragment fragment = new TaskFragment(); Bundle bundle = new Bundle(); - bundle.putInt("position", position); + bundle.putInt("position", position + 1); + bundle.putInt("liveTimer", liveTimer); + bundle.putString("liveUid", liveUid); fragment.setArguments(bundle); return fragment; } @@ -133,12 +140,47 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { mediator.attach(); } + private void updateMainUi(LiveTaskModel.NewUser task) { + if (task.isNew()) { + newStarImg.setVisibility(VISIBLE); + newStarTime.setVisibility(VISIBLE); + newStarTime.setText(task.getEndTime()); + } + } + + + private void createTask() { + LiveNetManager.get(getContext()) + .getLiveTask(1, liveUid, new HttpCallback() { + @Override + public void onSuccess(LiveTaskModel data) { + Log.i("直播任务", "onSuccess: " + data); + updateMainUi(data.getUser()); + initTabLayout(); + } + + @Override + public void onError(String error) { + Log.e("直播任务", "onError: " + error); + } + }); + } + + public void updateLiveTimer(long time) { + liveTimer = (int) ((time % (1000 * 60 * 60)) / (1000 * 60)); + /*TaskFragment fragment = (TaskFragment) ((AppCompatActivity) mContext).getSupportFragmentManager().findFragmentByTag("f0"); + if (fragment != null) { + fragment.adapter.updateTimer(liveTimer); + }*/ + } public static class TaskFragment extends Fragment { private RecyclerView taskList; private LiveTaskRecyclerAdapter adapter; - private List tasks; private int position; + private int liveTimer; + private String liveUid; + @Nullable @Override @@ -150,9 +192,11 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); this.position = getArguments().getInt("position", -1); + this.liveTimer = getArguments().getInt("liveTimer", -1); + this.liveUid = getArguments().getString("liveUid", "0"); taskList = (RecyclerView) view; initTaskList(); - createTask(); + createTask(position); } private void initTaskList() { @@ -161,39 +205,45 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { taskList.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false)); } - private void createTask() { - tasks = new ArrayList<>(); - for (int i = 0; i < 4; i++) { - LiveTaskModel model = new LiveTaskModel(); - if (i == 0) { - model.setType(LiveTaskModel.TASK_TYPE_TIP); - model.setTitle(WordUtil.getString(R.string.live_task_no1)); - } else { - model.setType(LiveTaskModel.TASK_TYPE_ITEM); - model.setTitle("开播测试标题"); - } - model.setTask(30); - model.setXp(3000); - model.setHot(5000); - tasks.add(model); + private void createTask(int type) { + LiveNetManager.get(getContext()) + .getLiveTask(type, liveUid, new HttpCallback() { + boolean debug = true; - } - for (int i = 0; i < 4; i++) { - LiveTaskModel model = new LiveTaskModel(); - if (i == 0) { - model.setType(LiveTaskModel.TASK_TYPE_TIP); - model.setTitle(WordUtil.getString(R.string.live_task_no2)); - } else { - model.setType(LiveTaskModel.TASK_TYPE_ITEM); - model.setTitle("PK测试标题"); - } - model.setTask(30); - model.setXp(3000); - model.setHot(5000); - tasks.add(model); + @Override + public void onSuccess(LiveTaskModel data) { + Log.i("直播任务", "onSuccess: " + data); + LiveTaskModel.Task task = new LiveTaskModel.Task(); + LiveTaskModel.Task task2 = new LiveTaskModel.Task(); + if (type == 1) { + task.setTaskName(WordUtil.getString(R.string.live_task_no1)); + task2.setTaskName(WordUtil.getString(R.string.live_task_no2)); + } else { + task.setTaskName(WordUtil.getString(R.string.live_task_fans_no1)); + task2.setTaskName(WordUtil.getString(R.string.live_task_fans_no2)); + } + task.setType(LiveTaskModel.TASK_TYPE_TIP); + task2.setType(LiveTaskModel.TASK_TYPE_TIP); + List task1 = new ArrayList<>(); + task1.add(task); + task1.addAll(data.getList().get(0)); + if (type == 1) { + for (LiveTaskModel.Task tk : task1) { + tk.setNowValue(liveTimer); + } + task1.get(1).setTaskNum(3); + task1.get(1).setTaskName("*" + task1.get(1).getTaskName()); + } + task1.add(task2); + task1.addAll(data.getList().get(1)); + adapter.setTasks(task1); + } - } - adapter.setTasks(tasks); + @Override + public void onError(String error) { + Log.e("直播任务", "onError: " + error); + } + }); } } diff --git a/live/src/main/res/layout/dialog_live_task.xml b/live/src/main/res/layout/dialog_live_task.xml index 02e632c14..c32f64b03 100644 --- a/live/src/main/res/layout/dialog_live_task.xml +++ b/live/src/main/res/layout/dialog_live_task.xml @@ -23,10 +23,11 @@ android:id="@+id/task_new_star_time" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="14dp" android:layout_marginTop="5dp" + android:layout_marginEnd="14dp" android:textColor="#FFFFFF" android:textSize="12sp" + android:visibility="invisible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -37,6 +38,7 @@ android:layout_marginTop="5dp" android:paddingTop="5dp" android:scaleType="centerCrop" + android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/task_new_star_time" @@ -78,6 +80,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/live_task_banner2" tools:srcCompat="@mipmap/icon_guize" /> + + app:layout_constraintTop_toBottomOf="@+id/live_task_menu" /> \ No newline at end of file diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index eb96a0f00..9c055f285 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -20,6 +20,8 @@ The number of voices has reached 3, and no more can be added. 當日連續開播時長(分鐘) 當日累計PK次數(不限模式) + 當日累積新增關註粉絲 + 當日累積新增粉絲團成員 直播互動 粉絲增漲 主播任務特別說明 diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index 981f1095a..8e5e42cf3 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -51,6 +51,8 @@ PK次數已用完 當日連續開播時長(分鐘) 當日累計PK次數(不限模式) + 當日累積新增關註粉絲 + 當日累積新增粉絲團成員 直播互動 粉絲增漲 主播任務特別說明 From 5d2a246916ff4b5f45a8bc12f711dd6b9cb827f5 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Tue, 21 Feb 2023 13:46:08 +0800 Subject: [PATCH 24/63] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/bean/LiveTaskModel.java | 1 + config.gradle | 4 +- .../yunbao/live/dialog/LiveTaskDialog.java | 77 +++++++++++-------- live/src/main/res/layout/dialog_live_task.xml | 1 + 4 files changed, 51 insertions(+), 32 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java index 1ead7dd8c..27e51caa0 100644 --- a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java +++ b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java @@ -110,6 +110,7 @@ public class LiveTaskModel extends BaseModel { @SerializedName("status") private int status; + @SerializedName("now_num") private int nowValue; public Task() { diff --git a/config.gradle b/config.gradle index d755abbee..00ea7a5b8 100644 --- a/config.gradle +++ b/config.gradle @@ -9,9 +9,9 @@ ext { ] manifestPlaceholders = [ //正式 - serverHost : "https://napi.yaoulive.com", +// serverHost : "https://napi.yaoulive.com", //测试 -// serverHost : "https://ceshi.yaoulive.com", + serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java index 34354c5b9..c95b5e7af 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -1,5 +1,6 @@ package com.yunbao.live.dialog; +import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.util.Log; @@ -25,7 +26,7 @@ import com.yunbao.common.bean.LiveTaskModel; import com.yunbao.common.dialog.AbsDialogPopupWindow; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; -import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.LiveTaskRecyclerAdapter; @@ -97,7 +98,7 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { tipImg.setOnClickListener(v -> new LiveTaskInfoDialog(mContext).showDialog()); } - private void initTabLayout() { + private void initTabLayout(LiveTaskModel model) { TabLayout.Tab liveTaskTag = tabLayout.newTab(); TabLayout.Tab userTaskTag = tabLayout.newTab(); liveTaskTag.setText(R.string.live_task_tab1); @@ -120,6 +121,7 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { bundle.putInt("position", position + 1); bundle.putInt("liveTimer", liveTimer); bundle.putString("liveUid", liveUid); + bundle.putSerializable("data", model); fragment.setArguments(bundle); return fragment; } @@ -148,20 +150,28 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { } } - + private Dialog loadDialog; private void createTask() { + loadDialog= DialogUitl.loadingDialog(getContext()); + loadDialog.show(); LiveNetManager.get(getContext()) .getLiveTask(1, liveUid, new HttpCallback() { @Override public void onSuccess(LiveTaskModel data) { Log.i("直播任务", "onSuccess: " + data); updateMainUi(data.getUser()); - initTabLayout(); + initTabLayout(data); + if(loadDialog!=null){ + loadDialog.dismiss(); + } } @Override public void onError(String error) { Log.e("直播任务", "onError: " + error); + if(loadDialog!=null){ + loadDialog.dismiss(); + } } }); } @@ -196,7 +206,11 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { this.liveUid = getArguments().getString("liveUid", "0"); taskList = (RecyclerView) view; initTaskList(); - createTask(position); + if(position==2) { + createTask(position); + }else{ + update((LiveTaskModel) getArguments().getSerializable("data"),1); + } } private void initTaskList() { @@ -208,35 +222,11 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { private void createTask(int type) { LiveNetManager.get(getContext()) .getLiveTask(type, liveUid, new HttpCallback() { - boolean debug = true; @Override public void onSuccess(LiveTaskModel data) { Log.i("直播任务", "onSuccess: " + data); - LiveTaskModel.Task task = new LiveTaskModel.Task(); - LiveTaskModel.Task task2 = new LiveTaskModel.Task(); - if (type == 1) { - task.setTaskName(WordUtil.getString(R.string.live_task_no1)); - task2.setTaskName(WordUtil.getString(R.string.live_task_no2)); - } else { - task.setTaskName(WordUtil.getString(R.string.live_task_fans_no1)); - task2.setTaskName(WordUtil.getString(R.string.live_task_fans_no2)); - } - task.setType(LiveTaskModel.TASK_TYPE_TIP); - task2.setType(LiveTaskModel.TASK_TYPE_TIP); - List task1 = new ArrayList<>(); - task1.add(task); - task1.addAll(data.getList().get(0)); - if (type == 1) { - for (LiveTaskModel.Task tk : task1) { - tk.setNowValue(liveTimer); - } - task1.get(1).setTaskNum(3); - task1.get(1).setTaskName("*" + task1.get(1).getTaskName()); - } - task1.add(task2); - task1.addAll(data.getList().get(1)); - adapter.setTasks(task1); + update(data, type); } @Override @@ -246,6 +236,33 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { }); } + private void update(LiveTaskModel data, int type) { + LiveTaskModel.Task task = new LiveTaskModel.Task(); + LiveTaskModel.Task task2 = new LiveTaskModel.Task(); + if (type == 1) { + task.setTaskName(WordUtil.getString(R.string.live_task_no1)); + task2.setTaskName(WordUtil.getString(R.string.live_task_no2)); + } else { + task.setTaskName(WordUtil.getString(R.string.live_task_fans_no1)); + task2.setTaskName(WordUtil.getString(R.string.live_task_fans_no2)); + } + task.setType(LiveTaskModel.TASK_TYPE_TIP); + task2.setType(LiveTaskModel.TASK_TYPE_TIP); + List task1 = new ArrayList<>(); + task1.add(task); + task1.addAll(data.getList().get(0)); + if (type == 1) { + for (LiveTaskModel.Task tk : task1) { + tk.setNowValue(liveTimer); + } + task1.get(1).setTaskNum(3); + task1.get(1).setTaskName("*" + task1.get(1).getTaskName()); + } + task1.add(task2); + task1.addAll(data.getList().get(1)); + adapter.setTasks(task1); + } + } } diff --git a/live/src/main/res/layout/dialog_live_task.xml b/live/src/main/res/layout/dialog_live_task.xml index c32f64b03..00747b60d 100644 --- a/live/src/main/res/layout/dialog_live_task.xml +++ b/live/src/main/res/layout/dialog_live_task.xml @@ -85,6 +85,7 @@ android:id="@+id/live_task_viewpager" android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginTop="5dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" From bf4710470fa96cbf853bab592c257368e6735deb Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Tue, 21 Feb 2023 16:29:50 +0800 Subject: [PATCH 25/63] =?UTF-8?q?=E7=9B=B4=E6=92=AD=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunbao/common/bean/LiveDataInfoModel.java | 106 ++++++++++++++++++ .../com/yunbao/common/bean/LiveTaskModel.java | 29 ++++- .../com/yunbao/common/http/PDLiveApi.java | 8 ++ .../common/http/live/LiveNetManager.java | 15 +++ common/src/main/res/values-en/strings.xml | 10 ++ common/src/main/res/values/strings.xml | 10 ++ .../adapter/LiveDataInfoRecyclerAdapter.java | 3 +- .../yunbao/live/bean/LiveDataInfoModel.java | 14 +++ .../live/dialog/LiveDataInfoDialog.java | 53 +++++++-- .../dialog/LiveNewFunctionDialogFragment.java | 2 +- live/src/main/res/values-en/strings.xml | 30 ++--- 11 files changed, 251 insertions(+), 29 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/bean/LiveDataInfoModel.java diff --git a/common/src/main/java/com/yunbao/common/bean/LiveDataInfoModel.java b/common/src/main/java/com/yunbao/common/bean/LiveDataInfoModel.java new file mode 100644 index 000000000..a6c3b203e --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/LiveDataInfoModel.java @@ -0,0 +1,106 @@ +package com.yunbao.common.bean; + +import com.google.gson.annotations.SerializedName; + +/** + * 直播数据 + */ +public class LiveDataInfoModel extends BaseModel{ + @SerializedName("totalCoin") + private long totalCoin;//钻石数量 + @SerializedName("totalGold") + private long totalGold;//金币数量 + @SerializedName("acceptNum") + private long acceptNum;//送礼人数 + @SerializedName("enterNum") + private long enterNum;//进场人数 + @SerializedName("attentionNum") + private long attentionNum;//关注人数 + @SerializedName("fanGroupNum") + private long fanGroupNum;//粉丝团人数 + @SerializedName("attentionNumRate") + private double attentionNumRate;//关注转化率 + @SerializedName("fanGroupNumRate") + private double fanGroupNumRate;//粉丝团转化率 + + public LiveDataInfoModel() { + } + + public long getTotalCoin() { + return totalCoin; + } + + public void setTotalCoin(long totalCoin) { + this.totalCoin = totalCoin; + } + + public long getTotalGold() { + return totalGold; + } + + public void setTotalGold(long totalGold) { + this.totalGold = totalGold; + } + + public long getAcceptNum() { + return acceptNum; + } + + public void setAcceptNum(long acceptNum) { + this.acceptNum = acceptNum; + } + + public long getEnterNum() { + return enterNum; + } + + public void setEnterNum(long enterNum) { + this.enterNum = enterNum; + } + + public long getAttentionNum() { + return attentionNum; + } + + public void setAttentionNum(long attentionNum) { + this.attentionNum = attentionNum; + } + + public long getFanGroupNum() { + return fanGroupNum; + } + + public void setFanGroupNum(long fanGroupNum) { + this.fanGroupNum = fanGroupNum; + } + + public double getAttentionNumRate() { + return attentionNumRate; + } + + public void setAttentionNumRate(double attentionNumRate) { + this.attentionNumRate = attentionNumRate; + } + + public double getFanGroupNumRate() { + return fanGroupNumRate; + } + + public void setFanGroupNumRate(double fanGroupNumRate) { + this.fanGroupNumRate = fanGroupNumRate; + } + + @Override + public String toString() { + return "LiveDataInfoModel{" + + "totalCoin=" + totalCoin + + ", totalGold=" + totalGold + + ", acceptNum=" + acceptNum + + ", enterNum=" + enterNum + + ", attentionNum=" + attentionNum + + ", fanGroupNum=" + fanGroupNum + + ", attentionNumRate=" + attentionNumRate + + ", fanGroupNumRate=" + fanGroupNumRate + + '}'; + } +} diff --git a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java index 27e51caa0..401be64fc 100644 --- a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java +++ b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java @@ -2,10 +2,19 @@ package com.yunbao.common.bean; import com.google.gson.annotations.SerializedName; +import com.yunbao.common.R; +import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.WordUtil; import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; +import java.util.Locale; +/** + * 直播任务 + */ public class LiveTaskModel extends BaseModel { public static final int TASK_TYPE_TIP = 0; public static final int TASK_TYPE_ITEM = 1; @@ -36,6 +45,13 @@ public class LiveTaskModel extends BaseModel { } public List> getList() { + if (user != null && user.isNew()) { + for (List tasks : list) { + for (Task task : tasks) { + task.isNewUser = true; + } + } + } return list; } @@ -70,6 +86,9 @@ public class LiveTaskModel extends BaseModel { } public String getEndTime() { + if (!StringUtil.isEmpty(endTime)) { + endTime = WordUtil.getString(R.string.live_task_new_user_timer) + new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.getDefault()).format(new Date(Long.parseLong(endTime) * 1000)); + } return endTime; } @@ -113,6 +132,8 @@ public class LiveTaskModel extends BaseModel { @SerializedName("now_num") private int nowValue; + private boolean isNewUser = false; + public Task() { } @@ -157,6 +178,9 @@ public class LiveTaskModel extends BaseModel { } public long getHot() { + if (isNewUser) { + hot = newUserHot; + } return hot; } @@ -165,6 +189,9 @@ public class LiveTaskModel extends BaseModel { } public long getExp() { + if (isNewUser) { + exp = newUserExp; + } return exp; } @@ -197,7 +224,7 @@ public class LiveTaskModel extends BaseModel { } public boolean getStatus() { - return status==1; + return status == 1; } public void setStatus(int status) { diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index f90f9e761..3961dbefa 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -14,6 +14,7 @@ import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.LinkMicUserBeanV2; import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.bean.LiveAiRobotBean; +import com.yunbao.common.bean.LiveDataInfoModel; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; import com.yunbao.common.bean.LiveStetUpStatusModel; @@ -558,4 +559,11 @@ public interface PDLiveApi { @Query("type") int type, @Query("liveuid") String liveUid ); + /** + * 获取直播数据 + */ + @GET("/api/public/?service=Live.getLiveStatisticalData") + Observable> getLiveDataInfo( + @Query("liveuid") String liveUid + ); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index 1bb664ab2..e3a23e104 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -16,6 +16,7 @@ import com.yunbao.common.bean.LinkMicUserBean; import com.yunbao.common.bean.LinkMicUserBeanV2; import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.bean.LiveAiRobotBean; +import com.yunbao.common.bean.LiveDataInfoModel; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.LiveRoomActivityBanner; import com.yunbao.common.bean.LiveStetUpStatusModel; @@ -1104,6 +1105,20 @@ public class LiveNetManager { callback.onError(throwable.getMessage()); }).isDisposed(); } + /** + * 获取直播数据 + */ + public void getLiveData(String liveUid, HttpCallback callback) { + API.get().pdLiveApi(mContext) + .getLiveDataInfo(liveUid) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + callback.onSuccess(listResponseModel.getData().getInfo()); + }, throwable -> { + callback.onError(throwable.getMessage()); + }).isDisposed(); + } /** * 直播间取消网络请求 diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index 004dcf125..e92aa3e9f 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -1009,4 +1009,14 @@ Limited ride And limited avatar frame I have read and agreed to the Please read and agree to the PDLIVE Host Agreement PDLIVE Host Agreement + The statute of limitations for new anchors expires + coin + gold + Number of gifts + Number of entry + New attention + Follow the conversion rate + New fan group + Fan group conversion rate + loading… diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 0d846e4e7..795f8a9eb 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1030,4 +1030,14 @@ 我已閱讀並同意 請閱讀並同意《PDLIVE主播協議》 《PDLIVE主播協議》 + 新秀主播時效截止至 + 鑽石收禮 + 金豆收禮 + 收禮人數 + 進場人數 + 新增關注 + 關注轉化率 + 新增粉絲團 + 粉絲團轉化率 + 加载中… diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java index 0e58c2e75..5bf22b60a 100644 --- a/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java @@ -13,11 +13,12 @@ import androidx.recyclerview.widget.RecyclerView; import com.yunbao.live.R; import com.yunbao.live.bean.LiveDataInfoModel; +import java.util.ArrayList; import java.util.List; public class LiveDataInfoRecyclerAdapter extends RecyclerView.Adapter { private Context mContext; - private List list; + private List list=new ArrayList<>(); public LiveDataInfoRecyclerAdapter(Context mContext) { this.mContext = mContext; diff --git a/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java b/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java index 80f3f283a..81a65ec4e 100644 --- a/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java +++ b/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java @@ -7,6 +7,20 @@ public class LiveDataInfoModel extends BaseModel { private String title; private String data; + public LiveDataInfoModel(String color, String title, String data) { + this.color = color; + this.title = title; + this.data = data; + } + + public LiveDataInfoModel(String title, String data) { + this.title = title; + this.data = data; + } + + public LiveDataInfoModel() { + } + public String getColor() { return color; } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java index 87392a0fb..a9ebf66b2 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java @@ -8,6 +8,9 @@ import androidx.recyclerview.widget.RecyclerView; import com.lxj.xpopup.XPopup; import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.LiveDataInfoRecyclerAdapter; import com.yunbao.live.bean.LiveDataInfoModel; @@ -21,11 +24,20 @@ public class LiveDataInfoDialog extends AbsDialogPopupWindow { private RecyclerView recyclerView; private LiveDataInfoRecyclerAdapter adapter; private List list; + private String liveUid; public LiveDataInfoDialog(@NonNull Context context) { super(context); } + public LiveDataInfoDialog(@NonNull Context context, String liveUid) { + super(context); + this.liveUid = liveUid; + } + + public void setLiveUid(String liveUid) { + this.liveUid = liveUid; + } @Override public void buildDialog(XPopup.Builder builder) { @@ -49,17 +61,36 @@ public class LiveDataInfoDialog extends AbsDialogPopupWindow { private void initData() { list = new ArrayList<>(); - for (int i = 0; i < 8; i++) { - LiveDataInfoModel model = new LiveDataInfoModel(); - if (i == 0) { - model.setColor("#00FFFF"); - } else if (i == 1) { - model.setColor("#FFF69F"); - } - model.setTitle("标题:" + i); - model.setData("数据:" + i); - list.add(model); - } + list.add(new LiveDataInfoModel("#00FFFF", WordUtil.getString(R.string.live_data_coin), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel("#FFF69F", WordUtil.getString(R.string.live_data_gold), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_accept), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_enter), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_attention), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_attention_rate), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_fan_group), WordUtil.getString(R.string.live_data_loading))); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_fan_group_rate), WordUtil.getString(R.string.live_data_loading))); adapter.setList(list); + LiveNetManager.get(getContext()) + .getLiveData(liveUid, new HttpCallback() { + @Override + public void onSuccess(com.yunbao.common.bean.LiveDataInfoModel data) { + list.clear(); + list.add(new LiveDataInfoModel("#00FFFF", WordUtil.getString(R.string.live_data_coin), data.getTotalCoin() + "")); + list.add(new LiveDataInfoModel("#FFF69F", WordUtil.getString(R.string.live_data_gold), data.getTotalGold() + "")); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_accept), data.getAcceptNum() + "")); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_enter), data.getEnterNum() + "")); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_attention), data.getAttentionNum() + "")); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_attention_rate), data.getAttentionNumRate() + "")); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_fan_group), data.getFanGroupNum() + "")); + list.add(new LiveDataInfoModel(WordUtil.getString(R.string.live_data_fan_group_rate), data.getFanGroupNumRate() + "")); + adapter.setList(list); + } + + @Override + public void onError(String error) { + + } + }); + } } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java index bf647b326..7e2468f40 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java @@ -181,7 +181,7 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements dismiss(); } else if (id == R.id.broadcast_data) { //主播数据 - new LiveDataInfoDialog(mContext).showDialog(); + new LiveDataInfoDialog(mContext, liveUid).showDialog(); dismiss(); } else if (id == R.id.anchor_task) { //主播任务 diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index 9c055f285..ab25dee3f 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -18,19 +18,19 @@ Only those who have the room code can watch Submit The number of voices has reached 3, and no more can be added. - 當日連續開播時長(分鐘) - 當日累計PK次數(不限模式) - 當日累積新增關註粉絲 - 當日累積新增粉絲團成員 - 直播互動 - 粉絲增漲 - 主播任務特別說明 - 所有主播在開播後,即可獲得一系列的當日任務,當根據相應的要求完成任務後,主播即可在第二天開播後,獲得前一天的任務獎勵。 - ● 所有任務數值將由系統進行實時計算,如因個人手機電腦設備問題、網絡問題或是沒有正常進行下播導致數據出現錯誤等問題,為此相關主播可進行聯系相關平臺工作人員或是在線客服,進行反饋,待相關部分確認後,將會再進行補償處理。\n● 所有任務數據的正常結算周期將會在每日的淩晨6點進行結算,若開播時間超過淩晨6點,將會出現獎勵無法正常結算的情況,請知悉。\n● 當主播規範分低於90時,主播任務中心的所有獎勵,將僅能獲得50%的,當主播規範分低於80以下時,將無法獲得主播任務獎勵。 - 已完成 - 未完成 - 直播熱度 - 主播經驗 - 本場直播數據統計 - 歷史數據可在主播中心查看 + Consecutive broadcast duration of the day (minutes) + PK count on the day (unlimited mode) + Accumulated new followers on that day + Cumulative new fan group members on that day + Live interaction + Fan growth + Special instructions for anchor tasks + After the broadcast, all anchors can get a series of tasks of the day. After completing the tasks according to the corresponding requirements, anchors can get the task reward of the previous day after the broadcast of the next day. + ● All task values will be calculated by the system in real time. If data errors occur due to personal, mobile, computer equipment problems, network problems or no normal downcasting, relevant anchors can contact relevant platform staff or online customer service for feedback. After confirmation by relevant part, compensation will be processed.\n● The normal settlement period of all mission data will be settled at 6:00 am every day. If the broadcast time is longer than 6:00 AM, the reward cannot be settled normally, please be noted.\n● When the anchor standard score is lower than 90, the anchor task center can only get 50% of all rewards. When the anchor standard score is lower than 80, the anchor task reward cannot be obtained. + success + incomplete + hot + exp + This live data statistics + Historical data can be viewed in the anchor center \ No newline at end of file From d6eddeb130fd73667e6ef82bb306ceba8bb63499 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Wed, 22 Feb 2023 13:50:40 +0800 Subject: [PATCH 26/63] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/live/dialog/LiveTaskDialog.java | 17 ++++++++--------- live/src/main/res/layout/dialog_live_data.xml | 11 +++++++++-- live/src/main/res/values-en/strings.xml | 1 + live/src/main/res/values/strings.xml | 1 + 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java index c95b5e7af..46d7789d9 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -151,8 +151,9 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { } private Dialog loadDialog; + private void createTask() { - loadDialog= DialogUitl.loadingDialog(getContext()); + loadDialog = DialogUitl.loadingDialog(getContext()); loadDialog.show(); LiveNetManager.get(getContext()) .getLiveTask(1, liveUid, new HttpCallback() { @@ -161,7 +162,7 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { Log.i("直播任务", "onSuccess: " + data); updateMainUi(data.getUser()); initTabLayout(data); - if(loadDialog!=null){ + if (loadDialog != null) { loadDialog.dismiss(); } } @@ -169,7 +170,7 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { @Override public void onError(String error) { Log.e("直播任务", "onError: " + error); - if(loadDialog!=null){ + if (loadDialog != null) { loadDialog.dismiss(); } } @@ -177,7 +178,7 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { } public void updateLiveTimer(long time) { - liveTimer = (int) ((time % (1000 * 60 * 60)) / (1000 * 60)); + liveTimer = (int) time / (1000 * 60); /*TaskFragment fragment = (TaskFragment) ((AppCompatActivity) mContext).getSupportFragmentManager().findFragmentByTag("f0"); if (fragment != null) { fragment.adapter.updateTimer(liveTimer); @@ -206,10 +207,10 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { this.liveUid = getArguments().getString("liveUid", "0"); taskList = (RecyclerView) view; initTaskList(); - if(position==2) { + if (position == 2) { createTask(position); - }else{ - update((LiveTaskModel) getArguments().getSerializable("data"),1); + } else { + update((LiveTaskModel) getArguments().getSerializable("data"), 1); } } @@ -255,8 +256,6 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { for (LiveTaskModel.Task tk : task1) { tk.setNowValue(liveTimer); } - task1.get(1).setTaskNum(3); - task1.get(1).setTaskName("*" + task1.get(1).getTaskName()); } task1.add(task2); task1.addAll(data.getList().get(1)); diff --git a/live/src/main/res/layout/dialog_live_data.xml b/live/src/main/res/layout/dialog_live_data.xml index d381e7a2e..d38297bab 100644 --- a/live/src/main/res/layout/dialog_live_data.xml +++ b/live/src/main/res/layout/dialog_live_data.xml @@ -62,13 +62,20 @@ android:id="@+id/live_data_list" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginBottom="20dp" android:layout_marginTop="10dp" + android:layout_marginBottom="15dp" android:overScrollMode="never" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:spanCount="2" tools:listitem="@layout/item_live_data" /> - + \ No newline at end of file diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index ab25dee3f..a33906b78 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -33,4 +33,5 @@ exp This live data statistics Historical data can be viewed in the anchor center + * Non-real-time calculation of data \ No newline at end of file diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index 8e5e42cf3..e4fb07da6 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -64,4 +64,5 @@ 主播經驗 本場直播數據統計 歷史數據可在主播中心查看 + * 人數及新增相關數據非实时计算 From 05ede89cba2bcf0305d0ff4ce3ff7fe307964987 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Wed, 22 Feb 2023 16:26:55 +0800 Subject: [PATCH 27/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=92=8C=E5=8A=A9?= =?UTF-8?q?=E6=89=8B=E7=AB=AF=E8=BF=9B=E8=A1=8CPK=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=8A=A9=E6=89=8B=E7=BB=93=E6=9D=9FPK=EF=BC=8C=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E7=AB=AF=E4=BE=9D=E6=97=A7=E6=AE=8B=E7=95=99=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E8=BF=9E=E9=BA=A6=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java | 4 ++++ .../main/java/com/yunbao/live/views/LiveRoomViewHolder.java | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) 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 26205c2d8..8aa18d885 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -4,6 +4,7 @@ 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.btn_close; import static com.yunbao.live.views.LivePushRyViewHolder.contexts; import static com.yunbao.live.views.LivePushRyViewHolder.rcrtcLiveInfo; import static com.yunbao.live.views.LivePushRyViewHolder.rtcRoom; @@ -1137,6 +1138,9 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { Log.e("ry", "退出多人OKKK" + inputStreamList.size()); isDRPK = 0; + if (btn_close != null) { + btn_close.setVisibility(View.GONE); + } for (int i = 0; i < inputStreamList.size(); i++) { //退出副房间 RCRTCEngine.getInstance().leaveOtherRoom(inputStreamList.get(i).getUserId(), true, new IRCRTCResultCallback() { diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 8c00cec5b..3a323cb35 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -3940,7 +3940,6 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis break; case UP_PK_TWO: pkUid = (String) event.getObject(); - ToastUtil.show("对方UID=" + pkUid); UpPkTwo(); break; case CHANGE_VIEW: From ba23f720eb9f95ce3a9e7261683d68bc06af0d35 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Thu, 23 Feb 2023 14:20:05 +0800 Subject: [PATCH 28/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A4=BE=E5=8C=BA?= =?UTF-8?q?=E6=B2=A1=E5=8A=9E=E6=B3=95=E9=80=81=E7=A4=BC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/main/activity/MyWebViewActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java index ce9cc40c5..8b97bf421 100644 --- a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java @@ -549,8 +549,8 @@ public class MyWebViewActivity extends AbsActivity { if (!TextUtils.isEmpty(event.getMethod())) { if (TextUtils.equals(event.getMethod(), "androidCommunityGift")) { Constants.nowPostsId = event.getPostsId(); - EncourageDialog fragment = new EncourageDialog(); + fragment.setId(event.getPostsId()); fragment.show(((MyWebViewActivity) mContext).getSupportFragmentManager(), "EncourageDialog"); } else if (TextUtils.equals(event.getMethod(), "modifyMydata")) { indexInto = event.getIndexInto(); From fdd30aa52a33b55b7396361ea0472e2e1435b6e6 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Thu, 23 Feb 2023 16:54:01 +0800 Subject: [PATCH 29/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E4=BA=BA?= =?UTF-8?q?=E8=BF=9E=E9=BA=A6=E7=AC=AC=E4=B8=89=E4=BD=8D=E9=BA=A6=E5=85=8B?= =?UTF-8?q?=E9=A3=8E=E4=BD=8D=E7=BD=AE=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- live/src/main/res/layout/view_live_room.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/live/src/main/res/layout/view_live_room.xml b/live/src/main/res/layout/view_live_room.xml index b22fafbf0..806083aca 100644 --- a/live/src/main/res/layout/view_live_room.xml +++ b/live/src/main/res/layout/view_live_room.xml @@ -2116,6 +2116,7 @@ android:layout_width="18dp" android:layout_height="18dp" android:layout_alignParentBottom="true" + android:layout_centerHorizontal="true" android:src="@mipmap/voice" /> From ea9807dcdc3614094f6606e6a1f2bc101933c3fd Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Fri, 24 Feb 2023 14:22:49 +0800 Subject: [PATCH 30/63] =?UTF-8?q?=E4=B8=BB=E6=92=AD=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/http/PDLiveApi.java | 9 +++++++ .../common/http/live/LiveNetManager.java | 25 +++++++++++++++++++ .../views/LiveAnchorMessageCustomPopup.java | 21 +++++++++++++++- .../views/LiveSystemMessageViewHolder.java | 7 ++++++ .../dialog/LiveNewFunctionDialogFragment.java | 2 +- .../live/views/LiveNewReadyRyViewHolder.java | 25 ++++++++++++++++++- 6 files changed, 86 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index 3961dbefa..5d269d74e 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -559,6 +559,7 @@ public interface PDLiveApi { @Query("type") int type, @Query("liveuid") String liveUid ); + /** * 获取直播数据 */ @@ -566,4 +567,12 @@ public interface PDLiveApi { Observable> getLiveDataInfo( @Query("liveuid") String liveUid ); + + /** + * 获取直播数据 + */ + @GET("/api/public/?service=Message.getAnchorMsg") + Observable>> getAnchorMsg( + @Query("liveuid") String liveUid, @Query("page") int page, @Query("limit") int limit + ); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index e3a23e104..89ac477d5 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -1092,6 +1092,7 @@ public class LiveNetManager { /** * 获取直播任务 + * * @param type 1 直播任务 2粉丝任务 */ public void getLiveTask(int type, String liveUid, HttpCallback callback) { @@ -1105,6 +1106,7 @@ public class LiveNetManager { callback.onError(throwable.getMessage()); }).isDisposed(); } + /** * 获取直播数据 */ @@ -1120,6 +1122,29 @@ public class LiveNetManager { }).isDisposed(); } + /** + * 获取主播消息 + * + * @param liveUid 直播间id + * @param page 页码 + * @param callback 回调 + */ + public void getAnchorMsg(String liveUid, int page, HttpCallback> callback) { + API.get().pdLiveApi(mContext) + .getAnchorMsg(liveUid, page, 10) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } + }, throwable -> { + if (callback != null) { + callback.onError(throwable.getMessage()); + } + }).isDisposed(); + } + /** * 直播间取消网络请求 */ diff --git a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java index ff91ff65a..4f574524e 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java @@ -13,6 +13,7 @@ import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.views.weight.OnRecyclerViewScrollListener; import java.util.List; @@ -22,6 +23,13 @@ import java.util.List; public class LiveAnchorMessageCustomPopup extends BottomPopupView { private LiveSystemMessageAdapter adapter; private RecyclerView liveMessage; + private String liveUid; + private int page = 1, size = 0; + + public LiveAnchorMessageCustomPopup(@NonNull Context context, String liveUid) { + super(context); + this.liveUid = liveUid; + } public LiveAnchorMessageCustomPopup(@NonNull Context context) { super(context); @@ -43,9 +51,10 @@ public class LiveAnchorMessageCustomPopup extends BottomPopupView { private void initDate() { LiveNetManager.get(getContext()) - .getListInfo("1", 1, new HttpCallback>() { + .getAnchorMsg(liveUid, page, new HttpCallback>() { @Override public void onSuccess(List data) { + size = data.size(); adapter.addData(data); } @@ -63,6 +72,16 @@ public class LiveAnchorMessageCustomPopup extends BottomPopupView { liveMessage.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false)); adapter = new LiveSystemMessageAdapter(getContext()); liveMessage.setAdapter(adapter); + liveMessage.addOnScrollListener(new OnRecyclerViewScrollListener() { + @Override + public void onBottom() { + if (size > 0) { + page = page + 1; + initDate(); + } + + } + }); } @Override diff --git a/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java b/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java index e1ffea244..76a478112 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/LiveSystemMessageViewHolder.java @@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.yunbao.common.R; import com.yunbao.common.bean.ListInfoMessageModel; import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.utils.RouteUtil; public class LiveSystemMessageViewHolder extends RecyclerView.ViewHolder { private TextView titleText, timeText, contextLayout, toView; @@ -42,6 +43,12 @@ public class LiveSystemMessageViewHolder extends RecyclerView.ViewHolder { toView.setVisibility(View.GONE); } else { toView.setVisibility(View.VISIBLE); + toView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + RouteUtil.forwardLiveZhuangBanActivity(model.getLink(), false); + } + }); } } } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java index 7e2468f40..3fc60e1a5 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveNewFunctionDialogFragment.java @@ -176,7 +176,7 @@ public class LiveNewFunctionDialogFragment extends AbsDialogFragment implements dismiss(); } else if (id == R.id.message_linear) { new XPopup.Builder(getContext()) - .asCustom(new LiveAnchorMessageCustomPopup(getContext())) + .asCustom(new LiveAnchorMessageCustomPopup(getContext(), liveUid)) .show(); dismiss(); } else if (id == R.id.broadcast_data) { diff --git a/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java index 71f803ca0..01f665785 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java @@ -26,6 +26,7 @@ import com.lxj.xpopup.core.BasePopupView; import com.lxj.xpopup.interfaces.XPopupCallback; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; +import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.LiveClassBean; import com.yunbao.common.bean.LiveRoomTypeBean; import com.yunbao.common.bean.UserBean; @@ -39,6 +40,7 @@ import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.L; import com.yunbao.common.utils.ProcessImageUtil; +import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; @@ -64,6 +66,7 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.io.File; +import java.util.Locale; import cn.rongcloud.rtc.api.RCRTCEngine; import cn.rongcloud.rtc.api.stream.RCRTCCameraOutputStream; @@ -92,7 +95,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl private ImageView imgClarity, selectorProtocol; private int selectClarity = 1; private LiveOpenCustomPopup liveOpenCustomPopup; - private boolean selector = false; + private boolean selector = true; public LiveNewReadyRyViewHolder(Context context, ViewGroup parentView, int liveSdk) { super(context, parentView, liveSdk); @@ -191,6 +194,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl findViewById(R.id.btn_start_live).setOnClickListener(this); findViewById(R.id.btn_wishlist).setOnClickListener(this); findViewById(R.id.btn_horizontally).setOnClickListener(this); + findViewById(R.id.anchor_agreement_layout).setOnClickListener(this); if (manager != null) { manager.setFaceStatusChanged(new FaceManager.FaceStatusChanged() { @@ -375,6 +379,10 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl } else if (i == R.id.btn_room_type) { chooseLiveType(); } else if (i == R.id.btn_start_live) { + if (!selector) { + ToastUtil.show(R.string.anchor_agreement_hint); + return; + } if (mLiveClassID == 0) { ToastUtil.show(R.string.live_choose_live_class); return; @@ -542,6 +550,21 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl new XPopup.Builder(mContext) .asCustom(new LiveRobotSettingCustomPopup(mContext)) .show(); + } else if (i == R.id.anchor_agreement_layout) { + String ct = Locale.getDefault().getLanguage(); + IMLoginModel model = IMLoginManager.get(mContext).getUserInfo(); + StringBuffer url = new StringBuffer(); + url.append(CommonAppConfig.HOST); + if (TextUtils.equals(ct, "zh")) { + url.append("/index.php?g=portal&m=page&a=index&id=66"); + } else { + url.append("/index.php?g=portal&m=page&a=index&id=67"); + } + url.append("&uid=") + .append(model.getId()) + .append("&token=") + .append(model.getToken()); + RouteUtil.forwardLiveZhuangBanActivity(url.toString(), false); } } From e7c97f2b55464477f41b5c77f31727854ba1d7e2 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 27 Feb 2023 11:35:22 +0800 Subject: [PATCH 31/63] =?UTF-8?q?=E7=A7=BB=E9=99=A4debug=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/main/views/MainHomeViewHolder.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index a6ec4e727..6fb5f18d4 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -40,10 +40,7 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { super.init(); img_trophy = (ImageView) findViewById(R.id.img_trophy); - img_trophy.setOnLongClickListener(v -> { - mContext.startActivity(new Intent(mContext, TestActivity.class)); - return true; - }); + ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy); From 94f8ee7f3bc3da664f774cb418dced5b97162856 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Mon, 27 Feb 2023 16:33:40 +0800 Subject: [PATCH 32/63] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/shayu/phonelive/AppContext.java | 2 +- app/src/main/java/com/shayu/phonelive/utils/LogUtils.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/shayu/phonelive/AppContext.java b/app/src/main/java/com/shayu/phonelive/AppContext.java index af69b040a..081ff74cb 100644 --- a/app/src/main/java/com/shayu/phonelive/AppContext.java +++ b/app/src/main/java/com/shayu/phonelive/AppContext.java @@ -122,11 +122,11 @@ public class AppContext extends CommonAppContext { @Override public void onCreate() { super.onCreate(); - //注册全局异常捕获 if (!isMainProcess()) { return; } CrashSaveBean.getInstance().setStartTime(System.currentTimeMillis()); + //注册全局异常捕获 registerError(); registerFirebaseCrash(); LogUtils.start(this); diff --git a/app/src/main/java/com/shayu/phonelive/utils/LogUtils.java b/app/src/main/java/com/shayu/phonelive/utils/LogUtils.java index 87c8f3124..b2dc80e1c 100644 --- a/app/src/main/java/com/shayu/phonelive/utils/LogUtils.java +++ b/app/src/main/java/com/shayu/phonelive/utils/LogUtils.java @@ -31,7 +31,7 @@ public class LogUtils { String[] exec = new String[]{"logcat", "-c"}; Runtime.getRuntime().exec(exec).waitFor(); - exec = new String[]{"logcat", "-v", "UTC", "-D"}; + exec = new String[]{"logcat", "-v", "color", "UTC-8"}; Process process = Runtime.getRuntime().exec(exec); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); @@ -55,6 +55,7 @@ public class LogUtils { writer = new PrintWriter(os); while ((line = bufferedReader.readLine()) != null) { writer.append(line).write("\n"); + writer.flush(); } writer.flush(); writer.close(); From 16ba71493ec11957a011e089f4444b09b26b0c44 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Mon, 27 Feb 2023 18:14:44 +0800 Subject: [PATCH 33/63] =?UTF-8?q?Android7=E5=8F=8A7=E4=BB=A5=E4=B8=8B?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=85=B3=E9=97=AD=E5=8A=A8=E7=94=BB=E7=89=B9?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/common/manager/IMLoginManager.java | 6 ++++-- config.gradle | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java index 301dc6302..905b299ab 100644 --- a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java +++ b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java @@ -2,6 +2,7 @@ package com.yunbao.common.manager; import android.app.Activity; import android.content.Context; +import android.os.Build; import android.os.Handler; import android.text.TextUtils; @@ -276,11 +277,12 @@ public class IMLoginManager extends BaseCacheManager { } public boolean isMountEffect() { - return getBoolean(MountEffect, true); + + return getBoolean(MountEffect, !(Build.VERSION.SDK_INT < Build.VERSION_CODES.O)); } public boolean isGiftEffect() { - return getBoolean(GiftEffect, true); + return getBoolean(GiftEffect, !(Build.VERSION.SDK_INT < Build.VERSION_CODES.O)); } /** diff --git a/config.gradle b/config.gradle index 00ea7a5b8..dcec2a45f 100644 --- a/config.gradle +++ b/config.gradle @@ -24,7 +24,7 @@ ext { baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S", // true表示谷歌支付 false - isGooglePlay : false, + isGooglePlay : true, //是否上报异常日志 isUploadLog : true ] From 824d431a63d1de706a48e18e8f1598ff6f951643 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Tue, 28 Feb 2023 13:06:48 +0800 Subject: [PATCH 34/63] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=A9=BA=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/views/LiveAnchorMessageCustomPopup.java | 10 +++++++++- .../main/res/layout/dialog_live_anchor_message.xml | 11 ++++++++++- config.gradle | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java index 4f574524e..0898040ab 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java @@ -55,7 +55,15 @@ public class LiveAnchorMessageCustomPopup extends BottomPopupView { @Override public void onSuccess(List data) { size = data.size(); - adapter.addData(data); + + if (page == 1 && size == 0) { + liveMessage.setVisibility(GONE); + findViewById(R.id.img_no_new).setVisibility(VISIBLE); + } else { + findViewById(R.id.img_no_new).setVisibility(GONE); + liveMessage.setVisibility(VISIBLE); + adapter.addData(data); + } } @Override diff --git a/common/src/main/res/layout/dialog_live_anchor_message.xml b/common/src/main/res/layout/dialog_live_anchor_message.xml index 1c017ccf9..a2c1db4bb 100644 --- a/common/src/main/res/layout/dialog_live_anchor_message.xml +++ b/common/src/main/res/layout/dialog_live_anchor_message.xml @@ -17,5 +17,14 @@ + android:layout_height="match_parent" + android:visibility="gone" /> + + \ No newline at end of file diff --git a/config.gradle b/config.gradle index dcec2a45f..1c9c810b7 100644 --- a/config.gradle +++ b/config.gradle @@ -9,9 +9,9 @@ ext { ] manifestPlaceholders = [ //正式 -// serverHost : "https://napi.yaoulive.com", + serverHost : "https://napi.yaoulive.com", //测试 - serverHost : "https://ceshi.yaoulive.com", +// serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", From 34c855fc8f40d71180c8154f5ac1d14f73ec1e49 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Tue, 28 Feb 2023 15:19:22 +0800 Subject: [PATCH 35/63] di ban ben --- .../java/com/yunbao/common/manager/IMLoginManager.java | 8 ++++++++ common/src/main/res/values-en/strings.xml | 1 + common/src/main/res/values/strings.xml | 1 + .../com/yunbao/live/activity/LiveAudienceActivity.java | 5 +++++ 4 files changed, 15 insertions(+) diff --git a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java index 905b299ab..bede5737f 100644 --- a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java +++ b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java @@ -41,7 +41,15 @@ public class IMLoginManager extends BaseCacheManager { private final String IS_HINT2 = "is_hint2"; private final String SELECT_CLARITY = "selectClarity"; private final String CLARITY = "clarity"; + private final String xiaJBG = "xiaJBG"; + public void setXiaJBG(boolean xjbg) { + put(xiaJBG, xjbg); + } + + public boolean IsXiaJBG() { + return getBoolean(xiaJBG, false); + } public void setClarity(String clarity) { put(CLARITY, clarity); diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index e92aa3e9f..83e7f5f19 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -1019,4 +1019,5 @@ Limited ride And limited avatar frame New fan group Fan group conversion rate loading… + Gift and seat effects have been turned off and can be turned on manually in "Settings". diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 795f8a9eb..32093aa8b 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1040,4 +1040,5 @@ 新增粉絲團 粉絲團轉化率 加载中… + 由於您的系統較老,我們自動為您屏蔽了禮物及座駕特效,可在「設置中心」手動打開。 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 5ff617e85..5b2cf5822 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -5,6 +5,7 @@ import android.app.Dialog; import android.content.Intent; import android.content.res.Configuration; import android.media.AudioManager; +import android.os.Build; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; @@ -183,6 +184,10 @@ public class LiveAudienceActivity extends LiveActivity { mStream = mLiveBean.getStream(); initData(); MicStatusManager.getInstance().addOnMicListener(onMicStatusListener); + if (!IMLoginManager.get(mContext).IsXiaJBG() && (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)) { + ToastUtil.show(R.string.yoursystemisolder); + IMLoginManager.get(mContext).setXiaJBG(true); + } } private final MicStatusManager.OnMicStatusListener onMicStatusListener = new MicStatusManager.OnMicStatusListener() { From 8d932a09e1ecb94bbcf0c7d2d2f156a6ffec7f98 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Tue, 28 Feb 2023 15:50:20 +0800 Subject: [PATCH 36/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8E=E8=8B=B9?= =?UTF-8?q?=E6=9E=9C=E7=AB=AFPK=E7=BB=93=E6=9D=9F=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E5=AF=B9=E6=96=B9=E5=A4=B4=E5=83=8F=E4=BE=9D=E6=97=A7=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/event/AnchorInfoEvent.java | 10 ++++++++++ .../com/yunbao/live/views/LivePushRyViewHolder.java | 3 ++- .../com/yunbao/live/views/LiveRoomViewHolder.java | 12 ++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/event/AnchorInfoEvent.java b/common/src/main/java/com/yunbao/common/event/AnchorInfoEvent.java index e15712cc0..f13719d78 100644 --- a/common/src/main/java/com/yunbao/common/event/AnchorInfoEvent.java +++ b/common/src/main/java/com/yunbao/common/event/AnchorInfoEvent.java @@ -44,4 +44,14 @@ public class AnchorInfoEvent { public void setClear(boolean clear) { this.clear = clear; } + + @Override + public String toString() { + return "AnchorInfoEvent{" + + "clear=" + clear + + ", id='" + id + '\'' + + ", userNiceName='" + userNiceName + '\'' + + ", avatar='" + avatar + '\'' + + '}'; + } } 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 ed02b4b79..bdf59890f 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java @@ -116,8 +116,9 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX //修改上面主播的头像 @Subscribe(threadMode = ThreadMode.MAIN) public void onUPAnchorInfo(AnchorInfoEvent e) { + Log.i(TAG, "onUPAnchorInfo: "+e); if (e != null) { - if (e.isClear() == false) { + if (!e.isClear()) { tv_avatarOther_name.setText(e.getUserNiceName()); ImgLoader.displayAvatar(mContext, e.getAvatar(), avatarOther); goto_room_view.setVisibility(View.VISIBLE); diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 3a323cb35..c8ca03de4 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -1,6 +1,7 @@ package com.yunbao.live.views; import static com.yunbao.live.bean.LiveChatBean.RECOMMEND_CARD_NOTIFY; +import static com.yunbao.live.views.LivePushRyViewHolder.btn_close; import android.app.Activity; import android.app.Dialog; @@ -79,6 +80,7 @@ import com.yunbao.common.bean.RewardAllModel; import com.yunbao.common.bean.StarChallengeStatusModel; import com.yunbao.common.bean.TaskModel; import com.yunbao.common.bean.UserBean; +import com.yunbao.common.event.AnchorInfoEvent; import com.yunbao.common.event.CustomFullServiceNotifyEvent; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.API; @@ -2086,10 +2088,15 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis //双人pk关闭 public void closePkTwo() { + Log.e("LiveRoomViewHolder", "closePkTwo: 隐藏PK信息" + goto_room_view.getVisibility()); mPkRankTopIcon.setVisibility(View.GONE); lt_pk_line.setVisibility(View.GONE); - livePKUserListBean = new LivePKUserListBean(); pkUid = ""; + if (btn_close != null) { + btn_close.setVisibility(View.GONE); + } + goto_room_view.setVisibility(View.GONE); + livePKUserListBean = new LivePKUserListBean(); } /** @@ -3930,6 +3937,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis new Handler(Looper.getMainLooper()).postDelayed(this::initPkRank, 300); break; case PK_TWO_END: + EventBus.getDefault().post(new AnchorInfoEvent(true, "", "", "")); closePkTwo(); break; case CUSTOM_FULL_SERVICE_NOTIFY: @@ -4061,7 +4069,6 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis }); - } for (int i = 0; i < pkScores.size(); i++) { @@ -4159,6 +4166,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } } }; + public void removeDetailView() { if (detailsView != null) { mRoot.removeView(detailsView); From abbc2fc4ee3f592c5d4388b241a001bcf8547e30 Mon Sep 17 00:00:00 2001 From: 18142669586 <1669783059@qq.com> Date: Tue, 28 Feb 2023 16:46:52 +0800 Subject: [PATCH 37/63] =?UTF-8?q?=E5=96=AE=E4=BA=BAPK=E5=8D=A10=E5=88=86?= =?UTF-8?q?=20=E5=84=AA=E5=8C=96=E8=A8=88=E7=AE=97=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dialog/YoursystemisolderDialog.java | 74 +++++++++++++++++++ .../res/layout/view_yoursystemisolder.xml | 56 ++++++++++++++ .../live/activity/LiveAudienceActivity.java | 8 +- 3 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java create mode 100644 common/src/main/res/layout/view_yoursystemisolder.xml diff --git a/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java b/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java new file mode 100644 index 000000000..ecac3b7d9 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java @@ -0,0 +1,74 @@ +package com.yunbao.common.dialog; + +import android.os.Bundle; +import android.text.TextUtils; +import android.view.Gravity; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.FragmentManager; + +import com.yunbao.common.R; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +public class YoursystemisolderDialog extends AbsDialogFragment { + @Override + protected int getLayoutId() { + return R.layout.view_yoursystemisolder; + } + + @Override + protected int getDialogStyle() { + return R.style.dialog; + } + + @Override + protected boolean canCancel() { + return false; + } + + @Override + protected void setWindowAttributes(Window window) { + window.setWindowAnimations(R.style.bottomToTopAnim); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = DpUtil.dp2px(277); + params.height = DpUtil.dp2px(134); + params.gravity = Gravity.CENTER; + window.setAttributes(params); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + TextView hint = (TextView) findViewById(R.id.hint); + TextView toSetUp = (TextView) findViewById(R.id.to_set_up); + TextView knowThe = (TextView) findViewById(R.id.know_the); + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.to_set_up), () -> dismiss()); + } + + @Override + public void show(@NonNull FragmentManager manager, @Nullable String tag) { + try { + super.show(manager, tag); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private YoursystemisolderDialog.HintListener listener; + + public YoursystemisolderDialog setListener(YoursystemisolderDialog.HintListener listener) { + this.listener = listener; + return this; + } + + public interface HintListener { + void requestPermission(); + } +} diff --git a/common/src/main/res/layout/view_yoursystemisolder.xml b/common/src/main/res/layout/view_yoursystemisolder.xml new file mode 100644 index 000000000..ef06d5cba --- /dev/null +++ b/common/src/main/res/layout/view_yoursystemisolder.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 5b2cf5822..7db64177f 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -21,6 +21,7 @@ import androidx.annotation.NonNull; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsControllerCompat; +import androidx.fragment.app.FragmentActivity; import androidx.viewpager.widget.ViewPager; import com.alibaba.android.arouter.facade.annotation.Route; @@ -51,8 +52,10 @@ import com.yunbao.common.bean.SlideInfoModel; import com.yunbao.common.bean.UserBean; import com.yunbao.common.dialog.EffectsSettingsDialog; import com.yunbao.common.dialog.FloatSettingsDialog; +import com.yunbao.common.dialog.HintDialog; import com.yunbao.common.dialog.LiveChargeDialogFragment; import com.yunbao.common.dialog.SlideSettingsDialog; +import com.yunbao.common.dialog.YoursystemisolderDialog; import com.yunbao.common.event.CustomDrawerPopupEvent; import com.yunbao.common.event.FollowEvent; import com.yunbao.common.glide.ImgLoader; @@ -184,8 +187,9 @@ public class LiveAudienceActivity extends LiveActivity { mStream = mLiveBean.getStream(); initData(); MicStatusManager.getInstance().addOnMicListener(onMicStatusListener); - if (!IMLoginManager.get(mContext).IsXiaJBG() && (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)) { - ToastUtil.show(R.string.yoursystemisolder); + if (!IMLoginManager.get(mContext).IsXiaJBG() && (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)) { + YoursystemisolderDialog fragment = new YoursystemisolderDialog(); + fragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "YoursystemisolderDialog"); IMLoginManager.get(mContext).setXiaJBG(true); } } From d7d24904bf6b0a1555ad7b3fd6b5af77cbf0e235 Mon Sep 17 00:00:00 2001 From: 18142669586 <1669783059@qq.com> Date: Tue, 28 Feb 2023 16:54:20 +0800 Subject: [PATCH 38/63] =?UTF-8?q?=E5=96=AE=E4=BA=BAPK=E5=8D=A10=E5=88=86?= =?UTF-8?q?=20=E5=84=AA=E5=8C=96=E8=A8=88=E7=AE=97=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/common/dialog/YoursystemisolderDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java b/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java index ecac3b7d9..b3aa2ed28 100644 --- a/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java +++ b/common/src/main/java/com/yunbao/common/dialog/YoursystemisolderDialog.java @@ -49,7 +49,7 @@ public class YoursystemisolderDialog extends AbsDialogFragment { TextView hint = (TextView) findViewById(R.id.hint); TextView toSetUp = (TextView) findViewById(R.id.to_set_up); TextView knowThe = (TextView) findViewById(R.id.know_the); - ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.to_set_up), () -> dismiss()); + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.know_the), () -> dismiss()); } @Override From e0753ebb2987c4f56a1a2c6d15fba514611ed087 Mon Sep 17 00:00:00 2001 From: 18142669586 <1669783059@qq.com> Date: Tue, 28 Feb 2023 16:55:31 +0800 Subject: [PATCH 39/63] =?UTF-8?q?7.0=E5=BC=B9=E5=87=BA=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/activity/LiveAudienceActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7db64177f..1238b0cc5 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -187,7 +187,7 @@ public class LiveAudienceActivity extends LiveActivity { mStream = mLiveBean.getStream(); initData(); MicStatusManager.getInstance().addOnMicListener(onMicStatusListener); - if (!IMLoginManager.get(mContext).IsXiaJBG() && (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)) { + if (!IMLoginManager.get(mContext).IsXiaJBG() && (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)) { YoursystemisolderDialog fragment = new YoursystemisolderDialog(); fragment.show(((FragmentActivity) mContext).getSupportFragmentManager(), "YoursystemisolderDialog"); IMLoginManager.get(mContext).setXiaJBG(true); From 46f20c966312cc9fb1cdc55e625619f1992d5706 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Tue, 28 Feb 2023 17:33:25 +0800 Subject: [PATCH 40/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E7=9A=84=E6=8C=87=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 4 ++-- .../java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.gradle b/config.gradle index 1c9c810b7..89cd0b6db 100644 --- a/config.gradle +++ b/config.gradle @@ -4,8 +4,8 @@ ext { buildToolsVersion: "29.0.2", minSdkVersion : 21, targetSdkVersion : 31, - versionCode : 405, - versionName : "6.4.8" + versionCode : 411, + versionName : "6.4.9" ] manifestPlaceholders = [ //正式 diff --git a/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java index 01f665785..1411da666 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveNewReadyRyViewHolder.java @@ -556,9 +556,9 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl StringBuffer url = new StringBuffer(); url.append(CommonAppConfig.HOST); if (TextUtils.equals(ct, "zh")) { - url.append("/index.php?g=portal&m=page&a=index&id=66"); + url.append("/index.php?g=portal&m=page&a=index&id=671"); } else { - url.append("/index.php?g=portal&m=page&a=index&id=67"); + url.append("/index.php?g=portal&m=page&a=index&id=672"); } url.append("&uid=") .append(model.getId()) From 34432e5ccfbefd6923a8780ae152e485a8613693 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Wed, 1 Mar 2023 17:17:22 +0800 Subject: [PATCH 41/63] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=97=AA=E9=80=80?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java b/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java index 676852fd0..87fccce94 100644 --- a/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java +++ b/app/src/main/java/com/shayu/phonelive/NeverCrashUtils.java @@ -101,7 +101,7 @@ public class NeverCrashUtils { Log.e(TAG, "未捕获的主线程异常行为", e); } e.printStackTrace(); - Toast.makeText(application, "发生闪退:"+e.getMessage(), Toast.LENGTH_SHORT).show(); + //Toast.makeText(application, "发生闪退:"+e.getMessage(), Toast.LENGTH_SHORT).show(); FileUtil.saveStringToFile(new File(application.getDir("files", Context.MODE_PRIVATE).getAbsolutePath()), throwableToString(e), "error.log"); getMainCrashHandler().mainException(Looper.getMainLooper().getThread(), e); // return; From a1762bc791b450ea4b1b286de24edc595d3d6096 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Sat, 4 Mar 2023 13:40:58 +0800 Subject: [PATCH 42/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2=E7=82=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=97=B6=E4=BC=9A=E5=9B=9E=E5=88=B0=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E9=97=AE=E9=A2=98=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=B0=9D=E8=AF=95=E9=87=8D=E8=BF=9Eim=E6=97=B6=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E5=88=B0=E7=99=BB=E5=BD=95=E4=BF=A1=E6=81=AF=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E5=90=8E=E8=BF=94=E5=9B=9E=E5=88=B0=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/main/activity/LoginActivity.java | 3 ++- .../main/java/com/yunbao/main/activity/MainActivity.java | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/main/src/main/java/com/yunbao/main/activity/LoginActivity.java b/main/src/main/java/com/yunbao/main/activity/LoginActivity.java index dae7de39c..0709595e3 100644 --- a/main/src/main/java/com/yunbao/main/activity/LoginActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/LoginActivity.java @@ -121,7 +121,8 @@ public class LoginActivity extends AbsActivity { findViewById(R.id.btn_back).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - finish(); + //finish(); + RouteUtil.forwardLauncher(LoginActivity.this); } }); diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 987edb8f7..3d0d61ddf 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -313,7 +313,12 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene @Override public void onPageSelected(int position) { if(mTabButtonGroup.getCurPosition()!=position){ - System.err.println("重连IM"); + System.err.println("重连IM:"+IMLoginManager.isLogin(mContext)); + if(!IMLoginManager.isLogin(mContext)){ + //IMLoginManager.get(mContext).setupLoginUser(); + RouteUtil.forwardLoginInvalid("登錄失效"); + return; + } RongcloudIMManager.connectIM(mContext.getApplication()); position = 0; mTabButtonGroup.setCurPosition(0); From a89c441555606ad79d499cae883c1bdbffb77cb0 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Sat, 4 Mar 2023 13:56:50 +0800 Subject: [PATCH 43/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2=E6=8C=89=E7=89=A9=E7=90=86?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=8C=89=E9=92=AE=E6=97=B6=E4=BC=9A=E5=9B=9E?= =?UTF-8?q?=E5=88=B0=E6=A1=8C=E9=9D=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yunbao/common/utils/RouteUtil.java | 9 +++++++++ .../java/com/yunbao/main/activity/LoginActivity.java | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/yunbao/common/utils/RouteUtil.java b/common/src/main/java/com/yunbao/common/utils/RouteUtil.java index 34a1be8cd..c8a3c2645 100644 --- a/common/src/main/java/com/yunbao/common/utils/RouteUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/RouteUtil.java @@ -75,6 +75,15 @@ public class RouteUtil { .withBoolean("forwardEntry", true) .navigation(); } + /** + * 只回到登录页,不提示东西 + */ + public static void forwardEntry2() { + ARouter.getInstance().build(PATH_ENTRY) + .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .navigation(); + } /** * 跳转到个人主页 diff --git a/main/src/main/java/com/yunbao/main/activity/LoginActivity.java b/main/src/main/java/com/yunbao/main/activity/LoginActivity.java index 0709595e3..17e9aaae5 100644 --- a/main/src/main/java/com/yunbao/main/activity/LoginActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/LoginActivity.java @@ -122,7 +122,7 @@ public class LoginActivity extends AbsActivity { @Override public void onClick(View view) { //finish(); - RouteUtil.forwardLauncher(LoginActivity.this); + RouteUtil.forwardEntry2(); } }); @@ -380,4 +380,10 @@ public class LoginActivity extends AbsActivity { super.onDestroy(); } + + @Override + public void onBackPressed() { + super.onBackPressed(); + RouteUtil.forwardEntry2(); + } } From 7f2f7ea4d8e16a4b32e838603d86f1b8959a8dae Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 4 Mar 2023 14:31:09 +0800 Subject: [PATCH 44/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E4=BA=BAPk?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 3 +-- .../yunbao/live/views/PortraitLiveManager.java | 2 +- .../src/main/res/layout/view_live_pk_details.xml | 16 ++++++++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/config.gradle b/config.gradle index 89cd0b6db..a61159b50 100644 --- a/config.gradle +++ b/config.gradle @@ -22,9 +22,8 @@ ext { baiduAppId : "23774720", baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB", baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S", - // true表示谷歌支付 false - isGooglePlay : true, + isGooglePlay : false, //是否上报异常日志 isUploadLog : true ] 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 4402f42f3..3a335c7b2 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -1854,7 +1854,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe pkScores.remove(index); pkScores.add(0, liveModel); mLiveRoomViewHolder.upDataPkScore(pkScores, time); - + setPkStatus(true); } } diff --git a/live/src/main/res/layout/view_live_pk_details.xml b/live/src/main/res/layout/view_live_pk_details.xml index 0cf81b157..c248b8995 100644 --- a/live/src/main/res/layout/view_live_pk_details.xml +++ b/live/src/main/res/layout/view_live_pk_details.xml @@ -37,7 +37,7 @@ android:layout_marginEnd="6.76dp" android:text="000" android:textColor="@color/white" - android:textSize="8sp" /> + android:textSize="12sp" /> + android:textSize="12sp" /> + android:textSize="12sp" /> + android:textSize="12sp" /> + android:textSize="12sp" /> + android:textSize="12sp" /> @@ -203,7 +203,7 @@ android:paddingBottom="4.33dp" android:text="我方" android:textColor="@color/white" - android:textSize="8sp" /> + android:textSize="12sp" /> + android:textSize="12sp" /> From 5c5114f8081d897334cab2aadb1ca87e91fe52d5 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 4 Mar 2023 15:04:49 +0800 Subject: [PATCH 45/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E4=BA=BAPk?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/view_live_pk_details.xml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/live/src/main/res/layout/view_live_pk_details.xml b/live/src/main/res/layout/view_live_pk_details.xml index c248b8995..926203165 100644 --- a/live/src/main/res/layout/view_live_pk_details.xml +++ b/live/src/main/res/layout/view_live_pk_details.xml @@ -47,10 +47,8 @@ android:layout_marginStart="5.33dp" android:layout_marginTop="3.3dp" android:background="@drawable/background_pk_time" - android:maxLines="1" - android:ellipsize="end" - android:maxWidth="50dp" android:clickable="true" + android:maxLines="1" android:paddingStart="6dp" android:paddingTop="4.33dp" android:paddingEnd="6dp" @@ -106,12 +104,10 @@ android:layout_marginTop="3.3dp" android:layout_marginEnd="5.33dp" android:background="@drawable/background_pk_time" - android:ellipsize="end" - android:maxWidth="50dp" + android:clickable="true" android:maxLines="1" android:paddingStart="6dp" android:paddingTop="4.33dp" - android:clickable="true" android:paddingEnd="6dp" android:paddingBottom="4.33dp" android:text="我方" @@ -134,10 +130,8 @@ android:layout_marginStart="5.33dp" android:layout_marginBottom="3.3dp" android:background="@drawable/background_pk_time" - android:maxLines="1" - android:ellipsize="end" android:clickable="true" - android:maxWidth="50dp" + android:maxLines="1" android:paddingStart="6dp" android:paddingTop="4.33dp" android:paddingEnd="6dp" @@ -193,10 +187,8 @@ android:layout_marginEnd="5.33dp" android:layout_marginBottom="3.3dp" android:background="@drawable/background_pk_time" - android:maxLines="1" - android:ellipsize="end" - android:maxWidth="50dp" android:clickable="true" + android:maxLines="1" android:paddingStart="6dp" android:paddingTop="4.33dp" android:paddingEnd="6dp" From 46fa2419d3e9e51c6ce001e1f3ea7f706be27f01 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 4 Mar 2023 15:32:41 +0800 Subject: [PATCH 46/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E4=BA=BAPk?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/views/LiveRoomViewHolder.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index c8ca03de4..7e990e028 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -102,7 +102,6 @@ import com.yunbao.common.utils.SVGAViewUtils; import com.yunbao.common.utils.ScreenDimenUtil; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; -import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.utils.formatBigNum; import com.yunbao.common.views.AbsViewHolder; @@ -463,7 +462,10 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } } + private static boolean visibility; + public void hotAddVisibility(boolean visibility) { + this.visibility = visibility; ft_hot_add.setVisibility(visibility ? View.GONE : View.VISIBLE); } @@ -3174,9 +3176,9 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis /** * 获取是否有热度卡加成 */ - public static void getIsHot(String isUseHotCard) { + public void getIsHot(String isUseHotCard) { ImgLoader.display2(Contexts, "https://downs.yaoulive.com/img_hot_gif.gif", img_hot_gif); - if ("1".equals(isUseHotCard)) { + if ("1".equals(isUseHotCard) && !visibility) { ft_hot_add.setVisibility(View.VISIBLE); } else { ft_hot_add.setVisibility(View.GONE); From 046adc93402b821607ce3cf0b65e4d44c821a0b8 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 4 Mar 2023 16:01:27 +0800 Subject: [PATCH 47/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E4=BA=BAPk?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 7e990e028..3e47b1198 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -462,7 +462,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } } - private static boolean visibility; + private static boolean visibility =false; public void hotAddVisibility(boolean visibility) { this.visibility = visibility; From 0726c5dc1c6b500f1a05a6e5717cd53f107d3e2d Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 4 Mar 2023 16:42:25 +0800 Subject: [PATCH 48/63] =?UTF-8?q?=E5=A4=9A=E4=BA=BAPK=E7=83=AD=E5=BA=A6?= =?UTF-8?q?=E5=8A=A0=E6=88=90=E9=97=AE=E9=A2=98=EF=BC=8C=E4=B8=BB=E6=92=AD?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/activity/LiveAudienceActivity.java | 2 +- .../java/com/yunbao/live/activity/LiveRyAnchorActivity.java | 6 ++++++ .../main/java/com/yunbao/live/views/LiveRoomViewHolder.java | 6 ++++-- 3 files changed, 11 insertions(+), 3 deletions(-) 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 1238b0cc5..f0643f52f 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -52,7 +52,6 @@ import com.yunbao.common.bean.SlideInfoModel; import com.yunbao.common.bean.UserBean; import com.yunbao.common.dialog.EffectsSettingsDialog; import com.yunbao.common.dialog.FloatSettingsDialog; -import com.yunbao.common.dialog.HintDialog; import com.yunbao.common.dialog.LiveChargeDialogFragment; import com.yunbao.common.dialog.SlideSettingsDialog; import com.yunbao.common.dialog.YoursystemisolderDialog; @@ -1260,6 +1259,7 @@ public class LiveAudienceActivity extends LiveActivity { case SOCKET_LIVE_DRPK_SET_PK_END_VIEW: if (manager.getmLivePlayViewHolder() != null) { manager.getmLivePlayViewHolder().setPkEndview(); + manager.setPkStatus(false); } if (manager != null) { 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 9b031e2c4..cb9cf47ff 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -1566,11 +1566,17 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl if (mLiveRyLinkMicPkPresenter != null) { mLiveRyLinkMicPkPresenter.leaveDRRoom(); } + if (mLiveRoomViewHolder != null) { + mLiveRoomViewHolder.hotAddVisibility(false); + } break; case LEAVE_PK_SCORE: if (mLiveRyLinkMicPkPresenter != null) { mLiveRyLinkMicPkPresenter.upDataPkScore(event.getPkScores(), event.getUid(), event.getTime()); } + if (mLiveRoomViewHolder != null) { + mLiveRoomViewHolder.hotAddVisibility(true); + } break; case PK_TIME_COUNT: if (mLiveRoomViewHolder != null) { diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 3e47b1198..b60f80bc4 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -462,7 +462,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } } - private static boolean visibility =false; + private static boolean visibility = false; public void hotAddVisibility(boolean visibility) { this.visibility = visibility; @@ -472,6 +472,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis public void endDRGif() { if (dr_pk_end_gif.getVisibility() == View.GONE) { dr_pk_end_gif.setVisibility(View.VISIBLE); + visibility = false; RequestOptions options = new RequestOptions().skipMemoryCache(true);//配置 Glide.with(mContext).asGif() .apply(options)//应用配置 @@ -1220,6 +1221,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis */ public void resetView() { resetViewGone(); + visibility = false; mBannerList1.clear(); mBannerList2.clear(); mBannerList3.clear(); @@ -3163,7 +3165,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis @Override public void onSuccess(int code, String msg, String[] info) { if (code == 0 && info.length > 0) { - if ("1".equals(info[0])) { + if ("1".equals(info[0]) && !visibility) { ft_hot_add.setVisibility(View.VISIBLE); } else { ft_hot_add.setVisibility(View.GONE); From 88ea48b6cab62fd5a3b188fa556afd191555799d Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Thu, 9 Mar 2023 10:26:10 +0800 Subject: [PATCH 49/63] =?UTF-8?q?=E6=96=B0=E5=A2=9Edebug=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=EF=BC=8C=E6=96=B9=E4=BE=BF=E8=B0=83=E5=87=BA?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=94=A8=E4=BA=8E=E5=88=86=E6=9E=90=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/main/java/com/yunbao/common/utils/LogUtil.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/yunbao/common/utils/LogUtil.java b/common/src/main/java/com/yunbao/common/utils/LogUtil.java index 2d42b1b08..e05b249c5 100644 --- a/common/src/main/java/com/yunbao/common/utils/LogUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/LogUtil.java @@ -150,7 +150,11 @@ public class LogUtil { public static void shareFile(Context context) { - if(true){ + try { + if (!new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "pdlive.debug").exists()) { + return; + } + } catch (Exception e) { return; } if (PermissionChecker.checkCallingOrSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PERMISSION_GRANTED) { From 342b2e913992ab73fb59b13de38662fb0ef9098e Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Fri, 10 Mar 2023 11:05:19 +0800 Subject: [PATCH 50/63] =?UTF-8?q?=E5=A4=9A=E4=BA=BAPK=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/views/weight/LiveFloatView.java | 2 +- config.gradle | 6 +++--- .../yunbao/live/views/LiveRoomViewHolder.java | 21 +++++++++++++------ .../main/res/layout/view_live_pk_details.xml | 8 +++---- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/views/weight/LiveFloatView.java b/common/src/main/java/com/yunbao/common/views/weight/LiveFloatView.java index 251818e8e..0f9efc7de 100644 --- a/common/src/main/java/com/yunbao/common/views/weight/LiveFloatView.java +++ b/common/src/main/java/com/yunbao/common/views/weight/LiveFloatView.java @@ -105,9 +105,9 @@ public class LiveFloatView implements Function1 { @Override public void onNetStatus(Bundle bundle) { + } }); - ViewClicksAntiShake.clicksAntiShake(magnetView.findViewById(R.id.btn_close), new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { diff --git a/config.gradle b/config.gradle index a61159b50..3053f8a94 100644 --- a/config.gradle +++ b/config.gradle @@ -4,11 +4,11 @@ ext { buildToolsVersion: "29.0.2", minSdkVersion : 21, targetSdkVersion : 31, - versionCode : 411, + versionCode : 412, versionName : "6.4.9" ] manifestPlaceholders = [ - //正式 + //正式、 serverHost : "https://napi.yaoulive.com", //测试 // serverHost : "https://ceshi.yaoulive.com", @@ -23,7 +23,7 @@ ext { baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB", baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S", // true表示谷歌支付 false - isGooglePlay : false, + isGooglePlay : true, //是否上报异常日志 isUploadLog : true ] diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index b60f80bc4..e3d0e9c8d 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -4115,17 +4115,26 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis textGrade2.setText(String.valueOf(userScore)); userId2 = userId; } else if (i == 2) { + if (pkScores.size() == 3) { + linearGrade4.setVisibility(View.VISIBLE); + textPkName4.setText(userNiceName); + ImgLoader.display(mContext, resScore, imageGrade4); + textGrade4.setText(String.valueOf(userScore)); + userId4 = userId; + } else { + linearGrade3.setVisibility(View.VISIBLE); + textPkName3.setText(userNiceName); + ImgLoader.display(mContext, resScore, imageGrade3); + textGrade3.setText(String.valueOf(userScore)); + userId3 = userId; + } + + } else if (i == 3) { linearGrade4.setVisibility(View.VISIBLE); textPkName4.setText(userNiceName); ImgLoader.display(mContext, resScore, imageGrade4); textGrade4.setText(String.valueOf(userScore)); userId4 = userId; - } else if (i == 3) { - linearGrade3.setVisibility(View.VISIBLE); - textPkName3.setText(userNiceName); - ImgLoader.display(mContext, resScore, imageGrade3); - textGrade3.setText(String.valueOf(userScore)); - userId3 = userId; } } diff --git a/live/src/main/res/layout/view_live_pk_details.xml b/live/src/main/res/layout/view_live_pk_details.xml index 926203165..5b714f872 100644 --- a/live/src/main/res/layout/view_live_pk_details.xml +++ b/live/src/main/res/layout/view_live_pk_details.xml @@ -8,7 +8,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:visibility="gone"> + android:visibility="visible"> + android:visibility="visible"> + android:visibility="visible"> + android:visibility="visible"> Date: Fri, 10 Mar 2023 11:06:08 +0800 Subject: [PATCH 51/63] =?UTF-8?q?=E5=A4=9A=E4=BA=BAPK=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- live/src/main/res/layout/view_live_pk_details.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/live/src/main/res/layout/view_live_pk_details.xml b/live/src/main/res/layout/view_live_pk_details.xml index 5b714f872..926203165 100644 --- a/live/src/main/res/layout/view_live_pk_details.xml +++ b/live/src/main/res/layout/view_live_pk_details.xml @@ -8,7 +8,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:visibility="visible"> + android:visibility="gone"> + android:visibility="gone"> + android:visibility="gone"> + android:visibility="gone"> Date: Fri, 10 Mar 2023 15:48:34 +0800 Subject: [PATCH 52/63] =?UTF-8?q?=E5=A4=9A=E4=BA=BAPK=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.gradle b/config.gradle index 3053f8a94..ca9aaba88 100644 --- a/config.gradle +++ b/config.gradle @@ -23,7 +23,7 @@ ext { baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB", baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S", // true表示谷歌支付 false - isGooglePlay : true, + isGooglePlay : false, //是否上报异常日志 isUploadLog : true ] From 077cc7fd80c344446e0df53e6d6e0d9b2779c591 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Fri, 10 Mar 2023 16:00:06 +0800 Subject: [PATCH 53/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunbao/common/adapter/CustomDrawerPopupAdapter.java | 2 ++ .../main/java/com/yunbao/common/manager/RandomPkManager.java | 3 ++- .../java/com/yunbao/common/views/CustomDrawerPopupView.java | 2 +- .../com/yunbao/common/views/DrawerTaskChildViewHolder.java | 2 +- .../com/yunbao/common/views/LiveAnchorMessageCustomPopup.java | 2 +- .../main/java/com/yunbao/common/views/LiveOpenCustomPopup.java | 2 +- .../com/yunbao/common/views/LiveRobotMessageCustomPopup.java | 2 +- .../com/yunbao/common/views/LiveRobotSayHelloCustomPopup.java | 2 +- .../com/yunbao/common/views/LiveRobotSettingCustomPopup.java | 2 +- .../java/com/yunbao/common/views/RobotMessageViewHolder.java | 2 +- .../java/com/yunbao/common/views/RobotSayHelloViewHoler.java | 2 +- common/src/main/res/values-en/strings.xml | 1 + common/src/main/res/values/strings.xml | 1 + live/src/main/java/com/yunbao/live/activity/LiveActivity.java | 1 + .../java/com/yunbao/live/activity/LiveAudienceActivity.java | 1 + .../java/com/yunbao/live/activity/LiveRyAnchorActivity.java | 2 +- .../java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java | 2 +- .../main/java/com/yunbao/live/dialog/FreePkDialogFragment.java | 3 ++- .../main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java | 3 ++- .../java/com/yunbao/live/dialog/LiveGameDialogFragment.java | 2 +- .../java/com/yunbao/live/dialog/LiveInputDialogFragment.java | 1 + .../java/com/yunbao/live/dialog/LivePrankDialogFragment.java | 2 +- live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java | 2 ++ live/src/main/java/com/yunbao/live/dialog/LiveTotalDialog.java | 2 ++ .../java/com/yunbao/live/dialog/RandomPkDialogFragment.java | 2 +- .../com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java | 2 +- .../src/main/java/com/yunbao/live/views/LiveEndViewHolder.java | 2 ++ .../main/java/com/yunbao/live/views/LivePushRyViewHolder.java | 2 +- .../main/java/com/yunbao/live/views/LiveRoomViewHolder.java | 3 ++- .../java/com/yunbao/live/views/LiveRyAnchorViewHolder.java | 1 + .../main/java/com/yunbao/live/views/PortraitLiveManager.java | 2 +- main/src/main/java/com/yunbao/main/activity/EntryActivity.java | 2 +- main/src/main/java/com/yunbao/main/activity/MainActivity.java | 1 + .../main/java/com/yunbao/main/activity/MainListActivity.java | 2 +- .../main/java/com/yunbao/main/activity/MsgSettActivity.java | 2 +- .../yunbao/main/activity/PDLiveConversationListActivity.java | 2 +- .../main/java/com/yunbao/main/adapter/MsgFollowAdapter.java | 3 ++- .../java/com/yunbao/main/adapter/SearchResultsAdapter.java | 1 + .../java/com/yunbao/main/fragment/SearchRecommendFragment.java | 1 + .../com/yunbao/main/fragment/SearchResultsItemFragment.java | 2 ++ .../main/manager/imrongcloud/ConversationIMListManager.java | 3 ++- .../com/yunbao/main/views/SearchRecommendBodyViewHolder.java | 1 + 42 files changed, 53 insertions(+), 27 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/adapter/CustomDrawerPopupAdapter.java b/common/src/main/java/com/yunbao/common/adapter/CustomDrawerPopupAdapter.java index 84c2c450d..3f0c434c1 100644 --- a/common/src/main/java/com/yunbao/common/adapter/CustomDrawerPopupAdapter.java +++ b/common/src/main/java/com/yunbao/common/adapter/CustomDrawerPopupAdapter.java @@ -15,6 +15,7 @@ import com.yunbao.common.bean.AnchorRecommendItemModel; import com.yunbao.common.bean.AnchorRecommendModel; import com.yunbao.common.bean.CustomSidebarInfoModel; import com.yunbao.common.http.main.MainNetManager; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.DrawerRecommendViewHolder; import com.yunbao.common.views.DrawerTaskViewHolder; import com.yunbao.common.views.FunGamesViewHolder; @@ -121,6 +122,7 @@ public class CustomDrawerPopupAdapter extends RecyclerView.Adapter { @Override public void onError(String error) { + ToastUtil.show(R.string.net_error); } }); } diff --git a/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java b/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java index cd4a847b5..da756f4c8 100644 --- a/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java +++ b/common/src/main/java/com/yunbao/common/manager/RandomPkManager.java @@ -5,6 +5,7 @@ import android.os.Looper; import android.util.Log; import com.yunbao.common.CommonAppContext; +import com.yunbao.common.R; import com.yunbao.common.bean.RankPkInfoBean; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; @@ -341,7 +342,7 @@ public class RandomPkManager { @Override public void onError(String error) { - + ToastUtil.show(R.string.net_error); } }); } diff --git a/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java b/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java index 9abff4007..2f155a71e 100644 --- a/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java +++ b/common/src/main/java/com/yunbao/common/views/CustomDrawerPopupView.java @@ -164,7 +164,7 @@ public class CustomDrawerPopupView extends DrawerPopupView { @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show(R.string.net_error); } }); } diff --git a/common/src/main/java/com/yunbao/common/views/DrawerTaskChildViewHolder.java b/common/src/main/java/com/yunbao/common/views/DrawerTaskChildViewHolder.java index f8aa7ee0f..5da6b3b3f 100644 --- a/common/src/main/java/com/yunbao/common/views/DrawerTaskChildViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/DrawerTaskChildViewHolder.java @@ -100,7 +100,7 @@ public class DrawerTaskChildViewHolder extends RecyclerView.ViewHolder { @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); } else { diff --git a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java index 0898040ab..15e9c34c4 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveAnchorMessageCustomPopup.java @@ -68,7 +68,7 @@ public class LiveAnchorMessageCustomPopup extends BottomPopupView { @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); diff --git a/common/src/main/java/com/yunbao/common/views/LiveOpenCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveOpenCustomPopup.java index 784fd7004..b3f6cd9d6 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveOpenCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveOpenCustomPopup.java @@ -142,7 +142,7 @@ public class LiveOpenCustomPopup extends CenterPopupView { @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); diff --git a/common/src/main/java/com/yunbao/common/views/LiveRobotMessageCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveRobotMessageCustomPopup.java index 7a84549d7..ea727fba8 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveRobotMessageCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveRobotMessageCustomPopup.java @@ -181,7 +181,7 @@ public class LiveRobotMessageCustomPopup extends BottomPopupView { @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); } diff --git a/common/src/main/java/com/yunbao/common/views/LiveRobotSayHelloCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveRobotSayHelloCustomPopup.java index a76fcadef..a04d91c13 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveRobotSayHelloCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveRobotSayHelloCustomPopup.java @@ -121,7 +121,7 @@ public class LiveRobotSayHelloCustomPopup extends BottomPopupView { @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); } diff --git a/common/src/main/java/com/yunbao/common/views/LiveRobotSettingCustomPopup.java b/common/src/main/java/com/yunbao/common/views/LiveRobotSettingCustomPopup.java index e8e195c49..be5d489f2 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveRobotSettingCustomPopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveRobotSettingCustomPopup.java @@ -251,7 +251,7 @@ public class LiveRobotSettingCustomPopup extends BottomPopupView implements View @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); diff --git a/common/src/main/java/com/yunbao/common/views/RobotMessageViewHolder.java b/common/src/main/java/com/yunbao/common/views/RobotMessageViewHolder.java index c14de79f2..34eb112d9 100644 --- a/common/src/main/java/com/yunbao/common/views/RobotMessageViewHolder.java +++ b/common/src/main/java/com/yunbao/common/views/RobotMessageViewHolder.java @@ -44,7 +44,7 @@ public class RobotMessageViewHolder extends RecyclerView.ViewHolder { @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); } diff --git a/common/src/main/java/com/yunbao/common/views/RobotSayHelloViewHoler.java b/common/src/main/java/com/yunbao/common/views/RobotSayHelloViewHoler.java index 75ee2e293..2b2951c06 100644 --- a/common/src/main/java/com/yunbao/common/views/RobotSayHelloViewHoler.java +++ b/common/src/main/java/com/yunbao/common/views/RobotSayHelloViewHoler.java @@ -44,7 +44,7 @@ public class RobotSayHelloViewHoler extends RecyclerView.ViewHolder { @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); } diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index 83e7f5f19..bb863f5f4 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -1020,4 +1020,5 @@ Limited ride And limited avatar frame Fan group conversion rate loading… Gift and seat effects have been turned off and can be turned on manually in "Settings". + i \'m sorry! An error occurred. diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 32093aa8b..b1f140067 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1041,4 +1041,5 @@ 粉絲團轉化率 加载中… 由於您的系統較老,我們自動為您屏蔽了禮物及座駕特效,可在「設置中心」手動打開。 + 抱歉!出錯了! diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index 7d0ad33b5..cc565e6ec 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -1288,6 +1288,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL @Override public void onError(String error) { Log.e("LiveUserMoreDialog", error); + ToastUtil.show( R.string.net_error); } }); } else { 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 f0643f52f..5ead5be28 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -1358,6 +1358,7 @@ public class LiveAudienceActivity extends LiveActivity { @Override public void onError(String error) { + ToastUtil.show(R.string.net_error); } }); 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 cb9cf47ff..ae017e117 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -1681,7 +1681,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show(R.string.net_error); } }); } diff --git a/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java index 57b0f377b..f4e095de7 100644 --- a/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/FreePkRecyclerAdapter.java @@ -163,7 +163,7 @@ public class FreePkRecyclerAdapter extends RefreshAdapter { @Override public void onError(String error) { - + ToastUtil.show(R.string.net_error); } }); }); diff --git a/live/src/main/java/com/yunbao/live/dialog/FreePkDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/FreePkDialogFragment.java index a52e33fb1..fc25a82b2 100644 --- a/live/src/main/java/com/yunbao/live/dialog/FreePkDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/FreePkDialogFragment.java @@ -26,6 +26,7 @@ import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordsTypeUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.FreePkRecyclerAdapter; @@ -170,7 +171,7 @@ public class FreePkDialogFragment extends AbsDialogFragment implements View.OnCl @Override public void onError(String error) { - + ToastUtil.show(com.yunbao.common.R.string.net_error); } }); } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java index a9ebf66b2..9d4dad966 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java @@ -10,6 +10,7 @@ import com.lxj.xpopup.XPopup; import com.yunbao.common.dialog.AbsDialogPopupWindow; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.LiveDataInfoRecyclerAdapter; @@ -88,7 +89,7 @@ public class LiveDataInfoDialog extends AbsDialogPopupWindow { @Override public void onError(String error) { - + ToastUtil.show(com.yunbao.common.R.string.net_error); } }); diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveGameDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveGameDialogFragment.java index 750f56dc7..4f7ae5a6f 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveGameDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveGameDialogFragment.java @@ -202,7 +202,7 @@ public class LiveGameDialogFragment extends AbsDialogFragment { @Override public void onError(String error) { Log.i("debug", "onError: " + error); - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); dismiss(); } }); diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveInputDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveInputDialogFragment.java index ec4a32d78..35680aa7f 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveInputDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveInputDialogFragment.java @@ -367,6 +367,7 @@ public class LiveInputDialogFragment extends AbsDialogFragment implements View.O @Override public void onError(String error) { + ToastUtil.show( R.string.net_error); } }); } diff --git a/live/src/main/java/com/yunbao/live/dialog/LivePrankDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LivePrankDialogFragment.java index d3e63b0d5..110932759 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LivePrankDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LivePrankDialogFragment.java @@ -260,7 +260,7 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java index 46d7789d9..d09fba828 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -27,6 +27,7 @@ import com.yunbao.common.dialog.AbsDialogPopupWindow; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.utils.DialogUitl; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.R; import com.yunbao.live.adapter.LiveTaskRecyclerAdapter; @@ -173,6 +174,7 @@ public class LiveTaskDialog extends AbsDialogPopupWindow { if (loadDialog != null) { loadDialog.dismiss(); } + ToastUtil.show(R.string.net_error); } }); } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTotalDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTotalDialog.java index 67f10500c..ba776b875 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveTotalDialog.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTotalDialog.java @@ -19,6 +19,7 @@ import com.yunbao.common.dialog.AbsDialogFragment; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.live.adapter.FunGamesAdapter; import com.yunbao.live.event.LiveAudienceEvent; @@ -92,6 +93,7 @@ public class LiveTotalDialog extends AbsDialogFragment { @Override public void onError(String error) { + ToastUtil.show( R.string.net_error); } }); } else { diff --git a/live/src/main/java/com/yunbao/live/dialog/RandomPkDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/RandomPkDialogFragment.java index 2503ee80a..021e83403 100644 --- a/live/src/main/java/com/yunbao/live/dialog/RandomPkDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/RandomPkDialogFragment.java @@ -194,7 +194,7 @@ public class RandomPkDialogFragment extends AbsDialogFragment implements View.On @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); } 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 8aa18d885..78c0b0f8e 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveRyLinkMicPkPresenter.java @@ -1689,7 +1689,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener { @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); diff --git a/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java index c4a4c2b1d..302a904d0 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveEndViewHolder.java @@ -29,6 +29,7 @@ import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.MicStatusManager; import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.AbsViewHolder; import com.yunbao.common.views.weight.ClipPathCircleImage; import com.yunbao.live.R; @@ -131,6 +132,7 @@ public class LiveEndViewHolder extends AbsViewHolder implements View.OnClickList @Override public void onError(String error) { + ToastUtil.show( R.string.net_error); } }); } 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 bdf59890f..631374fb3 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePushRyViewHolder.java @@ -356,7 +356,7 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index e3d0e9c8d..604304be3 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -102,6 +102,7 @@ import com.yunbao.common.utils.SVGAViewUtils; import com.yunbao.common.utils.ScreenDimenUtil; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.utils.formatBigNum; import com.yunbao.common.views.AbsViewHolder; @@ -1824,7 +1825,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); 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 34650a568..873947716 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRyAnchorViewHolder.java @@ -348,6 +348,7 @@ public class LiveRyAnchorViewHolder extends AbsLiveViewHolder { @Override public void onError(String error) { Log.e("PortraitLiveManager", error); + ToastUtil.show( R.string.net_error); } }); } 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 3a335c7b2..5d1c3e7b7 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -626,7 +626,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show(R.string.net_error); //直播间上部轮播【新人特惠】【趣味游戏】【幸运天使】 轮播接口 mLiveRoomViewHolder.showLiveRoomActivityBanner(); } diff --git a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java index a14825137..96e944f66 100644 --- a/main/src/main/java/com/yunbao/main/activity/EntryActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/EntryActivity.java @@ -275,7 +275,7 @@ public class EntryActivity extends AppCompatActivity { @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 3d0d61ddf..88bda75c5 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -541,6 +541,7 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene @Override public void onError(String error) { + ToastUtil.show(com.yunbao.live.R.string.net_error); } }); diff --git a/main/src/main/java/com/yunbao/main/activity/MainListActivity.java b/main/src/main/java/com/yunbao/main/activity/MainListActivity.java index afd5638cc..0bfb84862 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainListActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainListActivity.java @@ -176,7 +176,7 @@ public class MainListActivity extends AbsActivity implements OnItemClickListener @Override public void onError(String error) { - Log.e("MainListActivity", error); + ToastUtil.show( R.string.net_error); } }); initView(); diff --git a/main/src/main/java/com/yunbao/main/activity/MsgSettActivity.java b/main/src/main/java/com/yunbao/main/activity/MsgSettActivity.java index f7a7a3e72..3eb1ce462 100644 --- a/main/src/main/java/com/yunbao/main/activity/MsgSettActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MsgSettActivity.java @@ -239,7 +239,7 @@ public class MsgSettActivity extends AbsActivity { @Override public void onError(String error) { - + ToastUtil.show(com.yunbao.live.R.string.net_error); } }); } diff --git a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java index e41463cbb..45764d357 100644 --- a/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/PDLiveConversationListActivity.java @@ -443,7 +443,7 @@ public class PDLiveConversationListActivity extends AbsActivity implements View. @Override public void onError(String error) { - ToastUtil.show(error); + ToastUtil.show( R.string.net_error); } }); MessageIMManager.get(mContext).setSystemNumber(0); diff --git a/main/src/main/java/com/yunbao/main/adapter/MsgFollowAdapter.java b/main/src/main/java/com/yunbao/main/adapter/MsgFollowAdapter.java index 21574f708..74bbb5719 100644 --- a/main/src/main/java/com/yunbao/main/adapter/MsgFollowAdapter.java +++ b/main/src/main/java/com/yunbao/main/adapter/MsgFollowAdapter.java @@ -21,6 +21,7 @@ import com.yunbao.common.http.ResponseData; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.main.MainNetManager; import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.main.R; @@ -113,7 +114,7 @@ public class MsgFollowAdapter extends RecyclerView.Adapter @Override public void onError(String error) { - + ToastUtil.show( R.string.net_error); } }); } diff --git a/main/src/main/java/com/yunbao/main/adapter/SearchResultsAdapter.java b/main/src/main/java/com/yunbao/main/adapter/SearchResultsAdapter.java index 93df73152..342c4d55f 100644 --- a/main/src/main/java/com/yunbao/main/adapter/SearchResultsAdapter.java +++ b/main/src/main/java/com/yunbao/main/adapter/SearchResultsAdapter.java @@ -61,6 +61,7 @@ public class SearchResultsAdapter extends RecyclerView.Adapter { @Override public void onError(String error) { + ToastUtil.show(com.yunbao.live.R.string.net_error); } }); } diff --git a/main/src/main/java/com/yunbao/main/fragment/SearchRecommendFragment.java b/main/src/main/java/com/yunbao/main/fragment/SearchRecommendFragment.java index f0b0e53da..64741c9d8 100644 --- a/main/src/main/java/com/yunbao/main/fragment/SearchRecommendFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/SearchRecommendFragment.java @@ -85,6 +85,7 @@ public class SearchRecommendFragment extends BaseFragment { @Override public void onError(String error) { + ToastUtil.show( R.string.net_error); } }); } diff --git a/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java b/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java index 01d50d108..f90df4830 100644 --- a/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java @@ -16,6 +16,7 @@ import com.yunbao.common.bean.SearchModel; import com.yunbao.common.fragment.BaseFragment; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.main.MainNetManager; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.views.weight.OnRecyclerViewScrollListener; import com.yunbao.main.R; import com.yunbao.main.adapter.SearchRecommendBodyAdapter; @@ -116,6 +117,7 @@ public class SearchResultsItemFragment extends BaseFragment { @Override public void onError(String error) { + ToastUtil.show( R.string.net_error); } }); } diff --git a/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java b/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java index 99df2a9aa..2c3cf3b0a 100644 --- a/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java +++ b/main/src/main/java/com/yunbao/main/manager/imrongcloud/ConversationIMListManager.java @@ -20,6 +20,7 @@ import com.yunbao.common.http.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.manager.InstructorRemarkManager; import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.live.activity.PDLIiveChatActivity; import com.yunbao.live.activity.PDLiveConversationActivity; import com.yunbao.live.bean.SearchUserBean; @@ -317,7 +318,7 @@ public class ConversationIMListManager { @Override public void onError(String error) { - + ToastUtil.show(com.yunbao.live.R.string.net_error); } }); } diff --git a/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyViewHolder.java b/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyViewHolder.java index 1cc45937b..07a431e2d 100644 --- a/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyViewHolder.java @@ -53,6 +53,7 @@ public class SearchRecommendBodyViewHolder extends RecyclerView.ViewHolder { @Override public void onError(String error) { + ToastUtil.show( R.string.net_error); } }); } From 06dddb5273da4fc0435a376ccef06cbecd97ce0a Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Tue, 14 Mar 2023 16:18:40 +0800 Subject: [PATCH 54/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=94=A4=E8=B5=B7=E6=8E=A8=E7=89=B9APP=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 210add6e1..6f4878418 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,10 @@ + + + + Date: Tue, 14 Mar 2023 16:20:23 +0800 Subject: [PATCH 55/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A8=E7=89=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 210add6e1..6f4878418 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,10 @@ + + + + Date: Wed, 15 Mar 2023 15:49:56 +0800 Subject: [PATCH 56/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=9E=E9=BA=A6?= =?UTF-8?q?=E6=97=B6=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B050007=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=87=BA=E7=8E=B0=E8=AF=A5=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=97=B6=E5=B0=9D=E8=AF=95=E7=A6=BB=E5=BC=80=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E5=90=8E=E9=87=8D=E8=AF=95=E5=8A=A0=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/views/LivePlayRyViewHolder.java | 124 +++++++++++------- 1 file changed, 73 insertions(+), 51 deletions(-) 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 aef91f2bc..fc1c06205 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java @@ -123,6 +123,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { private TextView debugView; private LiveExoPlayerManager mPlayer; private boolean isPk = false; + private boolean userJoinLinkMic = false;//用户是否已加入房间 //0未申请1申请中2连麦中 RCRTCRoom rcrtcRoom; @@ -734,6 +735,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() { @Override public void onSuccess() { + userJoinLinkMic = false; Log.e("ry", "退出多人房间成功"); new Handler(Looper.getMainLooper()).post(new Runnable() { public void run() { @@ -883,6 +885,10 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { public void UsertoRY() { userinputStreamList.clear(); Log.e("ry", "主播同意了UsertoRY"); + if (userJoinLinkMic) {//已经在房间内,不再joinRoom直接去连麦 + subscribeMic(rcrtcRoom); + return; + } RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create() // 根据实际场景,选择音视频直播:LIVE_AUDIO_VIDEO 或音频直播:LIVE_AUDIO .setRoomType(RCRTCRoomType.LIVE_AUDIO_VIDEO) @@ -893,59 +899,33 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { @Override public void onSuccess(RCRTCRoom data) { + userJoinLinkMic = true; rcrtcRoom = data; - runOnUiThread(new Runnable() { - @Override - public void run() { - RCRTCEngine.getInstance().enableSpeaker(true); - //遍历远端用户发布的资源列表 - for (RCRTCInputStream stream : data.getLiveStreams()) { - if (stream.getMediaType() == RCRTCMediaType.VIDEO) { - //暂停播放 - mPlayer.stop(); - //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 - - //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 - RCRTCVideoView remoteView = new RCRTCVideoView(contexts); - ((RCRTCVideoInputStream) stream).setVideoView(remoteView); - //todo 本demo只演示添加1个远端用户的视图 - remoteView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - remoteView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT); - ry_view.addView(remoteView); - Log.e("ry", stream.getMediaType() + "rcrtcOtherRoom成功 :" + data.getLiveStreams().size()); - } - userinputStreamList.add(stream); - } - rcrtcRoom.getLocalUser().subscribeStreams(userinputStreamList, new IRCRTCResultCallback() { - - @Override - public void onFailed(RTCErrorCode errorCode) { - Log.e("ry", userinputStreamList.size() + LiveActivity.mLiveUid + "订阅失败" + errorCode.toString()); - - } - - @Override - public void onSuccess() { - Log.e("ry", "订阅资源成功"); -// new Handler().postDelayed(new Runnable() { -// @Override -// public void run() { - toMic(); -// } -// }, 3000); - - } - }); - } - }); - + subscribeMic(data); } @Override public void onFailed(RTCErrorCode errorCode) { Log.e("ry", LiveActivity.mLiveUid + errorCode + ""); - ToastUtil.show("房间失败" + errorCode); + if (errorCode.getValue() == 50007) {//userJoinLinkMic可能失效,直接leaveRoom + userJoinLinkMic = false; + RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + + } + + @Override + public void onSuccess() { + ToastUtil.show("离开房间成功"); + UsertoRY(); + } + }); + }else{ + ToastUtil.show("房间失败" + errorCode); + } } }); @@ -953,6 +933,53 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { } + private void subscribeMic(RCRTCRoom data) { + runOnUiThread(new Runnable() { + @Override + public void run() { + RCRTCEngine.getInstance().enableSpeaker(true); + //遍历远端用户发布的资源列表 + for (RCRTCInputStream stream : data.getLiveStreams()) { + if (stream.getMediaType() == RCRTCMediaType.VIDEO) { + //暂停播放 + mPlayer.stop(); + //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 + + //如果远端用户发布的是视频流,创建显示视图RCRTCVideoView,并添加到布局中显示 + RCRTCVideoView remoteView = new RCRTCVideoView(contexts); + ((RCRTCVideoInputStream) stream).setVideoView(remoteView); + //todo 本demo只演示添加1个远端用户的视图 + remoteView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + remoteView.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT); + ry_view.addView(remoteView); + Log.e("ry", stream.getMediaType() + "rcrtcOtherRoom成功 :" + data.getLiveStreams().size()); + } + userinputStreamList.add(stream); + } + rcrtcRoom.getLocalUser().subscribeStreams(userinputStreamList, new IRCRTCResultCallback() { + + @Override + public void onFailed(RTCErrorCode errorCode) { + Log.e("ry", userinputStreamList.size() + LiveActivity.mLiveUid + "订阅失败" + errorCode.toString()); + + } + + @Override + public void onSuccess() { + Log.e("ry", "订阅资源成功"); +// new Handler().postDelayed(new Runnable() { +// @Override +// public void run() { + toMic(); +// } +// }, 3000); + + } + }); + } + }); + } + /** * 主房间事件监听 * 详细说明请参考文档:https://www.rongcloud.cn/docs/api/android/rtclib_v4/cn/rongcloud/rtc/api/callback/IRCRTCRoomEventsListener.html @@ -1246,9 +1273,4 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { } - - - - - } From 5c1eef1419271fdafc95958df9e3bb20c8bfb148 Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Wed, 15 Mar 2023 18:11:07 +0800 Subject: [PATCH 57/63] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=80=E4=B8=AAtoast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yunbao/live/views/LivePlayRyViewHolder.java | 1 - 1 file changed, 1 deletion(-) 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 fc1c06205..643bbf1c0 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java @@ -919,7 +919,6 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { @Override public void onSuccess() { - ToastUtil.show("离开房间成功"); UsertoRY(); } }); From 8b46c574823cebce83784f3141c549cb404f7bf0 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Wed, 15 Mar 2023 18:12:01 +0800 Subject: [PATCH 58/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A8=E7=89=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.gradle b/config.gradle index ca9aaba88..02e61813b 100644 --- a/config.gradle +++ b/config.gradle @@ -4,7 +4,7 @@ ext { buildToolsVersion: "29.0.2", minSdkVersion : 21, targetSdkVersion : 31, - versionCode : 412, + versionCode : 413, versionName : "6.4.9" ] manifestPlaceholders = [ @@ -23,7 +23,7 @@ ext { baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB", baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S", // true表示谷歌支付 false - isGooglePlay : false, + isGooglePlay : true, //是否上报异常日志 isUploadLog : true ] From 07f8f46f1f4af29d3731e7441ced7b64a7bbc89a Mon Sep 17 00:00:00 2001 From: zlzw <583819556@qq.com> Date: Fri, 17 Mar 2023 09:50:26 +0800 Subject: [PATCH 59/63] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=94=A8=E6=88=B7=E6=97=A0=E6=B3=95=E4=B8=8A=E9=BA=A6?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E4=BC=98=E5=8C=96=EF=BC=9A=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=B8=8A=E6=8A=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/common/utils/LogUtil.java | 129 +++++++++++++----- .../live/views/LivePlayRyViewHolder.java | 27 ++-- 2 files changed, 112 insertions(+), 44 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/utils/LogUtil.java b/common/src/main/java/com/yunbao/common/utils/LogUtil.java index e05b249c5..66d0c75d7 100644 --- a/common/src/main/java/com/yunbao/common/utils/LogUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/LogUtil.java @@ -1,11 +1,9 @@ package com.yunbao.common.utils; import static android.provider.Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION; -import static androidx.core.content.PermissionChecker.PERMISSION_GRANTED; import static java.text.DateFormat.DEFAULT; -import android.Manifest; -import android.app.Activity; +import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -14,10 +12,10 @@ import android.os.Environment; import android.text.TextUtils; import android.util.Log; -import androidx.core.app.ActivityCompat; +import androidx.annotation.NonNull; import androidx.core.content.FileProvider; -import androidx.core.content.PermissionChecker; +import com.alibaba.fastjson.JSONObject; import com.lzy.okgo.OkGo; import com.lzy.okgo.callback.StringCallback; import com.lzy.okgo.model.Progress; @@ -31,7 +29,6 @@ import com.yunbao.common.CommonAppConfig; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; @@ -42,11 +39,20 @@ import java.nio.file.Files; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; + /** * Created by cxf on 2019/6/20. */ @@ -157,10 +163,10 @@ public class LogUtil { } catch (Exception e) { return; } - if (PermissionChecker.checkCallingOrSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PERMISSION_GRANTED) { + /* if (PermissionChecker.checkCallingOrSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PERMISSION_GRANTED) { ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100); return; - } + }*/ String title = "[PDLIVE]" + CommonAppConfig.getInstance().getUid() + "_"; String today = title + SimpleDateFormat.getDateInstance(DEFAULT, Locale.CHINA).format(new Date()); File dir = new File(context.getDir("files", Context.MODE_PRIVATE).getAbsolutePath() + File.separator); @@ -188,33 +194,90 @@ public class LogUtil { e.printStackTrace(); } if (zip.exists()) { - Intent share = new Intent(Intent.ACTION_SEND); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", zip); - share.putExtra(Intent.EXTRA_STREAM, contentUri); - share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - } else { - share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(zip)); - } - share.setType("application/vnd.ms-excel"); - share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - context.startActivity(Intent.createChooser(share, "分享文件")); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !CommonAppConfig.IS_GOOGLE_PLAY) { - if (!Environment.isExternalStorageManager()) { - Intent intent = new Intent(ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); - context.startActivity(intent); + DialogUitl.showSimpleDialog(context, "上报日志", new DialogUitl.SimpleCallback() { + @Override + public void onConfirmClick(Dialog dialog, String content) { + new Thread(new Runnable() { + @Override + public void run() { + uploadLog(zip); + } + }).start(); + dialog.dismiss(); + ToastUtil.show("OK"); + Intent share = new Intent(Intent.ACTION_SEND); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", zip); + share.putExtra(Intent.EXTRA_STREAM, contentUri); + share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + } else { + share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(zip)); + } + share.setType("application/vnd.ms-excel"); + share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + context.startActivity(Intent.createChooser(share, "分享文件")); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !CommonAppConfig.IS_GOOGLE_PLAY) { + if (!Environment.isExternalStorageManager()) { + Intent intent = new Intent(ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); + context.startActivity(intent); + } + } + File out = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + zip.getName()); + try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Files.copy(zip.toPath(), out.toPath()); + } + } catch (Exception e) { + e.printStackTrace(); + } } - } - File out = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + zip.getName()); - try { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - Files.copy(zip.toPath(), out.toPath()); - } - } catch (Exception e) { - e.printStackTrace(); - } + }); + } } + private static String TAG="Upload"; + private static void uploadLog(File log) { + + JSONObject body = new JSONObject(); + + MultipartBody requestBody = new MultipartBody.Builder() + .addFormDataPart("uid", CommonAppConfig.getInstance().getUid()) + .addFormDataPart("time", new SimpleDateFormat("yyyy-DD-mm HH:mm:ss", Locale.getDefault()).format(new Date())) + .addFormDataPart("isGoogle", CommonAppConfig.IS_GOOGLE_PLAY+"") + .addFormDataPart("appVersion", CommonAppConfig.getInstance().getVersion()) + .addFormDataPart("file","file", RequestBody.create(MediaType.parse("application/octet-stream"),log)) //上报日志文件 + .build(); + + body.put("uid", CommonAppConfig.getInstance().getUid()); + body.put("time", new SimpleDateFormat("yyyy-DD-mm HH:mm:ss", Locale.getDefault()).format(new Date())); + body.put("isGoogle", CommonAppConfig.IS_GOOGLE_PLAY); + body.put("appVersion", CommonAppConfig.getInstance().getVersion()); + + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(3, TimeUnit.SECONDS) + .build(); + Request request = new Request.Builder() + //.url("https://newht.yaoulive.com/index.php/api/error_log/report") //无法接受文件 + .url("https://tools.yutou233.cn/public/file/request.do")//临时上报地址,可接受文件 + .post(requestBody) + .build(); + client.newCall(request) + .enqueue(new Callback() { + @Override + public void onFailure(@NonNull Call call, @NonNull IOException e) { + Log.e(TAG, "error",e ); + } + + @Override + public void onResponse(Call call, okhttp3.Response response) throws IOException { + String body = response.body().string(); + Log.i(TAG, "onResponse: "+body); + } + + + }); + } + } 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 643bbf1c0..0267d522b 100644 --- a/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LivePlayRyViewHolder.java @@ -732,6 +732,19 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { Log.e("ry", "下麦成功"); // 该用户切换为观众成功,可以以观众身份进行音视频 //退出rtc播放 + leaveRoom(); + } + + /** + * 当切换失败且不影响当前角色继续音视频时回调 + * @param errorCode 失败错误码 + */ + @Override + public void onFailed(RTCErrorCode errorCode) { + Log.e("ry", "下麦失败" + errorCode); + leaveRoom(); + } + private void leaveRoom(){ RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() { @Override public void onSuccess() { @@ -761,21 +774,11 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { @Override public void onFailed(RTCErrorCode errorCode) { Log.e("ry", errorCode + "退出多人房间成功"); - + userJoinLinkMic = false; } }); } - - /** - * 当切换失败且不影响当前角色继续音视频时回调 - * @param errorCode 失败错误码 - */ - @Override - public void onFailed(RTCErrorCode errorCode) { - Log.e("ry", "下麦失败" + errorCode); - - } }); } } else if ("Debug".equals(str)) { @@ -938,7 +941,9 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder { public void run() { RCRTCEngine.getInstance().enableSpeaker(true); //遍历远端用户发布的资源列表 + Log.i(TAG, "软件资源数量:"+data.getLiveStreams().size()); for (RCRTCInputStream stream : data.getLiveStreams()) { + Log.i(TAG, "资源流 type: "+stream.getMediaType()); if (stream.getMediaType() == RCRTCMediaType.VIDEO) { //暂停播放 mPlayer.stop(); From 8455d1253c0a2f44920ef88e5cba7e4ebddb7fa4 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Fri, 17 Mar 2023 10:19:35 +0800 Subject: [PATCH 60/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E7=9A=84=E4=B8=AD=E8=8B=B1=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/main/res/values-en/strings.xml | 61 ++++++- common/src/main/res/values/strings.xml | 156 +++++++++++------- config.gradle | 2 +- .../main/res/layout/dialog_live_blowkiss.xml | 3 + .../res/layout/dialog_live_chat_input.xml | 2 +- live/src/main/res/layout/view_live_room.xml | 1 + live/src/main/res/layout/view_noble_seat.xml | 5 +- live/src/main/res/values-en/strings.xml | 33 ++++ live/src/main/res/values/strings.xml | 62 +++---- .../com/yunbao/main/dialog/SigninDialog.java | 5 +- .../yunbao/main/views/MainMeViewHolder.java | 4 +- main/src/main/res/layout/activity_entry.xml | 10 +- .../src/main/res/layout/activity_find_pwd.xml | 6 +- main/src/main/res/layout/activity_login.xml | 133 ++++++++------- .../src/main/res/layout/activity_register.xml | 4 +- .../src/main/res/layout/dialog_login_tips.xml | 135 +++++++-------- main/src/main/res/layout/signin_dialog.xml | 70 ++++---- main/src/main/res/mipmap-mdpi/btn_goto.png | Bin 4239 -> 5919 bytes main/src/main/res/mipmap-mdpi/btn_signin.png | Bin 3507 -> 4449 bytes 19 files changed, 414 insertions(+), 278 deletions(-) diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index bb863f5f4..8223456c0 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -845,8 +845,8 @@ Limited ride And limited avatar frame Contact a mentor now! Withdrawal succeeded normal barrage - floating screen - Whole station horn + Float barrage + Total speaker quote Available times: %s Note: Update times at 4:00 am on the 1st of each month Content cannot be empty @@ -882,7 +882,8 @@ Limited ride And limited avatar frame Notice Online Service Hot Ticket - + Register and log in + Sign up for PD LIVE Tell the world! Tell the world! %s recommends anchor %s to everyone! Tell the world! %s recommends the anchor %s to everyone, and the splendid glance is amazing! @@ -1021,4 +1022,58 @@ Limited ride And limited avatar frame loading… Gift and seat effects have been turned off and can be turned on manually in "Settings". i \'m sorry! An error occurred. + Congratulations on getting it! + You have accumulated sign-ups this month %s Heaven + Sign in for 1 more day to get extra bonus. + Sign in to the center」 + Go to the「Sign-in Center」to get extra rewards! + Sign-in Center + Back to top + Go to the sign-in center + Confirm pick up + Unable to login? Click here to contact customer service + By logging in, you agree to the Terms of + Service + and + Privacy + Terms and policies + For details, please read the following message to install the application: + Welcome to PD LIVE. For your personal information and privacy, we will adopt the highest standards of treatment and protection. + In order to provide you with one-click sharing service, our product integrates Mob+U-Share SDK, The Mob+SDK needs to collect your device Mac address, unique device identifier (1MEIandroid IDIDFAOPENUDIDGUID, SIM card IMSI information), and public social account information that you need to share in order to complete the one-click sharing service. And through the geographical location calibration report data accuracy, provide basic anti-cheating services. For the sake of your information security, we have made data security and confidentiality agreements with third-party SDK service providers, and these companies will strictly abide by our data privacy and security requirements. We will not share your personally identifiable information with them unless we have your consent. To facilitate you better understand/Mob + data types and USES, and how to protect your personal information, you can log on to https:www.mob.com aboutpolicy understand [Mob +] privacy policy). + Clicking Agree means you have read and agree to all of the above.。 + agreement + Welcome to PD LIVE. + gift + User service agreement + 一 Fan privilege 一 + Gift name + True love ranking + and + Speech memo + Privacy policy + Daily gift pack + To one\'s liking + Opened a pair of + guard + I bought a ride + Purchased a beautiful number + VIP + Random PK + VIP seating + True love ranking + Please enter the number + You are the current anchor whose weekly guardian \n guardian date is up + My %1$s: + Top-up instructions + Registration means consent + One-time gift ≥2000 diamonds), can obtain fan privilege yo + Top up + User level + aristocracy + Fan club + Voice connection is not enabled + Wall of honor + Get a fan badge for giving gifts + Whether to clear unread messages + The application collects location data to support login and registration functions. diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index b1f140067..1161f2d78 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -720,10 +720,10 @@ 購買了座騎 購買了靚號 VIP + 随机PK 心願單 娛樂整蠱 多人PK - 随机PK 語音連麥 周星榜 暫時離開 @@ -739,22 +739,22 @@ 禮物 用戶服務協議 一 粉絲特權 一 - 包裹 - 許下心願,觀衆幫你實現 禮物名稱 - 心願單 真愛排行 發言微章 - 生成心願 隱私政策 每日禮包 - 添加禮物和數量 貴賓座席 - 當日設置的心願,會在當天24:00失效 真爱排行 - 複製 送禮獲得粉絲微章 + 當日設置的心願,會在當天24:00失效 + 添加禮物和數量 + 包裹 + 許下心願,觀衆幫你實現 + 複製 + 心願單 + 生成心願 直播中 休息中 @@ -959,14 +959,14 @@ 換一批 聊聊天 想在其他APP上方也顯示小窗,\n可前往設置進行授權。 - 恭喜 %s 在幸運天使中抽中 %s!下一個幸運天使就是你哦! - 恭喜 %s 在好運百分百中抽中 %s!快去接力好運吧~ - 守護團%s人 - 領取 - 去完成 - 已領取 - 畫質選擇 - 更多設置 + 恭喜 %s 在幸運天使中抽中 %s!下一個幸運天使就是你哦! + 恭喜 %s 在好運百分百中抽中 %s!快去接力好運吧~ + 守護團%s人 + 領取 + 去完成 + 已領取 + 畫質選擇 + 更多設置 查看更多 礼物正在获取中... 開始PK @@ -976,55 +976,55 @@ 結束\nPK 時間 %s - 接受 - 拒绝 - 坚持拒绝 - 随机PK提示 + 接受 + 拒绝 + 坚持拒绝 + 随机PK提示 - 自動發言機器人設置 - 機器人開關 - 機器人名字設置 - 字數限制2-8個字 - 自動打招呼設置 - 已配置條數 - 自動發消息設置 - 前往設置 - 感謝送禮、PK開始、PK結束的自動機器人消息,\n暫不支持自定義。 - 添加內容 - 每隔一段時間,機器人自動隨機以下一句話發出。 - 填寫內容推薦,如:求送心願單、加粉絲團等 - 自動發言間隔時間(分鐘) - 最少間隔5分鐘1次 - 當有用戶進入直播間時,機器人會@該用戶並自動 - 隨機以下一句話。最少設置1條,最多20條。 - 機器人設置 - 高清 - 流暢 - 超高清 - 確定清晰度開播後,需要重新開播才能更改 - 開播設置確認 - 清晰度 - 直播頻道 - 開播 - 機器人 - 已設置 - 未設置 - - - 超高清提示 - 在網速不穩定的情況下,選擇超高清將會有可能導致直播間畫面卡頓,是否確認選擇? - 堅持選擇 - 網絡提示 - 系統監測到您的網絡不穩定,設備內存不足將會影響到您的直播流暢度,因此建議您選擇流暢清晰度。 - 检查新版本 - 發現新版本,點此更新 - 已是最新版本 - 更新中 - 無法選擇,該主播未開啟超高清直播。 - 無法選擇,該主播未開啟高清直播。 - 抱歉,該功能暫停使用中。 - 手機號 - 開播數據 + 自動發言機器人設置 + 機器人開關 + 機器人名字設置 + 字數限制2-8個字 + 自動打招呼設置 + 已配置條數 + 自動發消息設置 + 前往設置 + 感謝送禮、PK開始、PK結束的自動機器人消息,\n暫不支持自定義。 + 添加內容 + 每隔一段時間,機器人自動隨機以下一句話發出。 + 填寫內容推薦,如:求送心願單、加粉絲團等 + 自動發言間隔時間(分鐘) + 最少間隔5分鐘1次 + 當有用戶進入直播間時,機器人會@該用戶並自動 + 隨機以下一句話。最少設置1條,最多20條。 + 機器人設置 + 高清 + 流暢 + 超高清 + 確定清晰度開播後,需要重新開播才能更改 + 開播設置確認 + 清晰度 + 直播頻道 + 開播 + 機器人 + 已設置 + 未設置 + + + 超高清提示 + 在網速不穩定的情況下,選擇超高清將會有可能導致直播間畫面卡頓,是否確認選擇? + 堅持選擇 + 網絡提示 + 系統監測到您的網絡不穩定,設備內存不足將會影響到您的直播流暢度,因此建議您選擇流暢清晰度。 + 检查新版本 + 發現新版本,點此更新 + 已是最新版本 + 更新中 + 無法選擇,該主播未開啟超高清直播。 + 無法選擇,該主播未開啟高清直播。 + 抱歉,該功能暫停使用中。 + 手機號 + 開播數據 點擊查看 主播任務 我已閱讀並同意 @@ -1042,4 +1042,32 @@ 加载中… 由於您的系統較老,我們自動為您屏蔽了禮物及座駕特效,可在「設置中心」手動打開。 抱歉!出錯了! + + 恭喜你獲得了 + 本月您已累積簽到%s天 + 再簽到1天即可獲得額外獎勵。 + 「簽到中心」 + 快前往「簽到中心」獲得額外獎勵吧! + 签到中心 + 返回首页 + 前往签到中心 + 確認領取 + 無法登陸?點此聯繫客服 + 進入下一步即代表同意 + 用户協議 + + 隱私條款 + 條款和政策 + 歡迎來到PD LIVE,對於您的個人信息及隱私,我們將採用最高標準對待和保護。 + 詳情請您閱讀以下安裝應用程序的消息: + 為了向您提供一鍵分享服務,我們的產品集成Mob+U-Share SDK,Mob+SDK需要收集您的設備Mac地址、唯一設備識別碼(1MEI/android ID/IDFA/OPENUDID/GUID、 SIM卡IMSI信息)以及您需要分享的社交賬號公開信息,以便完成一鍵分享服務。並通過地理位置校準報表數據準確性,提供基礎反作弊服務。為了您的信息安全,我們已與第三方SDK服務商進行數據安全保密約定,這些公司會嚴格遵守我們的數據隱私和安全要求。 除非得到您的同意,我們不會與其共享您的個人身份信息。為便於您更好地了解[Mob+]采集的數據類型及用途,以及何保護您的個人信息,您可以登陸https://www.mob.com/about/policy了解[Mob+]隱私權政)。 + 同意 + 點擊同意後即代表您已閱讀並同意以上所有內容。 + 本應用會收集位置數據以支持登錄和註冊的功能使用。 + 歡迎來到PD LIVE。 + 註冊PD LIVE + 註冊並登錄 + + + diff --git a/config.gradle b/config.gradle index 02e61813b..3ccc221ab 100644 --- a/config.gradle +++ b/config.gradle @@ -23,7 +23,7 @@ ext { baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB", baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S", // true表示谷歌支付 false - isGooglePlay : true, + isGooglePlay : false, //是否上报异常日志 isUploadLog : true ] diff --git a/live/src/main/res/layout/dialog_live_blowkiss.xml b/live/src/main/res/layout/dialog_live_blowkiss.xml index ad93e1823..6c409e76c 100644 --- a/live/src/main/res/layout/dialog_live_blowkiss.xml +++ b/live/src/main/res/layout/dialog_live_blowkiss.xml @@ -195,6 +195,9 @@ + android:layout_weight="1.2" /> diff --git a/live/src/main/res/layout/view_live_room.xml b/live/src/main/res/layout/view_live_room.xml index 806083aca..063e7d89a 100644 --- a/live/src/main/res/layout/view_live_room.xml +++ b/live/src/main/res/layout/view_live_room.xml @@ -2307,6 +2307,7 @@ \ No newline at end of file diff --git a/live/src/main/res/layout/view_noble_seat.xml b/live/src/main/res/layout/view_noble_seat.xml index 78524a409..dc53e7d07 100644 --- a/live/src/main/res/layout/view_noble_seat.xml +++ b/live/src/main/res/layout/view_noble_seat.xml @@ -5,6 +5,7 @@ android:layout_height="wrap_content" android:orientation="vertical" tools:ignore="MissingDefaultResource"> + diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index a33906b78..db75e2c0b 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -34,4 +34,37 @@ This live data statistics Historical data can be viewed in the anchor center * Non-real-time calculation of data + + Be TA\'s guardian, escort for TA! + return + Be praised + Open aristocracy + Enjoy exclusive privileges! + Head to the noble Center + Swipe up to cancel send + Release cancel send + No recording has been recognized in over 10 seconds + Identity privilege + Nobleman\'s seat + %s applies for connected wheat. Check whether + The wheat has been kicked off + An invitation has been sent and is waiting for the user to accept + The request has been agreed and is awaiting acceptance by the user + Random PK + PK main rules: + Random PK qualifying time + 12:00~17:00、19:00~23:59 + 1. After matching, the system will automatically select opponents for PK; + 2. If you cannot match your opponent for a long time, you can try to match again; + 3. During the PK process, if there is any delay or delay, please check your personal device and network first, and then try to log in again and start broadcasting. + 4, the security department will be 24 hours of inspection, please civilized PK, strictly abide by the anchor rules; + Random PK switch: + Start matching + Match %s + Click again to cancel the match + Exiting match %s + It\'s also possible to match an opponent during the exit process + Please enter the anchor nickname or id you want to pk + The other team is engaged in a PK + The PK number is used up \ No newline at end of file diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index e4fb07da6..cef5b3236 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - 成爲TA的守護,爲TA保駕護航! - 返還 + 成爲TA的守護,爲TA保駕護航! + 返還 暫時無人上榜,快來成為第一位上榜的人吧! 主播正在等待您的守護! 未上榜 @@ -19,36 +19,36 @@ 所有人可觀看 僅擁有房間密碼的人可觀看 確認 - 開通貴族 - 享受專屬特權! - 前往貴族中心 - 手指上滑,取消發送 - 松開取消發送 - 已超过10秒未识别到录音 - 身份特權 - 貴族坐席 + 開通貴族 + 享受專屬特權! + 前往貴族中心 + 手指上滑,取消發送 + 松開取消發送 + 已超过10秒未识别到录音 + 身份特權 + 貴族坐席 當前連麥語音人數已達到3人,無法再添加。 - %s 申請連麥,是否查看 - 已踢下麥 - 已發出邀請,等待用戶接受 - 已同意請求,等待用戶接受 - 隨機PK - PK主要規則說明: - 隨機PK排位賽時間 - 12:00~17:00、19:00~23:59 - 1、開始匹配後,系統將自動挑選對手進行PK; - 2、若長時間無法匹配到對手,可嘗試重新匹配; - 3、PK過程中卡頓及延遲,可先檢查個人設備及網絡後,嘗試重新登錄並開播; - 4、安全部門將會24小時巡查,請文明PK,嚴格遵守主播守則; - 隨機PK開關: - 開始匹配 - 匹配中 %s - 再次點擊可取消匹配 - 正在退出匹配 %s - 退出過程中也有可能匹配到對手 - 請輸入您要pk的主播昵稱或id - 對方正在PK中 - PK次數已用完 + %s 申請連麥,是否查看 + 已踢下麥 + 已發出邀請,等待用戶接受 + 已同意請求,等待用戶接受 + 隨機PK + PK主要規則說明: + 隨機PK排位賽時間 + 12:00~17:00、19:00~23:59 + 1、開始匹配後,系統將自動挑選對手進行PK; + 2、若長時間無法匹配到對手,可嘗試重新匹配; + 3、PK過程中卡頓及延遲,可先檢查個人設備及網絡後,嘗試重新登錄並開播; + 4、安全部門將會24小時巡查,請文明PK,嚴格遵守主播守則; + 隨機PK開關: + 開始匹配 + 匹配中 %s + 再次點擊可取消匹配 + 正在退出匹配 %s + 退出過程中也有可能匹配到對手 + 請輸入您要pk的主播昵稱或id + 對方正在PK中 + PK次數已用完 當日連續開播時長(分鐘) 當日累計PK次數(不限模式) 當日累積新增關註粉絲 diff --git a/main/src/main/java/com/yunbao/main/dialog/SigninDialog.java b/main/src/main/java/com/yunbao/main/dialog/SigninDialog.java index ed72b3b45..a7e1b7d58 100644 --- a/main/src/main/java/com/yunbao/main/dialog/SigninDialog.java +++ b/main/src/main/java/com/yunbao/main/dialog/SigninDialog.java @@ -2,6 +2,7 @@ package com.yunbao.main.dialog; import static com.yunbao.common.utils.RouteUtil.PATH_REWARD; +import android.annotation.SuppressLint; import android.os.Bundle; import android.view.Gravity; import android.view.View; @@ -44,6 +45,7 @@ public class SigninDialog extends AbsDialogFragment { window.setAttributes(params); } + @SuppressLint("StringFormatInvalid") @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -73,6 +75,7 @@ public class SigninDialog extends AbsDialogFragment { return; } gold.setText(bundle.getString("send_gold") + "金豆+" + bundle.getString("send_exp") + "EXP"); - sign_day.setText("本月您已累積簽到" + bundle.getString("sign_day") + "天,"); + + sign_day.setText(String.format(getString(R.string.this_month), bundle.getString("sign_day"))); } } diff --git a/main/src/main/java/com/yunbao/main/views/MainMeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainMeViewHolder.java index fb8f59241..dd8f49e3a 100644 --- a/main/src/main/java/com/yunbao/main/views/MainMeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainMeViewHolder.java @@ -302,8 +302,8 @@ public class MainMeViewHolder extends AbsMainViewHolder implements OnItemClickLi user_noble_time.setText(mContext.getResources().getString(R.string.open_noble_text)); } String singnature = u.getSignature(); - if (TextUtils.equals(singnature, "貴族") || TextUtils.equals(singnature, "贵族")) { - singnature = singnature + "中心"; + if (TextUtils.equals(singnature, "這個人很懶,什麼也沒留下") ||TextUtils.equals(singnature, "这家伙很懒,什么都没留下") || TextUtils.isEmpty(singnature)) { + singnature ="The guy was lazy and didn't write anything."; } signature.setText(singnature); CommonAppConfig appConfig = CommonAppConfig.getInstance(); diff --git a/main/src/main/res/layout/activity_entry.xml b/main/src/main/res/layout/activity_entry.xml index d88c12418..a46ae684e 100644 --- a/main/src/main/res/layout/activity_entry.xml +++ b/main/src/main/res/layout/activity_entry.xml @@ -235,7 +235,7 @@ android:id="@+id/tv_customer" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="無法登陸?點此聯繫客服" + android:text="@string/customer_service2" android:textColor="@color/white" android:textSize="11sp" /> @@ -252,7 +252,7 @@ @@ -262,7 +262,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="1dp" - android:text="用户協議" + android:text="@string/user_protocol2" android:textColor="#ffb1b1b1" android:textSize="10sp" /> @@ -270,7 +270,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="1dp" - android:text="和" + android:text="@string/and" android:textColor="#ffb1b1b1" android:textSize="10sp" /> @@ -279,7 +279,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="1dp" - android:text="隱私條款" + android:text="privacy_terms" android:textColor="#ffb1b1b1" android:textSize="10sp" /> diff --git a/main/src/main/res/layout/activity_find_pwd.xml b/main/src/main/res/layout/activity_find_pwd.xml index d1add67c9..b59f57aaa 100644 --- a/main/src/main/res/layout/activity_find_pwd.xml +++ b/main/src/main/res/layout/activity_find_pwd.xml @@ -37,7 +37,7 @@ diff --git a/main/src/main/res/layout/activity_login.xml b/main/src/main/res/layout/activity_login.xml index d9cef6f52..c46ea6cbd 100644 --- a/main/src/main/res/layout/activity_login.xml +++ b/main/src/main/res/layout/activity_login.xml @@ -1,62 +1,60 @@ - - + android:orientation="vertical"> - + - - + + + + + android:textStyle="bold" /> + android:text="@string/come_to" + android:textColor="#ffb1b1b1" + android:textSize="20sp" /> - + android:layout_marginBottom="15dp" + android:background="@drawable/border_grey_50" + android:gravity="center_vertical" + android:orientation="horizontal"> + android:src="@mipmap/icon_phone" /> + android:id="@+id/edit_phone" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@null" + android:gravity="left|center" + android:hint="@string/login_input_phone" + android:maxLength="20" + android:singleLine="true" + android:textColor="#161616" + android:textColorHint="#B6B6B6" + android:textSize="16sp" /> + android:layout_marginBottom="15dp" + android:background="@drawable/border_grey_50" + android:gravity="center_vertical" + android:orientation="horizontal"> + android:src="@mipmap/icon_password" /> + android:layout_marginTop="10dp" + android:visibility="gone"> + android:textColor="@color/red" + android:textSize="8sp" /> diff --git a/main/src/main/res/layout/activity_register.xml b/main/src/main/res/layout/activity_register.xml index a0db7a625..a70f7261f 100644 --- a/main/src/main/res/layout/activity_register.xml +++ b/main/src/main/res/layout/activity_register.xml @@ -40,7 +40,7 @@ android:layout_marginLeft="41dp" android:layout_marginTop="30dp" android:layout_marginBottom="25dp" - android:text="註冊PD LIVE" + android:text="@string/sign_up_for" android:textColor="#ffff8d41" android:textSize="24sp" /> @@ -246,7 +246,7 @@ android:gravity="center" android:clickable="true" android:onClick="registerClick" - android:text="註冊並登錄" + android:text="@string/register_and_log_in" android:textColor="@color/white" android:textSize="16sp" android:focusable="true" /> diff --git a/main/src/main/res/layout/dialog_login_tips.xml b/main/src/main/res/layout/dialog_login_tips.xml index 206fd5c09..5fb04e8cf 100644 --- a/main/src/main/res/layout/dialog_login_tips.xml +++ b/main/src/main/res/layout/dialog_login_tips.xml @@ -1,100 +1,105 @@ + android:background="@mipmap/login_ties_bg" + android:orientation="vertical"> - - - - - - + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginBottom="100dp" + android:gravity="center" + android:orientation="vertical"> - + - + - + + + + + + + + + + + -