同步PIKO:修复个播PK声音状态异常
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.chwl.core.im.custom.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@@ -118,6 +120,7 @@ public class RoomPkBean implements Serializable {
|
||||
/**
|
||||
* 个播PK匹配新增字段
|
||||
*/
|
||||
@SerializedName(value = "aMicStatus", alternate = "amicStatus")
|
||||
private int aMicStatus;
|
||||
|
||||
@Data
|
||||
|
@@ -1301,6 +1301,7 @@ public final class IMNetEaseManager {
|
||||
case CUSTOM_MSG_SUB_ROOM_PK_UPDATE:
|
||||
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_UPDATE:
|
||||
AvRoomDataManager.get().roomPkLiveData.postValue(roomPkBean);
|
||||
AudioEngineManager.get().setRemoteMute(roomPkBean.getAUid(), roomPkBean.getAMicStatus() == 0);
|
||||
break;
|
||||
case CUSTOM_MSG_SUB_ROOM_PK_FINISH:
|
||||
noticeRoomEvent(msg, RoomEvent.ROOM_PK_FINISH);
|
||||
|
@@ -2,6 +2,8 @@ package com.chwl.core.manager.agora;
|
||||
|
||||
import android.os.Message;
|
||||
|
||||
import com.chwl.core.im.custom.bean.RoomPkBean;
|
||||
import com.chwl.core.manager.AudioEngineManager;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.chwl.core.R;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
@@ -13,6 +15,9 @@ import com.chwl.library.utils.SingleToastUtil;
|
||||
import io.agora.rtc2.ClientRoleOptions;
|
||||
import io.agora.rtc2.Constants;
|
||||
import io.agora.rtc2.IRtcEngineEventHandler;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.ObservableOnSubscribe;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
|
||||
|
||||
/**
|
||||
@@ -132,7 +137,26 @@ public class EngineEventHandler extends IRtcEngineEventHandler {
|
||||
super.onClientRoleChanged(oldRole, newRole, newRoleOptions);
|
||||
//角色切换 麦克风切换
|
||||
if (newRole == Constants.CLIENT_ROLE_BROADCASTER) {
|
||||
RtcEngineManager.get().setMute(RtcEngineManager.get().isMute);
|
||||
Observable.create((ObservableOnSubscribe) emitter -> {
|
||||
RtcEngineManager.get().setMute(RtcEngineManager.get().isMute);
|
||||
if (AvRoomDataManager.get().isRoomOwner() &&
|
||||
AvRoomDataManager.get().isSingleRoom() &&
|
||||
AvRoomDataManager.get().isOpenAnotherPKMode()) {
|
||||
RoomPkBean pkBean = AvRoomDataManager.get().roomPkLiveData.getValue();
|
||||
if (pkBean != null) {
|
||||
AudioEngineManager.get().connectOtherRoom(String.valueOf(pkBean.getARoomId()), pkBean.getAUid());
|
||||
}
|
||||
}
|
||||
emitter.onComplete();
|
||||
}).subscribeOn(AndroidSchedulers.mainThread()).subscribe();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChannelMediaRelayStateChanged(int state, int code) {
|
||||
super.onChannelMediaRelayStateChanged(state, code);
|
||||
if (state == Constants.RELAY_STATE_FAILURE) {
|
||||
SingleToastUtil.showToast("Join failed:" + code);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,7 +186,11 @@ public class EngineEventHandler extends IRtcEngineEventHandler {
|
||||
Logger.t(TAG).d("onRemoteAudioStats uid%d", remoteAudioStats.uid);
|
||||
long uid = (long) remoteAudioStats.uid;
|
||||
// 如果麦上没有这个人,不接收这个人的声音
|
||||
RtcEngineManager.get().setRemoteMute(uid, !AvRoomDataManager.get().checkIsOnMicByAccount(uid + ""));
|
||||
|
||||
if (!(AvRoomDataManager.get().isSingleRoom() && AvRoomDataManager.get().isOpenAnotherPKMode())) {
|
||||
Observable.create((ObservableOnSubscribe) emitter -> {
|
||||
RtcEngineManager.get().setRemoteMute(uid, !AvRoomDataManager.get().checkIsOnMicByAccount(uid + ""));
|
||||
emitter.onComplete();
|
||||
}).subscribeOn(AndroidSchedulers.mainThread()).subscribe();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user