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 000000000..9cbd08747 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_close.png differ diff --git a/app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_open.png b/app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_open.png new file mode 100644 index 000000000..9983b422e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/single_room_pk_ic_another_mic_open.png differ 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