完成了实时在线观看人数更新逻辑
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user