房间 关闭PK模式 不主动关麦

This commit is contained in:
wzq
2023-10-09 14:45:41 +08:00
parent 24606d7b44
commit 28c2841923
6 changed files with 283 additions and 269 deletions

View File

@@ -651,7 +651,10 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
} else { } else {
val roomQueueInfo = AvRoomDataManager.get() val roomQueueInfo = AvRoomDataManager.get()
.getRoomQueueMemberInfoByAccount(myUid.toString()) .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 && myUid.toString() == roomQueueInfo.mChatRoomMember.account
&& roomQueueInfo.mRoomMicInfo?.isMicMute == true && roomQueueInfo.mRoomMicInfo?.isMicMute == true
) { ) {

View File

@@ -1455,7 +1455,8 @@ public final class IMNetEaseManager {
AvRoomModel.get().updateMyMicQueue( AvRoomModel.get().updateMyMicQueue(
AvRoomDataManager.get().getMicPosition(AuthModel.get().getCurrentUid()), AvRoomDataManager.get().getMicPosition(AuthModel.get().getCurrentUid()),
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()),
UserModel.get().getCacheLoginUserInfo() UserModel.get().getCacheLoginUserInfo(),
!AudioEngineManager.get().isMute()
) )
.subscribe(); .subscribe();
} }
@@ -2146,8 +2147,10 @@ public final class IMNetEaseManager {
if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) {
//开麦 //开麦
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER); AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER);
if (!roomQueueInfo.mChatRoomMember.isNoProhibitMic()) {
AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic); AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic);
} }
}
noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount()); noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount());
} }
} else { } else {

View File

@@ -568,12 +568,15 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
*/ */
@Override @Override
public Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo) { public Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo) {
return updateMyMicQueue(micPosition, roomId, userInfo);
}
@Override
public Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo, boolean isNoProhibitMic) {
if (userInfo.getUid() != AuthModel.get().getCurrentUid()) { if (userInfo.getUid() != AuthModel.get().getCurrentUid()) {
return Single.error(new Throwable("该方法只能更新自己的麦序,不要更新别人的麦序信息。")); return Single.error(new Throwable("该方法只能更新自己的麦序,不要更新别人的麦序信息。"));
} }
return Single.create(new SingleOnSubscribe<String>() { return Single.create((SingleOnSubscribe<String>) e ->
@Override
public void subscribe(SingleEmitter<String> e) throws Exception {
updateQueueEx(micPosition, roomId, new CallBack<String>() { updateQueueEx(micPosition, roomId, new CallBack<String>() {
@Override @Override
@@ -588,12 +591,9 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
e.onError(new Throwable("更新麦序额外字段失败 code:" + code)); e.onError(new Throwable("更新麦序额外字段失败 code:" + code));
} }
}, userInfo); }, userInfo, isNoProhibitMic))
}
})
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
} }
@Override @Override
@@ -602,6 +602,10 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
} }
protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo) { protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo) {
updateQueueEx(micPosition, roomId, callBack, userInfo, false);
}
protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo, boolean isNoProhibitMic) {
JSONObject contentJsonObj = new JSONObject(); JSONObject contentJsonObj = new JSONObject();
contentJsonObj.put("uid", String.valueOf(userInfo.getUid())); contentJsonObj.put("uid", String.valueOf(userInfo.getUid()));
contentJsonObj.put("nick", userInfo.getNick()); contentJsonObj.put("nick", userInfo.getNick());
@@ -633,6 +637,8 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
contentJsonObj.put("preventKick", true); contentJsonObj.put("preventKick", true);
} }
contentJsonObj.put("isNoProhibitMic", isNoProhibitMic);
NIMChatRoomSDK.getChatRoomService() NIMChatRoomSDK.getChatRoomService()
.updateQueueEx(roomId, String.valueOf(micPosition), contentJsonObj.toJSONString(), true) .updateQueueEx(roomId, String.valueOf(micPosition), contentJsonObj.toJSONString(), true)
.setCallback(new RequestCallback<Void>() { .setCallback(new RequestCallback<Void>() {

View File

@@ -140,6 +140,8 @@ public interface IRoomBaseModel extends IModel {
*/ */
Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo); Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo);
Single<String> updateMyMicQueue(int micPosition, String roomId, UserInfo userInfo, boolean isNoProhibitMic);
void downMicroPhone(int micPosition, final CallBack<String> callBack); void downMicroPhone(int micPosition, final CallBack<String> callBack);
/** /**

View File

@@ -10,6 +10,7 @@ import com.google.gson.Gson;
import com.nnbc123.core.gift.bean.GiftType; import com.nnbc123.core.gift.bean.GiftType;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder; import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.nnbc123.core.manager.AudioEngineManager;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import com.nnbc123.core.auth.AuthModel; import com.nnbc123.core.auth.AuthModel;
import com.nnbc123.core.base.BaseModel; import com.nnbc123.core.base.BaseModel;
@@ -716,8 +717,8 @@ public class PkModel extends BaseModel implements IPkModel {
AvRoomModel.get().updateMyMicQueue( AvRoomModel.get().updateMyMicQueue(
key, key,
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()),
pkMemberInfo.getUserInfo() pkMemberInfo.getUserInfo(),
) !AudioEngineManager.get().isMute())
.subscribe(); .subscribe();
} }
} }
@@ -869,9 +870,7 @@ public class PkModel extends BaseModel implements IPkModel {
@Override @Override
public Single<String> inviteInTeam(List<RoomPKInvitedUpMicMember> roomPKInvitedUpMicMember) { public Single<String> inviteInTeam(List<RoomPKInvitedUpMicMember> roomPKInvitedUpMicMember) {
return Single.create(new SingleOnSubscribe<ChatRoomMessage>() { return Single.create((SingleOnSubscribe<ChatRoomMessage>) e -> {
@Override
public void subscribe(SingleEmitter<ChatRoomMessage> e) throws Exception {
//发送给自定义消息 //发送给自定义消息
RoomPkAttachment roomPkAttachment = new RoomPkAttachment(CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_INVITE); RoomPkAttachment roomPkAttachment = new RoomPkAttachment(CustomAttachment.CUSTOM_MESS_SUB_ROOM_PK_INVITE);
Map<String, RoomPKInvitedUpMicMember> micMemberMap = new HashMap<>(); Map<String, RoomPKInvitedUpMicMember> micMemberMap = new HashMap<>();
@@ -887,17 +886,9 @@ public class PkModel extends BaseModel implements IPkModel {
); );
e.onSuccess(inviteToTeamMsg); e.onSuccess(inviteToTeamMsg);
}
}) })
.flatMap(new Function<ChatRoomMessage, SingleSource<? extends ChatRoomMessage>>() { .flatMap(msg -> IMNetEaseManager.get().sendChatRoomMessage(msg, false))
@Override .flatMap((Function<ChatRoomMessage, SingleSource<String>>) chatRoomMessage -> {
public SingleSource<? extends ChatRoomMessage> apply(ChatRoomMessage msg) throws Exception {
return IMNetEaseManager.get().sendChatRoomMessage(msg, false);
}
})
.flatMap(new Function<ChatRoomMessage, SingleSource<String>>() {
@Override
public SingleSource<String> apply(ChatRoomMessage chatRoomMessage) throws Exception {
//添加公屏 //添加公屏
RoomPkAttachment roomPkAttachment = (RoomPkAttachment) chatRoomMessage.getAttachment(); RoomPkAttachment roomPkAttachment = (RoomPkAttachment) chatRoomMessage.getAttachment();
Map<String, RoomPKInvitedUpMicMember> inviteMap = roomPkAttachment.getRoomPKInvitedUpMicMemberMap(); Map<String, RoomPKInvitedUpMicMember> inviteMap = roomPkAttachment.getRoomPKInvitedUpMicMemberMap();
@@ -927,14 +918,13 @@ public class PkModel extends BaseModel implements IPkModel {
AvRoomModel.get().updateMyMicQueue( AvRoomModel.get().updateMyMicQueue(
self.getPosition(), self.getPosition(),
String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()), String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()),
UserModel.get().getCacheLoginUserInfo() UserModel.get().getCacheLoginUserInfo(),
!AudioEngineManager.get().isMute()
) )
.subscribe(); .subscribe();
} }
return Single.just("邀请上麦成功"); return Single.just("邀请上麦成功");
} });
})
;
} }
@Override @Override

View File

@@ -49,6 +49,11 @@ public class MicMemberInfo {
private int teamId = 0; private int teamId = 0;
private boolean isSelected = false; private boolean isSelected = false;
/**
* pk模式更新麦位信息, 默认开麦
*/
private boolean isNoProhibitMic = false;
//<editor-fold defaultstate="collapsed" desc="delombok"> //<editor-fold defaultstate="collapsed" desc="delombok">
//非麦序队列字段 end //非麦序队列字段 end
//</editor-fold> //</editor-fold>
@@ -315,4 +320,9 @@ public class MicMemberInfo {
this.isSelected = isSelected; this.isSelected = isSelected;
} }
//</editor-fold> //</editor-fold>
public boolean isNoProhibitMic() {
return isNoProhibitMic;
}
} }