MeetingManager

160 阅读1分钟
private volatile static MeetingManager INSTANCE;

//是否前置摄像头
private boolean isFrontCamera = true;
//房间号
private String roomId;
//会议名称
private String meetingName;
//音频/视频通话类型
private CallAVType callAVType;
//会议总人数
private int count;

private Handler handler = new Handler(Looper.getMainLooper());

//入房状态
private PlusRoomState plusRoomState;
//音视频房间回调
private Map<String, IRoomCallback> roomCallbackMap = new HashMap<>();
//本地只维护进房用户
private Map<String, MeetingUserInfo> userInfoMap = new HashMap<>();
//用户数据更新
private Map<String, IUserUpdateCallback> userUpdateCallbackMap = new HashMap<>();

//悬浮窗是否正在显示
private boolean floatWindowIsShow;
//视频会议是否正在后台进行
private boolean isVideoConferenceBackground;
//语音会议是否正在后台进行
private boolean isAudioConferenceBackground;

```
/**
 * 远端用户流更新
 *
 * @param userId
 * @param isAdd
 */
public void onStreamUpdate(String userId, boolean isAdd) {
    MeetingManager.getInstance().getUser(userId).setAvailableStream(isAdd);
    //通知所有观察者
    Set<Map.Entry<String, IUserUpdateCallback>> entrySet = userUpdateCallbackMap.entrySet();
    for (Map.Entry<String, IUserUpdateCallback> entry : entrySet) {
        IUserUpdateCallback userUpdateCallback = entry.getValue();
        if (null != userUpdateCallback) {
            handler.post(() -> {
                userUpdateCallback.onStreamUpdate(userId, isAdd);
            });
        }
    }
}


```
/**
 * 远端麦克风设备状态通知
 * 远端麦克风设备状态发生变更时,例如开关麦克风等,通过监听此回调,能够获取远端麦克风相关的事件,可以用于提示用户可能导致音频异常的情况。
 *
 * @param stream 拉流的流信息
 * @param state  远端麦克风状态
 */
@Override
public void onRemoteMicStateUpdate(PaasPlusRoomStream stream, PaasPlusRoomRemoteDeviceState state) {
    LogUtil.error("音视频", "onRemoteMicStateUpdate");
    if (null == stream) {
        return;
    }
    //通知所有观察者
    Set<Map.Entry<String, IRoomCallback>> entrySet = roomCallbackMap.entrySet();
    for (Map.Entry<String, IRoomCallback> entry : entrySet) {
        IRoomCallback roomCallback = entry.getValue();
        if (null != roomCallback) {
            handler.post(() -> roomCallback.onRemoteMicStateUpdate(stream, state));
        }
    }
}
```
```