完成了实时在线观看人数更新逻辑

This commit is contained in:
董宏宇
2021-03-11 15:38:32 +08:00
parent 4a29240dbd
commit 1b58c5bff6

View File

@@ -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();