个播PK新增静音对方麦位功能

This commit is contained in:
huangjian
2022-11-23 15:52:57 +08:00
parent 2ead52608a
commit ea6891855f
12 changed files with 60 additions and 18 deletions

View File

@@ -266,7 +266,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
final RoomPkBean pkBean = AvRoomDataManager.get().roomPkLiveData.getValue(); final RoomPkBean pkBean = AvRoomDataManager.get().roomPkLiveData.getValue();
if (AvRoomDataManager.get().isRoomOwner() && !AvRoomDataManager.get().isCpRoom()) { if (AvRoomDataManager.get().isRoomOwner() && !AvRoomDataManager.get().isCpRoom()) {
boolean isMatch = AvRoomDataManager.get().getPkMatchEndTime() > 0; boolean isMatch = AvRoomDataManager.get().getPkMatchStartTime() > 0;
boolean isEndPk = false; boolean isEndPk = false;
String str = AvRoomDataManager.get().isOpenAnotherPKMode() ? "主播PK中" : "主播PK"; String str = AvRoomDataManager.get().isOpenAnotherPKMode() ? "主播PK中" : "主播PK";
if (pkBean != null) { if (pkBean != null) {

View File

@@ -118,7 +118,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
} }
} }
initRoomPkOrder(AvRoomDataManager.get().pkMatchEndTime) initRoomPkOrder(AvRoomDataManager.get().pkMatchStartTime)
gameBinding.tvHourRank.setOnClickListener { gameBinding.tvHourRank.setOnClickListener {
DialogWebViewActivity.start( DialogWebViewActivity.start(
@@ -180,7 +180,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
when (roomEvent.event) { when (roomEvent.event) {
RoomEvent.ENTER_ROOM -> { RoomEvent.ENTER_ROOM -> {
fansTeamViewModel.loadFansTeamInitInfo() fansTeamViewModel.loadFansTeamInitInfo()
initRoomPkOrder(AvRoomDataManager.get().pkMatchEndTime) initRoomPkOrder(AvRoomDataManager.get().pkMatchStartTime)
} }
RoomEvent.REQUEST_UP_MIC -> { RoomEvent.REQUEST_UP_MIC -> {
(roomEvent.chatRoomMessage?.attachment as? RequestUpmicAttachment)?.userInfo?.let { (roomEvent.chatRoomMessage?.attachment as? RequestUpmicAttachment)?.userInfo?.let {
@@ -269,9 +269,9 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
} }
} }
private fun initRoomPkOrder(pkMatchEndTime: Long) { private fun initRoomPkOrder(pkMatchStartTime: Long) {
if (pkMatchDisposable?.isDisposed == true) return if (pkMatchDisposable?.isDisposed == true) return
val residueSeconds = (pkMatchEndTime - CurrentTimeUtils.getCurrentTime()) / 1000 val residueSeconds = (pkMatchStartTime - CurrentTimeUtils.getCurrentTime()) / 1000
if (residueSeconds > 0) { if (residueSeconds > 0) {
gameBinding.llRoomPkOrder.visibility = View.VISIBLE gameBinding.llRoomPkOrder.visibility = View.VISIBLE
pkMatchDisposable = pkMatchDisposable =
@@ -308,7 +308,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
fun onShowPkMatchEvent(event: ShowPkMatchEvent) { fun onShowPkMatchEvent(event: ShowPkMatchEvent) {
initRoomPkOrder(event.pkMatchEndTime) initRoomPkOrder(event.pkMatchStartTime)
} }
} }

View File

@@ -122,7 +122,6 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
AvRoomDataManager.get().updateServiceRoomInfo(roomInfo); AvRoomDataManager.get().updateServiceRoomInfo(roomInfo);
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_LIST_TYPE, StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ROOM_LIST_TYPE,
"区分房间类型:" + roomInfo.getRoomTypeLable()); "区分房间类型:" + roomInfo.getRoomTypeLable());
initAnotherPKData();
mAvRoomModel.enterRoom(roomInfo.getRoomId(), 3, fromType, fromNick, fromUid) mAvRoomModel.enterRoom(roomInfo.getRoomId(), 3, fromType, fromNick, fromUid)
.flatMap(this::dealServerMicInfo) .flatMap(this::dealServerMicInfo)
.map(this::dealMicMemberFromIMNet) .map(this::dealMicMemberFromIMNet)
@@ -143,6 +142,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
.subscribe((stringServiceResult) -> EventBus.getDefault().post(new AudioPartyOpenEvent())); .subscribe((stringServiceResult) -> EventBus.getDefault().post(new AudioPartyOpenEvent()));
mAvRoomModel.loadMessageHistory(AvRoomDataManager.get().clearScreenTime); mAvRoomModel.loadMessageHistory(AvRoomDataManager.get().clearScreenTime);
IMNetEaseManager.get().joinAvRoom(); IMNetEaseManager.get().joinAvRoom();
initAnotherPKData();
}, this::dealEnterRoomError); }, this::dealEnterRoomError);
} }
@@ -151,7 +151,12 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
if (AvRoomDataManager.get().isOpenAnotherPKMode()) { if (AvRoomDataManager.get().isOpenAnotherPKMode()) {
RoomPKModel.INSTANCE.getRoomPKData(AvRoomDataManager.get().getRoomUid()) RoomPKModel.INSTANCE.getRoomPKData(AvRoomDataManager.get().getRoomUid())
.compose(bindToLifecycle()) .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()) { if (AvRoomDataManager.get().isHasOpenWishGift()) {

View File

@@ -17,8 +17,10 @@ import com.mango.moshen.ui.user.UserInfoActivity
import com.mango.moshen.ui.utils.load import com.mango.moshen.ui.utils.load
import com.mango.core.im.custom.bean.RoomPkBean import com.mango.core.im.custom.bean.RoomPkBean
import com.mango.core.manager.AvRoomDataManager import com.mango.core.manager.AvRoomDataManager
import com.mango.core.room.anotherroompk.SingleRoomPKModel
import com.mango.core.utils.CurrentTimeUtils import com.mango.core.utils.CurrentTimeUtils
import com.mango.core.utils.subAndReplaceDot import com.mango.core.utils.subAndReplaceDot
import com.mango.core.utils.toast
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
@@ -54,6 +56,18 @@ class SingleRoomPKBoardView @JvmOverloads constructor(
SingleRoomPkRuleDialog.newInstance().show(context) 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() { override fun onDetachedFromWindow() {
@@ -118,6 +132,13 @@ class SingleRoomPKBoardView @JvmOverloads constructor(
binding.ivPkResult.setImageResource(R.drawable.single_room_pk_ic_result_win) 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
}
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -72,6 +72,14 @@
app:layout_constraintStart_toStartOf="@id/iv_blue_avatar" app:layout_constraintStart_toStartOf="@id/iv_blue_avatar"
tools:src="@drawable/single_room_pk_ic_result_win" /> tools:src="@drawable/single_room_pk_ic_result_win" />
<ImageView
android:id="@+id/iv_mute_another"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/single_room_pk_ic_another_mic_open"
app:layout_constraintBottom_toBottomOf="@id/iv_blue_avatar"
app:layout_constraintEnd_toEndOf="@id/iv_blue_avatar" />
<TextView <TextView
android:id="@+id/tv_blue_nickname" android:id="@+id/tv_blue_nickname"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -90,8 +98,8 @@
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:visibility="gone"
android:src="@drawable/single_room_pk_bg_find_him" android:src="@drawable/single_room_pk_bg_find_him"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tv_blue_nickname" app:layout_constraintBottom_toBottomOf="@id/tv_blue_nickname"
app:layout_constraintEnd_toEndOf="@id/iv_blue_avatar" app:layout_constraintEnd_toEndOf="@id/iv_blue_avatar"
app:layout_constraintStart_toEndOf="@id/tv_blue_nickname" app:layout_constraintStart_toEndOf="@id/tv_blue_nickname"

View File

@@ -1315,6 +1315,12 @@ public final class IMNetEaseManager {
} }
break; break;
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_MUTE_MIC: case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_MUTE_MIC:
AudioEngineManager.get().setRemoteMute(roomPkBean.getAUid(), roomPkBean.getAMicStatus() == 0);
RoomPkBean currRoomPkBean = AvRoomDataManager.get().roomPkLiveData.getValue();
if (currRoomPkBean != null) {
currRoomPkBean.setAMicStatus(roomPkBean.getAMicStatus());
AvRoomDataManager.get().roomPkLiveData.postValue(currRoomPkBean);
}
noticeRoomEvent(msg, RoomEvent.ROOM_PK_MUTE_MIC); noticeRoomEvent(msg, RoomEvent.ROOM_PK_MUTE_MIC);
break; break;
default: default:

View File

@@ -192,7 +192,7 @@ public final class AvRoomDataManager {
public boolean showPkBeginTime; public boolean showPkBeginTime;
public long pkBeginTime; public long pkBeginTime;
private long pkMatchEndTime; private long pkMatchStartTime;
/** /**
* 是否有心愿礼物权限 * 是否有心愿礼物权限
@@ -290,7 +290,7 @@ public final class AvRoomDataManager {
redEnvelopeOpen = roomInfo.isRedEnvelopeOpen(); redEnvelopeOpen = roomInfo.isRedEnvelopeOpen();
hasWishGiftPermit = roomInfo.isHasWishGiftPermit(); hasWishGiftPermit = roomInfo.isHasWishGiftPermit();
hasOpenWishGift = roomInfo.isHasOpenWishGift(); hasOpenWishGift = roomInfo.isHasOpenWishGift();
pkMatchEndTime = roomInfo.getPkMatchEndTime(); pkMatchStartTime = roomInfo.getPkMatchStartTime();
} }
/** /**
@@ -1335,8 +1335,8 @@ public final class AvRoomDataManager {
this.hasOpenWishGift = hasOpenWishGift; this.hasOpenWishGift = hasOpenWishGift;
} }
public long getPkMatchEndTime() { public long getPkMatchStartTime() {
return pkMatchEndTime; return pkMatchStartTime;
} }
public boolean isLimitEnterRoom(String roomUid) { public boolean isLimitEnterRoom(String roomUid) {

View File

@@ -6,5 +6,5 @@ import lombok.Data;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
public class ShowPkMatchEvent { public class ShowPkMatchEvent {
private long pkMatchEndTime; private long pkMatchStartTime;
} }

View File

@@ -131,8 +131,8 @@ object SingleRoomPKModel {
* *
* @return * @return
*/ */
fun muteSingleRoomPkOtherMic(): Single<String> { fun muteSingleRoomPkOtherMic(roundId: String, micStatus: Int): Single<String> {
return api.muteSingleRoomPkOtherMic(AvRoomDataManager.get().roomUid) return api.muteSingleRoomPkOtherMic(AvRoomDataManager.get().roomUid, roundId, micStatus)
.compose(RxHelper.handleSchAndExce()) .compose(RxHelper.handleSchAndExce())
.compose(RxHelper.handleStringData()) .compose(RxHelper.handleStringData())
} }
@@ -239,7 +239,9 @@ object SingleRoomPKModel {
@FormUrlEncoded @FormUrlEncoded
@POST("/crossroompkround/otherMic") @POST("/crossroompkround/otherMic")
fun muteSingleRoomPkOtherMic( fun muteSingleRoomPkOtherMic(
@Field("roomUid") roomUid: Long? @Field("roomUid") roomUid: Long?,
@Field("roundId") roundId: String,
@Field("micStatus") micStatus: Int
): Single<ServiceResult<String>> ): Single<ServiceResult<String>>
} }

View File

@@ -146,7 +146,7 @@ public class RoomInfo implements Parcelable,Serializable {
/** /**
* 个播匹配结束时间 * 个播匹配结束时间
*/ */
private long pkMatchEndTime; private long pkMatchStartTime;
/** /**
* 是否有心愿礼物权限 * 是否有心愿礼物权限