diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/MoGoLiveManager.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/MoGoLiveManager.java index 9ec50e0..ea70e7d 100644 --- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/MoGoLiveManager.java +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/MoGoLiveManager.java @@ -258,9 +258,11 @@ public class MoGoLiveManager { super.onRoomOnlineUserCountUpdate(roomID, count); // 这里只处理当前设备登录的房间中的用户总数 if (mLiveStatusModel.getCurrentRoomId().equals(roomID)) { - Logger.i(TAG, "房间内当前在线用户数量回调 onRoomOnlineUserCountUpdate roomID : " + roomID + - " , online user number : " + count); + // 更新真实的在线人数 mLiveStatusModel.setOnlineNumber(count); + + Logger.i(TAG, "房间内当前在线用户数量回调 onRoomOnlineUserCountUpdate roomID : " + roomID + + " , online user number : " + mLiveStatusModel.getOnlineNumber()); if (mRoomPersonListener != null) { mRoomPersonListener.onRoomOnlineUserCountUpdate(count); } @@ -273,6 +275,14 @@ public class MoGoLiveManager { super.onRoomUserUpdate(roomID, updateType, userList); // 这里只处理当前设备登录的房间中的用户总数 if (mLiveStatusModel.getCurrentRoomId().equals(roomID)) { + if (mLiveStatusModel.getOnlineNumber() > 1) { + if (updateType == ZegoUpdateType.ADD) { + mLiveStatusModel.setOnlineNumber(mLiveStatusModel.getOnlineNumber() + userList.size()); + } else if (updateType == ZegoUpdateType.DELETE) { + mLiveStatusModel.setOnlineNumber(mLiveStatusModel.getOnlineNumber() - userList.size()); + } + } + Logger.i(TAG, "房间内其他用户增加或减少的通知回调 onRoomUserUpdate roomId : " + roomID + " , updateType : " + updateType.name() + " , online user number : " + mLiveStatusModel.getOnlineNumber()); @@ -471,12 +481,12 @@ public class MoGoLiveManager { public synchronized void loginRoom() { // 当前用户ID String userId = mLivePushConfig.getDevicesId(); - Logger.i(TAG, - "进入自己房间 loginRoom userId : " + userId - + " currentRoomId:" + mLiveStatusModel.getCurrentRoomId() - + " currentStreamId:" + mLiveStatusModel.getCurrentStreamId()); mLiveStatusModel.setCurrentRoomId(ROOM_ID_PREFIX + mLivePushConfig.getDevicesId()); mLiveStatusModel.setCurrentStreamId(STREAM_ID_PREFIX + mLivePushConfig.getDevicesId()); + Logger.i(TAG, + "尝试进入自己房间 loginRoom userId : " + userId + + " currentRoomId:" + mLiveStatusModel.getCurrentRoomId() + + " currentStreamId:" + mLiveStatusModel.getCurrentStreamId()); if (!mLiveStatusModel.isLoginCurrentRoom()) { ZegoUser zegoUser = new ZegoUser(userId, NAME_PREFIX + userId); mExpressEngine.loginRoom(mLiveStatusModel.getCurrentRoomId(), zegoUser, zeGoRoomConfig); @@ -487,20 +497,19 @@ public class MoGoLiveManager { * 退出自己房间 */ public synchronized void logoutCurrentRoom() { - Logger.i(TAG, "退出自己房间 logoutRoom : " + mLiveStatusModel.getCurrentRoomId()); - if (mLiveStatusModel.isLoginCurrentRoom()) { - if (mExpressEngine == null) { + Logger.i(TAG, "尝试退出自己房间 logoutRoom : " + mLiveStatusModel.getCurrentRoomId()); + if (mExpressEngine != null) { + if (!mLiveStatusModel.isLoginCurrentRoom()) { + Logger.w(TAG, "还未登录自己房间"); return; } - if (!TextUtils.isEmpty(mLiveStatusModel.getCurrentRoomId())) { - mExpressEngine.logoutRoom(mLiveStatusModel.getCurrentRoomId()); - } - if (customVideoCaptureConfig == null) { - // 创建自定义视频采集对象 - customVideoCaptureConfig = new ZegoCustomVideoCaptureConfig(); - // 设置自定义视频采集视频帧数据类型 - customVideoCaptureConfig.bufferType = ZegoVideoBufferType.RAW_DATA; + if (mLiveStatusModel.isPlaying()) { + Logger.w(TAG, "处于播放中,不可退出房间"); + return; } + mExpressEngine.logoutRoom(mLiveStatusModel.getCurrentRoomId()); + } else { + Logger.w(TAG, "ZeGo 引擎未初始化"); } } @@ -516,7 +525,7 @@ public class MoGoLiveManager { mLiveStatusModel.setMultiRoomId(ROOM_ID_PREFIX + otherRoomId); mLiveStatusModel.setMultiStreamId(STREAM_ID_PREFIX + otherRoomId); Logger.i(TAG, - "进入多房间 loginMultiRoom multiRoomId : " + mLiveStatusModel.getMultiRoomId() + "尝试进入多房间 loginMultiRoom multiRoomId : " + mLiveStatusModel.getMultiRoomId() + " currentStreamId : " + mLiveStatusModel.getMultiStreamId()); if (!mLiveStatusModel.isLoginMultiRoom()) { mExpressEngine.loginMultiRoom(mLiveStatusModel.getMultiRoomId(), zeGoRoomConfig); @@ -527,14 +536,15 @@ public class MoGoLiveManager { * 退出多房间 */ public synchronized void logoutMultiRoom() { - Logger.i(TAG, "退出多房间 logoutMultiRoom multiRoomId : " + mLiveStatusModel.getMultiRoomId()); - if (mLiveStatusModel.isLoginMultiRoom()) { - if (mExpressEngine == null) { - return; - } - if (!TextUtils.isEmpty(mLiveStatusModel.getMultiRoomId())) { + Logger.i(TAG, "尝试退出多房间 logoutMultiRoom multiRoomId : " + mLiveStatusModel.getMultiRoomId()); + if (mExpressEngine != null) { + if (mLiveStatusModel.isLoginMultiRoom()) { mExpressEngine.logoutRoom(mLiveStatusModel.getMultiRoomId()); + } else { + Logger.w(TAG, "还未登录多房间"); } + } else { + Logger.w(TAG, "ZeGo 引擎未初始化"); } } @@ -582,8 +592,8 @@ public class MoGoLiveManager { * * @param surfaceView 渲染直播的视图 */ - public String startLive(SurfaceView surfaceView) { - Logger.i(TAG, "开始播放直播 startLive multiStreamId : " + mLiveStatusModel.getMultiStreamId()); + public void startLive(SurfaceView surfaceView) { + Logger.i(TAG, "尝试开始播放直播 startLive multiStreamId : " + mLiveStatusModel.getMultiStreamId()); if (!TextUtils.isEmpty(mLiveStatusModel.getMultiStreamId()) && mLiveStatusModel.getMultiStreamId().startsWith(STREAM_ID_PREFIX)) { ZegoCanvas zegoCanvas = new ZegoCanvas(surfaceView); @@ -592,20 +602,19 @@ public class MoGoLiveManager { } else { Logger.e(TAG, "直播ID有误,请重试"); } - return mLiveStatusModel.getMultiStreamId(); } /** * 停止播放直播 */ public void stopLive() { - Logger.i(TAG, "停止播放直播 stopLive multiStreamId : " + mLiveStatusModel.getMultiStreamId()); - if (!TextUtils.isEmpty(mLiveStatusModel.getMultiStreamId()) && mExpressEngine != null) { - mExpressEngine.stopPlayingStream(mLiveStatusModel.getMultiStreamId()); - } + Logger.i(TAG, "尝试停止播放直播 stopLive multiStreamId : " + mLiveStatusModel.getMultiStreamId()); if (mExpressEngine == null) { + Logger.w(TAG, "ZeGo 引擎未初始化"); return; } + // 停止播放直播流 + mExpressEngine.stopPlayingStream(mLiveStatusModel.getMultiStreamId()); mExpressEngine.stopPreview(); // 退出正在查看的多房间 logoutMultiRoom();