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 1ed1875..86e003c 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 @@ -6,6 +6,7 @@ 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; @@ -92,9 +93,13 @@ public class MoGoLiveManager { */ private ILiveProgressListener mProgressListener; /** - * 直播房间状态 + * 直播房间连接状态 */ - private ILiveRoomPersonListener mRoomStatusListener; + private ILiveRoomStatusListener mRoomStatusListener; + /** + * 直播房间人员状态 + */ + private ILiveRoomPersonListener mRoomPersonListener; /** * 直播状态回调 */ @@ -229,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(); } } } @@ -256,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); } } } @@ -271,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); } } } @@ -330,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; } /** @@ -470,6 +500,7 @@ public class MoGoLiveManager { * 退出房间 */ public void logoutRoom() { + Logger.i(TAG, "logoutRoom: " + currentRoomId); if (mExpressEngine == null) { return; } @@ -490,6 +521,7 @@ public class MoGoLiveManager { * 退出多房间 */ public void logoutMultiRoom() { + Logger.i(TAG, "logoutMultiRoom: " + multiRoomId); if (mExpressEngine == null) { return; } @@ -502,7 +534,7 @@ public class MoGoLiveManager { * 开始推送 */ public void startPush() { - Logger.d(TAG, "startPush currentStreamId: " + currentStreamId); + Logger.i(TAG, "startPush currentStreamId: " + currentStreamId); mExpressEngine.startPublishingStream(currentStreamId); } 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 e55b411..40d186c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,7 +27,7 @@ SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/ USERNAME=xintai PASSWORD=xintai2018 # 编译模式: false - 依赖本地版本, true - 依赖 maven 版本 -RELEASE=true +RELEASE=false # AI CLOUD 云平台 # 工具类 MOGO_UTILS_VERSION=1.0.51 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(); } } }