From ea6891855f4713d880f04fa22f5eb58621729742 Mon Sep 17 00:00:00 2001 From: huangjian Date: Wed, 23 Nov 2022 15:52:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E6=92=ADPK=E6=96=B0=E5=A2=9E=E9=9D=99?= =?UTF-8?q?=E9=9F=B3=E5=AF=B9=E6=96=B9=E9=BA=A6=E4=BD=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/dialog/RoomOperationDialog.java | 2 +- .../avroom/fragment/SingleRoomFragment.kt | 10 ++++----- .../avroom/presenter/AvRoomPresenter.java | 9 ++++++-- .../singleroompk/SingleRoomPKBoardView.kt | 21 ++++++++++++++++++ .../single_room_pk_ic_another_mic_close.png | Bin 0 -> 1783 bytes .../single_room_pk_ic_another_mic_open.png | Bin 0 -> 2229 bytes .../layout_single_room_pk_board_view.xml | 10 ++++++++- .../mango/core/manager/IMNetEaseManager.java | 6 +++++ .../mango/core/manager/AvRoomDataManager.java | 8 +++---- .../room/anotherroompk/ShowPkMatchEvent.java | 2 +- .../room/anotherroompk/SingleRoomPKModel.kt | 8 ++++--- .../com/mango/core/room/bean/RoomInfo.java | 2 +- 12 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_close.png create mode 100644 app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_open.png diff --git a/app/src/main/java/com/mango/moshen/avroom/dialog/RoomOperationDialog.java b/app/src/main/java/com/mango/moshen/avroom/dialog/RoomOperationDialog.java index 21fb0d909..8d90a09e4 100644 --- a/app/src/main/java/com/mango/moshen/avroom/dialog/RoomOperationDialog.java +++ b/app/src/main/java/com/mango/moshen/avroom/dialog/RoomOperationDialog.java @@ -266,7 +266,7 @@ public class RoomOperationDialog extends BottomSheetDialog { final RoomPkBean pkBean = AvRoomDataManager.get().roomPkLiveData.getValue(); if (AvRoomDataManager.get().isRoomOwner() && !AvRoomDataManager.get().isCpRoom()) { - boolean isMatch = AvRoomDataManager.get().getPkMatchEndTime() > 0; + boolean isMatch = AvRoomDataManager.get().getPkMatchStartTime() > 0; boolean isEndPk = false; String str = AvRoomDataManager.get().isOpenAnotherPKMode() ? "主播PK中" : "主播PK"; if (pkBean != null) { diff --git a/app/src/main/java/com/mango/moshen/avroom/fragment/SingleRoomFragment.kt b/app/src/main/java/com/mango/moshen/avroom/fragment/SingleRoomFragment.kt index a4a284f1d..375fe2454 100644 --- a/app/src/main/java/com/mango/moshen/avroom/fragment/SingleRoomFragment.kt +++ b/app/src/main/java/com/mango/moshen/avroom/fragment/SingleRoomFragment.kt @@ -118,7 +118,7 @@ class SingleRoomFragment : BaseRoomFragment { fansTeamViewModel.loadFansTeamInitInfo() - initRoomPkOrder(AvRoomDataManager.get().pkMatchEndTime) + initRoomPkOrder(AvRoomDataManager.get().pkMatchStartTime) } RoomEvent.REQUEST_UP_MIC -> { (roomEvent.chatRoomMessage?.attachment as? RequestUpmicAttachment)?.userInfo?.let { @@ -269,9 +269,9 @@ class SingleRoomFragment : BaseRoomFragment 0) { gameBinding.llRoomPkOrder.visibility = View.VISIBLE pkMatchDisposable = @@ -308,7 +308,7 @@ class SingleRoomFragment : BaseRoomFragment { AvRoomDataManager.get().updateServiceRoomInfo(roomInfo); StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_LIST_TYPE, "区分房间类型:" + roomInfo.getRoomTypeLable()); - initAnotherPKData(); mAvRoomModel.enterRoom(roomInfo.getRoomId(), 3, fromType, fromNick, fromUid) .flatMap(this::dealServerMicInfo) .map(this::dealMicMemberFromIMNet) @@ -143,6 +142,7 @@ public class AvRoomPresenter extends BaseMvpPresenter { .subscribe((stringServiceResult) -> EventBus.getDefault().post(new AudioPartyOpenEvent())); mAvRoomModel.loadMessageHistory(AvRoomDataManager.get().clearScreenTime); IMNetEaseManager.get().joinAvRoom(); + initAnotherPKData(); }, this::dealEnterRoomError); } @@ -151,7 +151,12 @@ public class AvRoomPresenter extends BaseMvpPresenter { if (AvRoomDataManager.get().isOpenAnotherPKMode()) { RoomPKModel.INSTANCE.getRoomPKData(AvRoomDataManager.get().getRoomUid()) .compose(bindToLifecycle()) - .subscribe(roomPkBean -> AvRoomDataManager.get().roomPkLiveData.setValue(roomPkBean)); + .subscribe(roomPkBean -> { + AvRoomDataManager.get().roomPkLiveData.setValue(roomPkBean); + if (AvRoomDataManager.get().isSingleRoom()){ + AudioEngineManager.get().setRemoteMute(roomPkBean.getAUid(), roomPkBean.getAMicStatus() == 0); + } + }); } if (AvRoomDataManager.get().isHasOpenWishGift()) { diff --git a/app/src/main/java/com/mango/moshen/avroom/singleroompk/SingleRoomPKBoardView.kt b/app/src/main/java/com/mango/moshen/avroom/singleroompk/SingleRoomPKBoardView.kt index 5f6d8177e..cff516844 100644 --- a/app/src/main/java/com/mango/moshen/avroom/singleroompk/SingleRoomPKBoardView.kt +++ b/app/src/main/java/com/mango/moshen/avroom/singleroompk/SingleRoomPKBoardView.kt @@ -17,8 +17,10 @@ import com.mango.moshen.ui.user.UserInfoActivity import com.mango.moshen.ui.utils.load import com.mango.core.im.custom.bean.RoomPkBean import com.mango.core.manager.AvRoomDataManager +import com.mango.core.room.anotherroompk.SingleRoomPKModel import com.mango.core.utils.CurrentTimeUtils import com.mango.core.utils.subAndReplaceDot +import com.mango.core.utils.toast import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -54,6 +56,18 @@ class SingleRoomPKBoardView @JvmOverloads constructor( SingleRoomPkRuleDialog.newInstance().show(context) } + binding.ivMuteAnother.setOnClickListener { + if (AvRoomDataManager.get().isRoomOwner) { + roomPkBean?.let { + SingleRoomPKModel + .muteSingleRoomPkOtherMic(it.roundId, it.aMicStatus xor 1) + .subscribe() + } + } else { + "主播已关闭对方房间的声音".toast() + } + } + } override fun onDetachedFromWindow() { @@ -118,6 +132,13 @@ class SingleRoomPKBoardView @JvmOverloads constructor( binding.ivPkResult.setImageResource(R.drawable.single_room_pk_ic_result_win) } + if (roomPkBean?.aMicStatus == 0) { + binding.ivMuteAnother.isVisible = true + binding.ivMuteAnother.setImageResource(R.drawable.single_room_pk_ic_another_mic_close) + } else { + binding.ivMuteAnother.setImageResource(R.drawable.single_room_pk_ic_another_mic_open) + binding.ivMuteAnother.isVisible = AvRoomDataManager.get().isRoomOwner + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_close.png b/app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_close.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbd087477e476205803fbc4ea908a2b5a5e1ba3 GIT binary patch literal 1783 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 Dvi~ok literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/layout_single_room_pk_board_view.xml b/app/src/main/res/layout/layout_single_room_pk_board_view.xml index 710b2e90b..830996cd2 100644 --- a/app/src/main/res/layout/layout_single_room_pk_board_view.xml +++ b/app/src/main/res/layout/layout_single_room_pk_board_view.xml @@ -72,6 +72,14 @@ app:layout_constraintStart_toStartOf="@id/iv_blue_avatar" tools:src="@drawable/single_room_pk_ic_result_win" /> + + { - return api.muteSingleRoomPkOtherMic(AvRoomDataManager.get().roomUid) + fun muteSingleRoomPkOtherMic(roundId: String, micStatus: Int): Single { + return api.muteSingleRoomPkOtherMic(AvRoomDataManager.get().roomUid, roundId, micStatus) .compose(RxHelper.handleSchAndExce()) .compose(RxHelper.handleStringData()) } @@ -239,7 +239,9 @@ object SingleRoomPKModel { @FormUrlEncoded @POST("/crossroompkround/otherMic") fun muteSingleRoomPkOtherMic( - @Field("roomUid") roomUid: Long? + @Field("roomUid") roomUid: Long?, + @Field("roundId") roundId: String, + @Field("micStatus") micStatus: Int ): Single> } diff --git a/core/src/main/java/com/mango/core/room/bean/RoomInfo.java b/core/src/main/java/com/mango/core/room/bean/RoomInfo.java index 39b32025e..7f4109cdb 100644 --- a/core/src/main/java/com/mango/core/room/bean/RoomInfo.java +++ b/core/src/main/java/com/mango/core/room/bean/RoomInfo.java @@ -146,7 +146,7 @@ public class RoomInfo implements Parcelable,Serializable { /** * 个播匹配结束时间 */ - private long pkMatchEndTime; + private long pkMatchStartTime; /** * 是否有心愿礼物权限