diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 8116b81..1563bc1 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -26,7 +26,6 @@
-
diff --git a/app/src/main/res/layout/activity_live_play_and_push.xml b/app/src/main/res/layout/activity_live_play_and_push.xml
index 99cc68f..e4be5d2 100644
--- a/app/src/main/res/layout/activity_live_play_and_push.xml
+++ b/app/src/main/res/layout/activity_live_play_and_push.xml
@@ -116,6 +116,7 @@
android:layout_height="wrap_content"
android:textOff="登录第二个房间"
android:textOn="退出第二个房间"
+ android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@+id/etLookRoomId" />
diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveProgressListener.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveProgressListener.java
index 034b70e..c3cf302 100644
--- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveProgressListener.java
+++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveProgressListener.java
@@ -17,23 +17,6 @@ public interface ILiveProgressListener {
default void onEngineStop() {
}
- /**
- * 正在连接
- */
- void onConnecting();
-
- /**
- * 连接成功
- *
- * @param roomId 房间ID
- */
- void onConnected(String roomId);
-
- /**
- * 断开连接
- */
- void onDisConnect();
-
/**
* 调试错误信息回调
*
diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveRoomStatusListener.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveRoomStatusListener.java
new file mode 100644
index 0000000..376d154
--- /dev/null
+++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/listener/ILiveRoomStatusListener.java
@@ -0,0 +1,41 @@
+package com.mogo.cloud.live.listener;
+
+/**
+ * 直播房间的状态回调
+ */
+public interface ILiveRoomStatusListener {
+
+ /**
+ * 自己的房间连接中回调
+ */
+ void onCurrentRoomConnecting();
+
+ /**
+ * 自己的房间连接成功回调
+ */
+ void onCurrentRoomConnected();
+
+ /**
+ * 自己的房间断开连接回调
+ */
+ void onCurrentRoomDisconnected();
+
+
+ ////////////////////////////////////////
+
+ /**
+ * 与他人房间连接中回调
+ */
+ void onMultiRoomConnecting();
+
+ /**
+ * 与他人房间连接成功回调
+ */
+ void onMultiRoomConnected();
+
+ /**
+ * 与他人房间断开连接回调
+ */
+ void onMultiRoomDisconnected();
+
+}
diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java
index 762f236..e534593 100644
--- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java
+++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java
@@ -145,6 +145,8 @@ public class LiveStreamManagerImpl implements ILiveStreamManager {
@Override
public void release() {
try {
+ mHandler.removeCallbacks(mCamStatusRun);
+ mHandler = null;
mSocketMsgUtils.release();
sCam1LiveStatus = 0;
sCam2LiveStatus = 0;
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 959e6d5..4b95145 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
@@ -1,12 +1,12 @@
package com.mogo.cloud.live.manager;
import android.app.Application;
-import android.os.Environment;
import android.text.TextUtils;
import android.view.SurfaceView;
import com.mogo.cloud.live.listener.ILiveProgressListener;
import com.mogo.cloud.live.listener.ILiveRoomPersonListener;
+import com.mogo.cloud.live.listener.ILiveRoomStatusListener;
import com.mogo.cloud.live.listener.ILiveStatusListener;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.cloud.utils.logger.Logger;
@@ -35,7 +35,6 @@ import im.zego.zegoexpress.constants.ZegoViewMode;
import im.zego.zegoexpress.entity.ZegoCanvas;
import im.zego.zegoexpress.entity.ZegoCustomVideoCaptureConfig;
import im.zego.zegoexpress.entity.ZegoEngineConfig;
-import im.zego.zegoexpress.entity.ZegoLogConfig;
import im.zego.zegoexpress.entity.ZegoRoomConfig;
import im.zego.zegoexpress.entity.ZegoRoomExtraInfo;
import im.zego.zegoexpress.entity.ZegoUser;
@@ -64,7 +63,6 @@ public class MoGoLiveManager {
/**
* 存储即构的日志路径
*/
- private static final String ZEGO_LOG_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ZegoLog";
private Application mApplication;
/**
* 直播推送配置对象
@@ -95,9 +93,13 @@ public class MoGoLiveManager {
*/
private ILiveProgressListener mProgressListener;
/**
- * 直播房间状态
+ * 直播房间连接状态
*/
- private ILiveRoomPersonListener mRoomStatusListener;
+ private ILiveRoomStatusListener mRoomStatusListener;
+ /**
+ * 直播房间人员状态
+ */
+ private ILiveRoomPersonListener mRoomPersonListener;
/**
* 直播状态回调
*/
@@ -188,12 +190,6 @@ public class MoGoLiveManager {
mLivePushConfig = livePushConfig;
// 通过 advancedConfig 设置 uuid 过滤字段,设置之后 SDK 只会抛出前 12 个字节为开发者所设置 uuid 的 SEI
ZegoEngineConfig zegoEngineConfig = new ZegoEngineConfig();
- // 设置即构的直播日志配置
- ZegoLogConfig zegoLogConfig = new ZegoLogConfig();
- // 存储日志路径
- zegoLogConfig.logPath = ZEGO_LOG_PATH;
- // 配置日志到引擎中
- zegoEngineConfig.logConfig = zegoLogConfig;
// 设置配置到引擎中
ZegoExpressEngine.setEngineConfig(zegoEngineConfig);
@@ -238,19 +234,35 @@ public class MoGoLiveManager {
@Override
public void onRoomStateUpdate(String roomID, ZegoRoomState state, int errorCode, JSONObject extendedData) {
super.onRoomStateUpdate(roomID, state, errorCode, extendedData);
- // 这里只处理当前设备登录的房间中的用户总数
+ // 这里回调的是当前用户的房间状态
if (currentRoomId.equals(roomID)) {
Logger.i(TAG, "onRoomStateUpdate roomID : " + roomID +
" state:" + state +
" errorCode:" + errorCode);
//房间状态更新
- if (mProgressListener != null) {
+ if (mRoomStatusListener != null) {
if (state == ZegoRoomState.CONNECTING) {
- mProgressListener.onConnecting();
+ mRoomStatusListener.onCurrentRoomConnecting();
} else if (state == ZegoRoomState.CONNECTED) {
- mProgressListener.onConnected(roomID);
+ mRoomStatusListener.onCurrentRoomConnected();
} else {
- mProgressListener.onDisConnect();
+ mRoomStatusListener.onCurrentRoomDisconnected();
+ }
+ }
+ }
+ // 这里回调的是登录的他人房间的状态
+ if (multiRoomId.equals(roomID)) {
+ Logger.i(TAG, "onRoomStateUpdate multiRoomId : " + roomID +
+ " state:" + state +
+ " errorCode:" + errorCode);
+ //房间状态更新
+ if (mRoomStatusListener != null) {
+ if (state == ZegoRoomState.CONNECTING) {
+ mRoomStatusListener.onMultiRoomConnecting();
+ } else if (state == ZegoRoomState.CONNECTED) {
+ mRoomStatusListener.onMultiRoomConnected();
+ } else {
+ mRoomStatusListener.onMultiRoomDisconnected();
}
}
}
@@ -265,8 +277,8 @@ public class MoGoLiveManager {
onlineNumber = count;
Logger.i(TAG, "onRoomOnlineUserCountUpdate roomID : " + roomID +
" , online user number : " + onlineNumber);
- if (mRoomStatusListener != null) {
- mRoomStatusListener.onRoomOnlineUserCountUpdate(count);
+ if (mRoomPersonListener != null) {
+ mRoomPersonListener.onRoomOnlineUserCountUpdate(count);
}
}
}
@@ -280,8 +292,8 @@ public class MoGoLiveManager {
Logger.i(TAG, "onRoomUserUpdate roomId : " + roomID +
" , updateType : " + updateType.name() +
" , online user number : " + onlineNumber);
- if (mRoomStatusListener != null) {
- mRoomStatusListener.onRoomUserUpdate(updateType, userList);
+ if (mRoomPersonListener != null) {
+ mRoomPersonListener.onRoomUserUpdate(updateType, userList);
}
}
}
@@ -339,13 +351,22 @@ public class MoGoLiveManager {
this.mProgressListener = liveProgressListener;
}
+ /**
+ * 设置直播间连接状态监听
+ *
+ * @param roomStatusListener 监听回调用
+ */
+ public void setLiveRoomPersonListener(ILiveRoomStatusListener roomStatusListener) {
+ this.mRoomStatusListener = roomStatusListener;
+ }
+
/**
* 设置直播间的人员监听
*
* @param roomPersonListener 监听回调用
*/
public void setLiveRoomPersonListener(ILiveRoomPersonListener roomPersonListener) {
- this.mRoomStatusListener = roomPersonListener;
+ this.mRoomPersonListener = roomPersonListener;
}
/**
@@ -357,15 +378,6 @@ public class MoGoLiveManager {
this.mLiveStatusListener = mLiveStatusListener;
}
- /**
- * 销毁即构引擎
- */
- private void destroyEngine() {
- ZegoExpressEngine.destroyEngine(() -> {
- Logger.i(TAG, "销毁ZeGo引擎");
- });
- }
-
/**
* 进入房间
*
@@ -479,11 +491,13 @@ public class MoGoLiveManager {
* 退出房间
*/
public void logoutRoom() {
+ Logger.i(TAG, "logoutRoom: " + currentRoomId);
if (mExpressEngine == null) {
return;
}
if (!TextUtils.isEmpty(currentRoomId)) {
mExpressEngine.logoutRoom(currentRoomId);
+ currentRoomId = "";
}
if (customVideoCaptureConfig == null) {
// 创建自定义视频采集对象
@@ -499,11 +513,13 @@ public class MoGoLiveManager {
* 退出多房间
*/
public void logoutMultiRoom() {
+ Logger.i(TAG, "logoutMultiRoom: " + multiRoomId);
if (mExpressEngine == null) {
return;
}
if (!TextUtils.isEmpty(multiRoomId)) {
mExpressEngine.logoutRoom(multiRoomId);
+ multiRoomId = "";
}
}
@@ -511,7 +527,7 @@ public class MoGoLiveManager {
* 开始推送
*/
public void startPush() {
- Logger.d(TAG, "startPush currentStreamId: " + currentStreamId);
+ Logger.i(TAG, "startPush currentStreamId: " + currentStreamId);
mExpressEngine.startPublishingStream(currentStreamId);
}
@@ -568,7 +584,6 @@ public class MoGoLiveManager {
*/
public void onDestroyPublish() {
stopPublish();
- destroyEngine();
}
/**
@@ -616,7 +631,7 @@ public class MoGoLiveManager {
* 停止观看直播
*/
public void onDestroyLive() {
- destroyEngine();
+
}
}
diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java
index 453c659..df34be9 100644
--- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java
+++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java
@@ -47,6 +47,13 @@ public class RequestLiveManager {
return requestLiveManager;
}
+ /**
+ * 请求服务器查看指定车机开启或关闭直播
+ *
+ * @param type
+ * @param liveSn
+ * @param requestLiveListener
+ */
public void requestVehicleHeadLive(String type, String liveSn, IRequestLiveListener requestLiveListener) {
Gson gson = new Gson();
LivePush livePush = new LivePush(liveSn, type, FRONT_CAMERA);
diff --git a/gradle.properties b/gradle.properties
index 40d186c..aa77d19 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -30,20 +30,20 @@ PASSWORD=xintai2018
RELEASE=false
# AI CLOUD 云平台
# 工具类
-MOGO_UTILS_VERSION=1.0.51
+MOGO_UTILS_VERSION=1.0.54
# 网络请求
-MOGO_NETWORK_VERSION=1.0.51
+MOGO_NETWORK_VERSION=1.0.54
# 网络DNS
-MOGO_HTTPDNS_VERSION=1.0.51
+MOGO_HTTPDNS_VERSION=1.0.54
# 鉴权
-MOGO_PASSPORT_VERSION=1.0.51
+MOGO_PASSPORT_VERSION=1.0.54
# 常链接
-MOGO_SOCKET_VERSION=1.0.51
+MOGO_SOCKET_VERSION=1.0.54
# 数据采集
-MOGO_REALTIME_VERSION=1.0.53
+MOGO_REALTIME_VERSION=1.0.54
# 探路,道路事件发布,获取
-MOGO_TANLU_VERSION=1.0.51
+MOGO_TANLU_VERSION=1.0.54
# 直播推流
-MOGO_LIVE_VERSION=1.0.51
+MOGO_LIVE_VERSION=1.0.54
# 直播拉流
-MOGO_TRAFFICLIVE_VERSION=1.0.51
+MOGO_TRAFFICLIVE_VERSION=1.0.54
diff --git a/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java b/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java
index 909a58c..95d17c2 100644
--- a/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java
+++ b/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java
@@ -6,6 +6,7 @@ import android.text.TextUtils;
import android.view.SurfaceView;
import com.mogo.cloud.live.listener.ILiveProgressListener;
+import com.mogo.cloud.live.listener.ILiveRoomStatusListener;
import com.mogo.cloud.live.listener.IRequestLiveListener;
import com.mogo.cloud.live.manager.MoGoLiveManager;
import com.mogo.cloud.live.manager.MoGoLivePushConfig;
@@ -18,11 +19,11 @@ import static com.mogo.cloud.live.constant.LiveConstant.LIVE_TYPE_CLOSE;
import static com.mogo.cloud.live.constant.LiveConstant.LIVE_TYPE_OPEN;
import static com.mogo.cloud.trafficlive.constant.TrafficLiveConstant.TAG;
-public class TrafficLiveManager implements ILiveProgressListener {
+public class TrafficLiveManager implements ILiveProgressListener, ILiveRoomStatusListener {
private static volatile TrafficLiveManager mInstance;
private final RequestLiveManager requestLiveManager;
- private ITrafficLiveCallBack callBack;
+ private ITrafficLiveCallBack trafficLiveCallBack;
private SurfaceView surfaceView;
private String mStreamId;
private boolean isLoginSuccess = false;
@@ -57,7 +58,7 @@ public class TrafficLiveManager implements ILiveProgressListener {
throw new Exception("liveSn can not be null");
}
- this.callBack = trafficLiveCallBack;
+ this.trafficLiveCallBack = trafficLiveCallBack;
this.surfaceView = surfaceView;
Logger.i(TAG, "申请拉流 systemClock :" + SystemClock.elapsedRealtime() + " SystemTime : " + System.currentTimeMillis());
requestLiveManager.requestVehicleHeadLive(LIVE_TYPE_OPEN, liveSn, new IRequestLiveListener() {
@@ -77,15 +78,15 @@ public class TrafficLiveManager implements ILiveProgressListener {
// 直接 查看对应SN的直播
MoGoLiveManager.getInstance().startLive(surfaceView);
- if (callBack != null) {
- callBack.onLive();
+ if (TrafficLiveManager.this.trafficLiveCallBack != null) {
+ TrafficLiveManager.this.trafficLiveCallBack.onLive();
}
}
@Override
public void onError(Throwable e) {
- if (callBack != null) {
- callBack.onError(e.getMessage());
+ if (TrafficLiveManager.this.trafficLiveCallBack != null) {
+ TrafficLiveManager.this.trafficLiveCallBack.onError(e.getMessage());
}
}
});
@@ -103,14 +104,14 @@ public class TrafficLiveManager implements ILiveProgressListener {
@Override
public void onError(Throwable e) {
- if (callBack != null) {
- callBack.onError(e.getMessage());
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onError(e.getMessage());
}
}
});
MoGoLiveManager.getInstance().stopLive();
surfaceView = null;
- callBack = null;
+ trafficLiveCallBack = null;
isLoginSuccess = false;
mStreamId = null;
}
@@ -121,46 +122,61 @@ public class TrafficLiveManager implements ILiveProgressListener {
@Override
public void onEngineStart() {
- if (callBack != null) {
- callBack.onLiveStart();
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onLiveStart();
}
}
@Override
public void onEngineStop() {
- if (callBack != null) {
- callBack.onLiveStop();
- }
- }
-
- @Override
- public void onConnecting() {
- if (callBack != null) {
- callBack.onLiveConnecting();
- }
- }
-
- @Override
- public void onConnected(String roomId) {
- isLoginSuccess = true;
- if (callBack != null) {
- callBack.onLiveConnected();
- }
- }
-
- @Override
- public void onDisConnect() {
- isLoginSuccess = false;
- if (callBack != null) {
- callBack.onDisConnect();
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onLiveStop();
}
}
@Override
public void onDebugError(int errorCode, String funcName, String errorInfo) {
Logger.e(TAG, "onDebugError errorCode : " + errorCode + " funcName : " + funcName + " errorInfo : " + errorInfo);
- if (callBack != null) {
- callBack.onError(errorInfo);
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onError(errorInfo);
+ }
+ }
+
+ @Override
+ public void onCurrentRoomConnecting() {
+
+ }
+
+ @Override
+ public void onCurrentRoomConnected() {
+
+ }
+
+ @Override
+ public void onCurrentRoomDisconnected() {
+
+ }
+
+ @Override
+ public void onMultiRoomConnecting() {
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onLiveConnecting();
+ }
+ }
+
+ @Override
+ public void onMultiRoomConnected() {
+ isLoginSuccess = true;
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onLiveConnected();
+ }
+ }
+
+ @Override
+ public void onMultiRoomDisconnected() {
+ isLoginSuccess = false;
+ if (trafficLiveCallBack != null) {
+ trafficLiveCallBack.onDisConnect();
}
}
}