From cec6e00e099ac4660056259bac51d43b1898556b Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 7 Dec 2023 14:50:01 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=90=8C=E6=AD=A5=E9=9F=B3?= =?UTF-8?q?=E8=90=8C=E5=AE=8C=E6=88=90=E4=B8=AA=E6=92=ADPK=E5=B1=8F?= =?UTF-8?q?=E8=94=BD=E9=BA=A6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/presenter/AvRoomPresenter.java | 9 +++++-- .../singleroompk/SingleRoomPKBoardView.kt | 24 ++++++++++++++++- .../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 | 8 ++++++ .../manager/IMNetEaseManager.java | 9 +++++++ .../im/custom/bean/CustomAttachment.java | 1 + .../im/custom/bean/RoomPkBean.java | 5 ++++ .../xchat_android_core/manager/RoomEvent.java | 1 + .../room/anotherroompk/SingleRoomPKModel.kt | 25 ++++++++++++++++++ 10 files changed, 79 insertions(+), 3 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/yizhuan/erban/avroom/presenter/AvRoomPresenter.java b/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java index 99cae7e0e..c37e0f07d 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/presenter/AvRoomPresenter.java @@ -120,7 +120,6 @@ public class AvRoomPresenter extends BaseMvpPresenter { exitRoom(); } AvRoomDataManager.get().updateServiceRoomInfo(roomInfo); - 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); + } + }); } } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/singleroompk/SingleRoomPKBoardView.kt b/app/src/main/java/com/yizhuan/erban/avroom/singleroompk/SingleRoomPKBoardView.kt index 48617d9dc..95af621c5 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/singleroompk/SingleRoomPKBoardView.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/singleroompk/SingleRoomPKBoardView.kt @@ -17,8 +17,10 @@ import com.yizhuan.erban.ui.user.activity.UserInfoActivity import com.yizhuan.erban.ui.utils.load import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean import com.yizhuan.xchat_android_core.manager.AvRoomDataManager +import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils import com.yizhuan.xchat_android_core.utils.subAndReplaceDot +import com.yizhuan.xchat_android_core.utils.toast import com.yizhuan.xchat_android_library.utils.ResUtil import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -55,6 +57,20 @@ class SingleRoomPKBoardView @JvmOverloads constructor( SingleRoomPkRuleDialog.newInstance().show(context) } + binding.ivMuteAnother.setOnClickListener { + if (AvRoomDataManager.get().isRoomOwner) { + roomPkBean?.let { + if (it.roundId == null) { + return@let + } + SingleRoomPKModel + .muteSingleRoomPkOtherMic(it.roundId, it.aMicStatus xor 1) + .subscribe() + } + } else { + "主播已關閉對方房間的聲音".toast() + } + } } override fun onDetachedFromWindow() { @@ -118,7 +134,13 @@ class SingleRoomPKBoardView @JvmOverloads constructor( binding.ivPkResult.isVisible = true 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 669a3d8cb..c04b7ed1c 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, roundId, micStatus) + .compose(RxHelper.handleSchAndExce()) + .compose(RxHelper.handleStringData()) + } + private interface Api { /** * 发起挑战 @@ -172,6 +183,20 @@ object SingleRoomPKModel { fun getSingleRoomPkRule( @Field("roomUid") roomUid: Long? ): Single> + + /** + *对方麦位屏蔽 + * + * + * @return + */ + @FormUrlEncoded + @POST("/crossroompkround/otherMic") + fun muteSingleRoomPkOtherMic( + @Field("roomUid") roomUid: Long?, + @Field("roundId") roundId: String, + @Field("micStatus") micStatus: Int + ): Single> } } \ No newline at end of file