个播PK新增静音对方麦位功能
This commit is contained in:
@@ -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) {
|
||||||
|
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@@ -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()) {
|
||||||
|
@@ -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 |
@@ -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"
|
||||||
|
@@ -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:
|
||||||
|
@@ -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) {
|
||||||
|
@@ -6,5 +6,5 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class ShowPkMatchEvent {
|
public class ShowPkMatchEvent {
|
||||||
private long pkMatchEndTime;
|
private long pkMatchStartTime;
|
||||||
}
|
}
|
||||||
|
@@ -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>>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -146,7 +146,7 @@ public class RoomInfo implements Parcelable,Serializable {
|
|||||||
/**
|
/**
|
||||||
* 个播匹配结束时间
|
* 个播匹配结束时间
|
||||||
*/
|
*/
|
||||||
private long pkMatchEndTime;
|
private long pkMatchStartTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否有心愿礼物权限
|
* 是否有心愿礼物权限
|
||||||
|
Reference in New Issue
Block a user