fix: 尝试修复 同个人上多个麦位的异常问题
This commit is contained in:
@@ -648,14 +648,28 @@ public final class AvRoomDataManager {
|
||||
int size = mMicQueueMemberMap.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.valueAt(i);
|
||||
if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember != null
|
||||
&& Objects.equals(roomQueueInfo.mChatRoomMember.getAccount(), myUid)) {
|
||||
if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember != null && Objects.equals(roomQueueInfo.mChatRoomMember.getAccount(), myUid)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 排查有无同个人在 多个麦位上
|
||||
*/
|
||||
public int isOnMicNum(String myUid) {
|
||||
int num = 0;
|
||||
int size = mMicQueueMemberMap.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.valueAt(i);
|
||||
if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember != null && Objects.equals(roomQueueInfo.mChatRoomMember.getAccount(), myUid)) {
|
||||
num++;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断自己是否在麦上
|
||||
*
|
||||
@@ -678,8 +692,7 @@ public final class AvRoomDataManager {
|
||||
int size = mMicQueueMemberMap.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.valueAt(i);
|
||||
if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember != null
|
||||
&& Objects.equals(roomQueueInfo.mChatRoomMember.getAccount(), String.valueOf(currentUid))) {
|
||||
if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember != null && Objects.equals(roomQueueInfo.mChatRoomMember.getAccount(), String.valueOf(currentUid))) {
|
||||
return mMicQueueMemberMap.keyAt(i);
|
||||
}
|
||||
}
|
||||
|
@@ -406,19 +406,28 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
|
||||
}
|
||||
};
|
||||
|
||||
//tofix 在这里遍历一遍, 有可能在两个麦位上的情况,要下麦两次
|
||||
//先看下这个用户是否在麦上
|
||||
if (AvRoomDataManager.get().isOnMic(userInfo.getUid())) {int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid());
|
||||
//下麦
|
||||
downMicroPhone(position, new CallBack<String>() {
|
||||
@Override
|
||||
public void onSuccess(String data) {
|
||||
updateQueueEx(micPosition, roomId, callBackTmp, userInfo);
|
||||
}
|
||||
|
||||
public void onFail(int code, String error) {
|
||||
callBackTmp.onFail(-1, ResUtil.getString(R.string.room_model_roombasemodel_03));
|
||||
}
|
||||
});
|
||||
int onMicNum = AvRoomDataManager.get().isOnMicNum(String.valueOf(userInfo.getUid()));
|
||||
OtherExtKt.doLog("上麦 上麦前的检查下麦 , 需要下麦的计数是 = "+onMicNum);
|
||||
MyUtil.INSTANCE.setDownMicNum(0);
|
||||
if (onMicNum > 0) {
|
||||
for (int i = 0; i < onMicNum; i++) {
|
||||
int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid());
|
||||
//下麦
|
||||
downMicroPhone(position, new CallBack<String>() {
|
||||
@Override
|
||||
public void onSuccess(String data) {
|
||||
MyUtil.INSTANCE.setDownMicNum(MyUtil.INSTANCE.getDownMicNum()+1);
|
||||
if (MyUtil.INSTANCE.getDownMicNum() == onMicNum) {
|
||||
updateQueueEx(micPosition, roomId, callBackTmp, userInfo);
|
||||
}
|
||||
}
|
||||
public void onFail(int code, String error) {
|
||||
callBackTmp.onFail(-1, ResUtil.getString(R.string.room_model_roombasemodel_03));
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
updateQueueEx(micPosition, roomId, callBackTmp, userInfo);
|
||||
}
|
||||
@@ -432,7 +441,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
|
||||
.subscribe();
|
||||
}
|
||||
|
||||
/**
|
||||
/** //tofix 双麦位问题 , chatRoomQueueChangeNotice 云信上麦回调前走了这里,导致出现双麦位
|
||||
* 处理网易云信坑位信息
|
||||
* 这里只有在这个坑位原来没人但是云信队列信息有人,才更新这个坑位,防止挤麦
|
||||
*/
|
||||
@@ -718,6 +727,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
|
||||
.setCallback(new RequestCallback<List<Entry<String, String>>>() {
|
||||
@Override
|
||||
public void onSuccess(List<Entry<String, String>> param) {
|
||||
|
||||
e.onNext(param);
|
||||
e.onComplete();
|
||||
}
|
||||
|
@@ -7,6 +7,7 @@ object MyUtil {
|
||||
var CLICK_TIME = 0L
|
||||
var CLICK_DIFF_TIME = 2000L
|
||||
var upMicIng = false
|
||||
var downMicNum = 0 //需要下麦的 计数
|
||||
|
||||
|
||||
fun initAppWidth(view: View?) {
|
||||
|
Reference in New Issue
Block a user