From 475ec454aba021981a710d851fdbe35932a58059 Mon Sep 17 00:00:00 2001 From: wzq Date: Wed, 27 Sep 2023 18:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=20PK=E6=A8=A1=E5=BC=8F=20?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=8D=E9=97=AD=E9=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/fragment/BaseRoomFragment.kt | 19 +- .../erban/avroom/widget/PKBoardView.java | 2 + .../manager/IMNetEaseManager.java | 8 +- .../room/model/RoomBaseModel.java | 312 +++++++++--------- .../room/model/inteface/IRoomBaseModel.java | 2 + .../room/pk/model/PkModel.java | 112 +++---- .../room/queue/bean/MicMemberInfo.java | 5 + 7 files changed, 243 insertions(+), 217 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt index d7a41a115..7db2ef1c0 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt @@ -292,18 +292,22 @@ open class BaseRoomFragment?> : GiftValueMrg.get().handleReconnect(false) } } + RoomEvent.ROOM_EXIT -> { // 退出房間,把標誌置為 false AvRoomDataManager.get().isFromMentoring = false // 退出房間的時候,要停止倒計時 EventBus.getDefault().post(MentoringStopCountingEvent()) } + RoomEvent.DOWN_CROWDED_MIC -> if (AvRoomDataManager.get().isOwner(roomEvent.account)) { toast(R.string.crowded_down) } + RoomEvent.ROOM_MANAGER_ADD, RoomEvent.ROOM_MANAGER_REMOVE -> { updateView() } + RoomEvent.ROOM_INFO_UPDATE -> { Logger.i(ResUtil.getString(R.string.avroom_fragment_baseroomfragment_01)) addOpenDatingTips() //一定要放在updateView之前!!! @@ -313,6 +317,7 @@ open class BaseRoomFragment?> : updateRemoteMuteBtn() openOrCloseGiftValue(false) } + RoomEvent.ENTER_ROOM -> { Logger.i(ResUtil.getString(R.string.avroom_fragment_baseroomfragment_02)) updateView() @@ -320,6 +325,7 @@ open class BaseRoomFragment?> : openOrCloseGiftValue(true) GiftValueMrg.get().updateRoomGiftValue(false) } + RoomEvent.ADD_BLACK_LIST -> onChatRoomMemberBlackAdd(roomEvent.account) RoomEvent.MIC_QUEUE_STATE_CHANGE -> onQueueMicStateChange() RoomEvent.KICK_DOWN_MIC_BY_S_ADMIN, RoomEvent.KICK_DOWN_MIC -> if (event == RoomEvent.KICK_DOWN_MIC) { @@ -335,16 +341,20 @@ open class BaseRoomFragment?> : ) ) } + RoomEvent.DOWN_MIC -> { onDownMicro() } + RoomEvent.UP_MIC -> { onUpMicro() } + RoomEvent.INVITE_UP_MIC -> if (AvRoomDataManager.get().isOwner(roomEvent.account)) { //自己的消息 onInviteUpMic(roomEvent.micPosition) } + RoomEvent.KICK_OUT_ROOM -> { val reason = roomEvent.reason if (reason != null && reason.reason == ChatRoomKickOutEvent.ChatRoomKickOutReason.CHAT_ROOM_INVALID) { @@ -362,6 +372,7 @@ open class BaseRoomFragment?> : AvRoomDataManager.get().removeChatRoomMember(targetUid) } } + RoomEvent.LEAVE_MODE -> microView.adapter.notifyDataSetChanged() RoomEvent.ROOM_CLEAN_SCREEN -> messageView.clear() } @@ -544,7 +555,10 @@ open class BaseRoomFragment?> : } else { val roomQueueInfo = AvRoomDataManager.get() .getRoomQueueMemberInfoByAccount(myUid.toString()) - if (roomQueueInfo?.mChatRoomMember != null + if (roomQueueInfo?.mChatRoomMember?.isNoProhibitMic == true && roomQueueInfo.mRoomMicInfo?.isMicMute == false) { + bottomView.setMicBtnEnable(true) + bottomView.setMicBtnOpen(true) + } else if (roomQueueInfo?.mChatRoomMember != null && myUid.toString() == roomQueueInfo.mChatRoomMember.account && roomQueueInfo.mRoomMicInfo?.isMicMute == true ) { @@ -632,13 +646,16 @@ open class BaseRoomFragment?> : R.id.input_send -> { sendMsg() } + R.id.contribute_list -> { DialogWebViewActivity.start(mContext, UriProvider.getRoomRanking()) mvpPresenter?.loadRoomRank() } + R.id.iv_first_charge_enter -> FirstChargeDialog.start(mContext) R.id.iv_treasure_box, R.id.iv_treasure_box_cp -> GoldBoxHelper.handleBoxClick(mContext) + R.id.iv_radish_entrance -> PullRadishActivity.start(mContext) } } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/widget/PKBoardView.java b/app/src/main/java/com/yizhuan/erban/avroom/widget/PKBoardView.java index 30db3cac4..9166ff802 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/widget/PKBoardView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/widget/PKBoardView.java @@ -424,6 +424,8 @@ public class PKBoardView extends RelativeLayout implements View.OnClickListener pkScoreBoardDialog.show(); } break; + default: + break; } } diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java index 4df07636e..f48cb9fd1 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java @@ -2041,9 +2041,11 @@ public final class IMNetEaseManager { if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { //開麥 AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER); - AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic); - //默認閉麥去掉聲音采集 - AudioEngineManager.get().stopLocalAudio(); + if (!roomQueueInfo.mChatRoomMember.isNoProhibitMic()) { + AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic); + //默認閉麥去掉聲音采集 + AudioEngineManager.get().stopLocalAudio(); + } } noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount()); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java index 3ca37c190..b9ee98d46 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/RoomBaseModel.java @@ -149,33 +149,33 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { if (roomInfo == null) return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); return Single.create( - new SingleOnSubscribe>() { - @Override - public void subscribe(SingleEmitter> e) throws Exception { - NIMChatRoomSDK.getChatRoomService().fetchRoomMembers( - String.valueOf(roomInfo.getRoomId()), - memberType, - time, - limit - ) - .setCallback(new RequestCallback>() { - @Override - public void onSuccess(List param) { - e.onSuccess(param); - } + new SingleOnSubscribe>() { + @Override + public void subscribe(SingleEmitter> e) throws Exception { + NIMChatRoomSDK.getChatRoomService().fetchRoomMembers( + String.valueOf(roomInfo.getRoomId()), + memberType, + time, + limit + ) + .setCallback(new RequestCallback>() { + @Override + public void onSuccess(List param) { + e.onSuccess(param); + } - @Override - public void onFailed(int code) { - e.onError(new Throwable(String.valueOf(code))); - } + @Override + public void onFailed(int code) { + e.onError(new Throwable(String.valueOf(code))); + } - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - } - }) + @Override + public void onException(Throwable exception) { + e.onError(exception); + } + }); + } + }) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()); } @@ -265,32 +265,32 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { if (roomInfo == null) return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); return Single.create( - new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - NIMClient.getService(ChatRoomService.class).markChatRoomBlackList( - mark, - new MemberOption(String.valueOf(roomInfo), account) - ) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(ChatRoomMember param) { - e.onSuccess(param); - } + new SingleOnSubscribe() { + @Override + public void subscribe(SingleEmitter e) throws Exception { + NIMClient.getService(ChatRoomService.class).markChatRoomBlackList( + mark, + new MemberOption(String.valueOf(roomInfo), account) + ) + .setCallback(new RequestCallback() { + @Override + public void onSuccess(ChatRoomMember param) { + e.onSuccess(param); + } - @Override - public void onFailed(int code) { - e.onError(new Throwable(String.valueOf(code))); - } + @Override + public void onFailed(int code) { + e.onError(new Throwable(String.valueOf(code))); + } - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); + @Override + public void onException(Throwable exception) { + e.onError(exception); + } + }); - } - }) + } + }) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()); @@ -510,57 +510,61 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { @Override public Single updateOrUpMic(RoomPKInvitedUpMicMember roomPKInvitedUpMicMember) { return Single.create(new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - if (AvRoomDataManager.get().isOnMic(roomPKInvitedUpMicMember.getUid())) { - //在麦上就更新信息 - //获取mic 信息 - RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(AvRoomDataManager.get().getMicPosition(roomPKInvitedUpMicMember.getUid())); - //更新自己队伍信息 - UserModel.get().getCacheLoginUserInfo().setGroupType(roomPKInvitedUpMicMember.getGroupType()); - updateQueueEx(roomPKInvitedUpMicMember.getPosition(), - String.valueOf(AvRoomDataManager.get().getRoomId()), - new CallBack() { - @Override - public void onSuccess(String data) { - e.onSuccess(data); - } + @Override + public void subscribe(SingleEmitter e) throws Exception { + if (AvRoomDataManager.get().isOnMic(roomPKInvitedUpMicMember.getUid())) { + //在麦上就更新信息 + //获取mic 信息 + RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(AvRoomDataManager.get().getMicPosition(roomPKInvitedUpMicMember.getUid())); + //更新自己队伍信息 + UserModel.get().getCacheLoginUserInfo().setGroupType(roomPKInvitedUpMicMember.getGroupType()); + updateQueueEx(roomPKInvitedUpMicMember.getPosition(), + String.valueOf(AvRoomDataManager.get().getRoomId()), + new CallBack() { + @Override + public void onSuccess(String data) { + e.onSuccess(data); + } - @Override - public void onFail(int code, String error) { - e.onError(new Throwable("code:" + code + " error:" + error)); - } - }, UserModel.get().getCacheLoginUserInfo()); + @Override + public void onFail(int code, String error) { + e.onError(new Throwable("code:" + code + " error:" + error)); + } + }, UserModel.get().getCacheLoginUserInfo(), true); - } else { - //不在麦上就去上麦 - upMicroPhone(roomPKInvitedUpMicMember.getPosition(), - roomPKInvitedUpMicMember.getUid(), - String.valueOf(AvRoomDataManager.get().getRoomId()), - true, - new CallBack() { - @Override - public void onSuccess(String data) { - //上麦成功 - GiftValueMrg.get().requestUpMic(roomPKInvitedUpMicMember.getPosition(), - roomPKInvitedUpMicMember.getUid()); - e.onSuccess(data); - } + } else { + //不在麦上就去上麦 + upMicroPhone(roomPKInvitedUpMicMember.getPosition(), + roomPKInvitedUpMicMember.getUid(), + String.valueOf(AvRoomDataManager.get().getRoomId()), + true, + new CallBack() { + @Override + public void onSuccess(String data) { + //上麦成功 + GiftValueMrg.get().requestUpMic(roomPKInvitedUpMicMember.getPosition(), + roomPKInvitedUpMicMember.getUid()); + e.onSuccess(data); + } - @Override - public void onFail(int code, String error) { - e.onError(new Throwable("code:" + code + " error:" + error)); - } - }, roomPKInvitedUpMicMember.getGroupType()); - } + @Override + public void onFail(int code, String error) { + e.onError(new Throwable("code:" + code + " error:" + error)); + } + }, roomPKInvitedUpMicMember.getGroupType()); + } - } - }) + } + }) .subscribeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread()); } + public Single updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo) { + return updateMyMicQueue(micPosition, roomId, userInfo, false); + } + /** * 更新我的麦序信息, * @@ -570,30 +574,25 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { * @return */ @Override - public Single updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo) { + public Single updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo, boolean isNoProhibitMic) { if (userInfo.getUid() != AuthModel.get().getCurrentUid()) { return Single.error(new Throwable(ResUtil.getString(R.string.room_model_roombasemodel_05))); } - return Single.create(new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - updateQueueEx(micPosition, roomId, new CallBack() { + return Single.create((SingleOnSubscribe) e -> + updateQueueEx(micPosition, roomId, new CallBack<>() { + @Override + public void onSuccess(String param) { + Logger.e(ResUtil.getString(R.string.room_model_roombasemodel_06) + userInfo.getNick()); + e.onSuccess(ResUtil.getString(R.string.room_model_roombasemodel_07)); + } - @Override - public void onSuccess(String param) { - Logger.e(ResUtil.getString(R.string.room_model_roombasemodel_06) + userInfo.getNick()); - e.onSuccess(ResUtil.getString(R.string.room_model_roombasemodel_07)); - } + @Override + public void onFail(int code, String error) { + Logger.e(ResUtil.getString(R.string.room_model_roombasemodel_08) + code); + e.onError(new Throwable(ResUtil.getString(R.string.room_model_roombasemodel_09) + code)); + } - @Override - public void onFail(int code, String error) { - Logger.e(ResUtil.getString(R.string.room_model_roombasemodel_08) + code); - e.onError(new Throwable(ResUtil.getString(R.string.room_model_roombasemodel_09) + code)); - } - - }, userInfo); - } - }) + }, userInfo, isNoProhibitMic)) .subscribeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread()); @@ -605,6 +604,10 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { } protected void updateQueueEx(int micPosition, String roomId, final CallBack callBack, UserInfo userInfo) { + updateQueueEx(micPosition, roomId, callBack, userInfo, false); + } + + protected void updateQueueEx(int micPosition, String roomId, final CallBack callBack, UserInfo userInfo, boolean isNoProhibitMic) { JSONObject contentJsonObj = new JSONObject(); contentJsonObj.put("uid", String.valueOf(userInfo.getUid())); contentJsonObj.put("nick", userInfo.getNick()); @@ -636,6 +639,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { contentJsonObj.put("preventKick", true); } + contentJsonObj.put("isNoProhibitMic", isNoProhibitMic); + NIMChatRoomSDK.getChatRoomService() .updateQueueEx(roomId, String.valueOf(micPosition), contentJsonObj.toJSONString(), true) .setCallback(new RequestCallback() { @@ -670,28 +675,28 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { @Override public Observable>> queryRoomMicInfo(final String roomId) { return Observable.create(new ObservableOnSubscribe>>() { - @Override - public void subscribe(ObservableEmitter>> e) throws Exception { - NIMChatRoomSDK.getChatRoomService().fetchQueue(roomId) - .setCallback(new RequestCallback>>() { - @Override - public void onSuccess(List> param) { - e.onNext(param); - e.onComplete(); - } + @Override + public void subscribe(ObservableEmitter>> e) throws Exception { + NIMChatRoomSDK.getChatRoomService().fetchQueue(roomId) + .setCallback(new RequestCallback>>() { + @Override + public void onSuccess(List> param) { + e.onNext(param); + e.onComplete(); + } - @Override - public void onFailed(int code) { - e.onError(new Throwable(String.valueOf(code))); - } + @Override + public void onFailed(int code) { + e.onError(new Throwable(String.valueOf(code))); + } - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - } - }).subscribeOn(Schedulers.computation()) + @Override + public void onException(Throwable exception) { + e.onError(exception); + } + }); + } + }).subscribeOn(Schedulers.computation()) .unsubscribeOn(Schedulers.computation()); } @@ -704,28 +709,28 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { @Override public Observable startGetOnlineMemberNumberJob(final long roomId) { return Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - NIMChatRoomSDK.getChatRoomService().fetchRoomInfo(String.valueOf(roomId)) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(ChatRoomInfo param) { - e.onNext(param); - e.onComplete(); - } + @Override + public void subscribe(ObservableEmitter e) throws Exception { + NIMChatRoomSDK.getChatRoomService().fetchRoomInfo(String.valueOf(roomId)) + .setCallback(new RequestCallback() { + @Override + public void onSuccess(ChatRoomInfo param) { + e.onNext(param); + e.onComplete(); + } - @Override - public void onFailed(int code) { - e.onError(new Throwable(ResUtil.getString(R.string.room_model_roombasemodel_013) + code)); - } + @Override + public void onFailed(int code) { + e.onError(new Throwable(ResUtil.getString(R.string.room_model_roombasemodel_013) + code)); + } - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - } - }).subscribeOn(Schedulers.computation()) + @Override + public void onException(Throwable exception) { + e.onError(exception); + } + }); + } + }).subscribeOn(Schedulers.computation()) .unsubscribeOn(Schedulers.computation()); } @@ -748,7 +753,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { public SingleSource apply(UserInfo userInfo) throws Exception { String tmpTitle = userInfo.getNick() + ResUtil.getString(R.string.room_model_roombasemodel_014); return mRoomService.openRoom(userInfo.getUid(), AuthModel.get().getTicket(), - type, tmpTitle, roomDesc, backPic, rewardId, gameId) + type, tmpTitle, roomDesc, backPic, rewardId, gameId) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); @@ -756,7 +761,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { }); } return mRoomService.openRoom(uid, AuthModel.get().getTicket(), - type, title, roomDesc, backPic, rewardId, gameId) + type, title, roomDesc, backPic, rewardId, gameId) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); @@ -764,8 +769,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { public Single closeScreen(long roomId, boolean isCloseScreen) { return mRoomService.closeScreen(roomId, AuthModel.get().getCurrentUid(), isCloseScreen, - AuthModel.get().getTicket() - ) + AuthModel.get().getTicket() + ) .compose(RxHelper.handleBeanData()) .compose(RxHelper.handleSchedulers()); } @@ -1158,6 +1163,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel { /** * 获取新用户进房礼物 + * * @return */ @GET("/roomFreeGift/get") diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IRoomBaseModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IRoomBaseModel.java index c56952707..ab1647b10 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IRoomBaseModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/inteface/IRoomBaseModel.java @@ -140,6 +140,8 @@ public interface IRoomBaseModel extends IModel { */ Single updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo); + Single updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo, boolean isNoProhibitMic); + void downMicroPhone(int micPosition, final CallBack callBack); /** diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/pk/model/PkModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/pk/model/PkModel.java index cfe8129ef..25770046b 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/pk/model/PkModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/pk/model/PkModel.java @@ -28,6 +28,7 @@ import com.yizhuan.xchat_android_core.magic.MagicModel; import com.yizhuan.xchat_android_core.magic.bean.MagicInfo; import com.yizhuan.xchat_android_core.magic.bean.MagicReceivedInfo; import com.yizhuan.xchat_android_core.magic.bean.MultiMagicReceivedInfo; +import com.yizhuan.xchat_android_core.manager.AudioEngineManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.RoomEvent; @@ -713,7 +714,8 @@ public class PkModel extends BaseModel implements IPkModel { AvRoomModel.get().updateMyMicQueue( key, String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), - pkMemberInfo.getUserInfo() + pkMemberInfo.getUserInfo(), + !AudioEngineManager.get().isMute() ) .subscribe(); } @@ -866,70 +868,60 @@ public class PkModel extends BaseModel implements IPkModel { @Override public Single inviteInTeam(List roomPKInvitedUpMicMember) { - return Single.create(new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - //发送给自定义消息 - RoomPkAttachment roomPkAttachment = new RoomPkAttachment(CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_INVITE); - Map micMemberMap = new HashMap<>(); - for (RoomPKInvitedUpMicMember pkInvitedUpMicMember : roomPKInvitedUpMicMember) { - micMemberMap.put(pkInvitedUpMicMember.getUid(), pkInvitedUpMicMember); - } - roomPkAttachment.setRoomPKInvitedUpMicMember(micMemberMap); - ChatRoomMessage inviteToTeamMsg = ChatRoomMessageBuilder.createChatRoomCustomMessage( - // 聊天室id - AvRoomDataManager.get().mCurrentRoomInfo.getRoomId() + "", - //attachment - roomPkAttachment - ); + return Single.create((SingleOnSubscribe) e -> { + //发送给自定义消息 + RoomPkAttachment roomPkAttachment = new RoomPkAttachment(CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_INVITE); + Map micMemberMap = new HashMap<>(); + for (RoomPKInvitedUpMicMember pkInvitedUpMicMember : roomPKInvitedUpMicMember) { + micMemberMap.put(pkInvitedUpMicMember.getUid(), pkInvitedUpMicMember); + } + roomPkAttachment.setRoomPKInvitedUpMicMember(micMemberMap); + ChatRoomMessage inviteToTeamMsg = ChatRoomMessageBuilder.createChatRoomCustomMessage( + // 聊天室id + AvRoomDataManager.get().mCurrentRoomInfo.getRoomId() + "", + //attachment + roomPkAttachment + ); - e.onSuccess(inviteToTeamMsg); - } + e.onSuccess(inviteToTeamMsg); }) - .flatMap(new Function>() { - @Override - public SingleSource apply(ChatRoomMessage msg) throws Exception { - return IMNetEaseManager.get().sendChatRoomMessage(msg, false); + .flatMap(msg -> IMNetEaseManager.get().sendChatRoomMessage(msg, false)) + .flatMap((Function>) chatRoomMessage -> { + //添加公屏 + RoomPkAttachment roomPkAttachment = (RoomPkAttachment) chatRoomMessage.getAttachment(); + Map inviteMap = roomPkAttachment.getRoomPKInvitedUpMicMemberMap(); + Iterator> iterator = inviteMap.entrySet().iterator(); + RoomPKInvitedUpMicMember self = null; + boolean isInTeam = false; + while (iterator.hasNext()) { + RoomPKInvitedUpMicMember value = iterator.next().getValue(); + if (String.valueOf(AuthModel.get().getCurrentUid()).equals(value.getUid())) { + self = value; + } + //已经在队伍里面的人就不显示进队伍 + if (PkModel.get().getTeamIdInPKMemberList(value.getUid()) > 0) { + continue; + } + if (value.getGroupType() != PKTeamInfo.TEAM_NONE) { + isInTeam = true; + } + } + if (isInTeam) { + IMNetEaseManager.get().addMessagesImmediately(chatRoomMessage); } - }) - .flatMap(new Function>() { - @Override - public SingleSource apply(ChatRoomMessage chatRoomMessage) throws Exception { - //添加公屏 - RoomPkAttachment roomPkAttachment = (RoomPkAttachment) chatRoomMessage.getAttachment(); - Map inviteMap = roomPkAttachment.getRoomPKInvitedUpMicMemberMap(); - Iterator> iterator = inviteMap.entrySet().iterator(); - RoomPKInvitedUpMicMember self = null; - boolean isInTeam = false; - while (iterator.hasNext()) { - RoomPKInvitedUpMicMember value = iterator.next().getValue(); - if (String.valueOf(AuthModel.get().getCurrentUid()).equals(value.getUid())) { - self = value; - } - //已经在队伍里面的人就不显示进队伍 - if (PkModel.get().getTeamIdInPKMemberList(value.getUid()) > 0) { - continue; - } - if (value.getGroupType() != PKTeamInfo.TEAM_NONE) { - isInTeam = true; - } - } - if (isInTeam) { - IMNetEaseManager.get().addMessagesImmediately(chatRoomMessage); - } - //如果是自己进队伍、出队伍,自己改变自己的麦序信息 - if (self != null) { - UserModel.get().getCacheLoginUserInfo().setGroupType(self.getGroupType()); - AvRoomModel.get().updateMyMicQueue( - self.getPosition(), - String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), - UserModel.get().getCacheLoginUserInfo() - ) - .subscribe(); - } - return Single.just(ResUtil.getString(R.string.pk_model_pkmodel_022)); + //如果是自己进队伍、出队伍,自己改变自己的麦序信息 + if (self != null) { + UserModel.get().getCacheLoginUserInfo().setGroupType(self.getGroupType()); + AvRoomModel.get().updateMyMicQueue( + self.getPosition(), + String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), + UserModel.get().getCacheLoginUserInfo(), + !AudioEngineManager.get().isMute() + ) + .subscribe(); } + return Single.just(ResUtil.getString(R.string.pk_model_pkmodel_022)); }) ; } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/queue/bean/MicMemberInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/queue/bean/MicMemberInfo.java index 4461a9d7c..7582443ad 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/queue/bean/MicMemberInfo.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/queue/bean/MicMemberInfo.java @@ -60,6 +60,11 @@ public class MicMemberInfo { private boolean isSelected = false; //非麦序队列字段 end + /** + * pk模式更新麦位信息, 默认开麦 + */ + private boolean isNoProhibitMic = false; + public MicMemberInfo() { }