个播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();
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) {

View File

@@ -118,7 +118,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
}
}
initRoomPkOrder(AvRoomDataManager.get().pkMatchEndTime)
initRoomPkOrder(AvRoomDataManager.get().pkMatchStartTime)
gameBinding.tvHourRank.setOnClickListener {
DialogWebViewActivity.start(
@@ -180,7 +180,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
when (roomEvent.event) {
RoomEvent.ENTER_ROOM -> {
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<ISingleRoomView?, SingleRoomPresente
}
}
private fun initRoomPkOrder(pkMatchEndTime: Long) {
private fun initRoomPkOrder(pkMatchStartTime: Long) {
if (pkMatchDisposable?.isDisposed == true) return
val residueSeconds = (pkMatchEndTime - CurrentTimeUtils.getCurrentTime()) / 1000
val residueSeconds = (pkMatchStartTime - CurrentTimeUtils.getCurrentTime()) / 1000
if (residueSeconds > 0) {
gameBinding.llRoomPkOrder.visibility = View.VISIBLE
pkMatchDisposable =
@@ -308,7 +308,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
@Subscribe(threadMode = ThreadMode.MAIN)
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);
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<IAvRoomView> {
.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<IAvRoomView> {
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()) {

View File

@@ -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
}
}
}

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"
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
android:id="@+id/tv_blue_nickname"
android:layout_width="wrap_content"
@@ -90,8 +98,8 @@
android:layout_width="30dp"
android:layout_height="20dp"
android:layout_marginStart="4dp"
android:visibility="gone"
android:src="@drawable/single_room_pk_bg_find_him"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tv_blue_nickname"
app:layout_constraintEnd_toEndOf="@id/iv_blue_avatar"
app:layout_constraintStart_toEndOf="@id/tv_blue_nickname"

View File

@@ -1315,6 +1315,12 @@ public final class IMNetEaseManager {
}
break;
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);
break;
default:

View File

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

View File

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

View File

@@ -131,8 +131,8 @@ object SingleRoomPKModel {
*
* @return
*/
fun muteSingleRoomPkOtherMic(): Single<String> {
return api.muteSingleRoomPkOtherMic(AvRoomDataManager.get().roomUid)
fun muteSingleRoomPkOtherMic(roundId: String, micStatus: Int): Single<String> {
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<ServiceResult<String>>
}

View File

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