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);
});
}
}
}
```
@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));
}
}
}
```
```